Skip to content

HD-L/GeoGallery

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GeoGallery - 相机文件整理系统

一个用于自动整理相机拍摄文件的Python Web应用,支持按文件元信息创建自定义文件夹层级,并提供时间轴、相册、地图视图和文件管理功能。

功能特性

  • 时间轴视图:按拍摄时间展示媒体文件,支持时间范围筛选
  • 相册文件夹:树形结构展示文件夹层级,支持文件浏览
  • 地图视图:在全球地图上展示带有地理信息的媒体文件
  • 任务管理:支持文件夹扫描和连拍检测等自动化任务
  • 自定义文件夹规则:根据GPS地点、时间、文件类型等创建自定义文件夹结构

技术栈

  • 后端:Flask + SQLite
  • 前端:Vue.js + Element Plus
  • 文件处理:ExifRead, Pillow
  • 地图:Leaflet/OpenStreetMap

系统架构

前端 (Vue.js)
    ↓ (REST API)
后端 (Flask)
    ↓
业务逻辑层 (文件扫描、元数据提取、文件整理)
    ↓
数据访问层 (SQLite)
    ↓
文件系统 (本地存储)

安装与部署

环境要求

  • Python 3.8+
  • Node.js 14+
  • 足够的存储空间

安装步骤

  1. 克隆项目代码
git clone [项目仓库地址]
cd GeoGallery
  1. 安装Python依赖
pip install -r requirements.txt
  1. 安装前端依赖
npm install
  1. 构建前端项目
npm run build
  1. 启动后端服务
python app.py
  1. 访问应用

在浏览器中访问:http://localhost:5001

主要功能说明

1. 时间轴视图

  • 按拍摄时间倒序展示所有媒体文件
  • 支持按年/月/日筛选时间范围
  • 支持按文件类型筛选(图片/视频)
  • 点击缩略图可查看大图或播放视频

2. 相册文件夹视图

  • 树形结构展示文件夹层级
  • 显示每个文件夹中的文件数量
  • 支持文件夹预览图
  • 面包屑导航便于返回上级文件夹

3. 地图视图

  • 使用Leaflet地图显示媒体文件的地理位置
  • 聚类标记显示同一位置的多个文件
  • 支持地图缩放和位置搜索
  • 点击标记可预览对应媒体文件

4. 任务管理

4.1 文件夹扫描任务

  • 配置源路径和目标路径
  • 自定义文件夹层级规则
  • 选择需要处理的文件类型
  • 实时显示任务进度

4.2 连拍检测任务

  • 自动识别连拍图片组
  • 根据文件名模式和时间间隔进行分组
  • 支持手动调整分组结果

5. 文件夹规则配置

支持以下规则类型的组合:

  • GPS地点名称:从文件元数据提取地理位置信息
  • 时间维度:年、月、日、时
  • 文件类型:根据文件扩展名分类
  • 自定义文本:添加固定的文件夹名称

数据库设计

配置表 (config)

字段 类型 描述
id INTEGER 主键
key TEXT 配置键名
value TEXT 配置值
description TEXT 配置描述

媒体文件表 (media_files)

字段 类型 描述
id INTEGER 主键
filename TEXT 文件名
filepath TEXT 文件路径
filesize INTEGER 文件大小(字节)
filetype TEXT 文件类型
create_time DATETIME 创建时间
modify_time DATETIME 修改时间
capture_time DATETIME 拍摄时间
latitude REAL 纬度
longitude REAL 经度
location_name TEXT 位置名称
album_id INTEGER 所属相册ID
is_burst BOOLEAN 是否连拍
burst_group_id INTEGER 连拍组ID

任务表 (tasks)

字段 类型 描述
id INTEGER 主键
task_type TEXT 任务类型(scan/burst)
status TEXT 任务状态
progress INTEGER 进度(0-100)
config_json TEXT 任务配置JSON
source_path TEXT 源路径
target_path TEXT 目标路径
created_time DATETIME 创建时间
completed_time DATETIME 完成时间

相册表 (albums)

字段 类型 描述
id INTEGER 主键
name TEXT 相册名称
path TEXT 相册路径
parent_id INTEGER 父相册ID
level INTEGER 层级

API接口说明

媒体文件相关

  • GET /api/media/files?start_date=&end_date= - 获取媒体文件列表
  • GET /api/media/albums - 获取相册列表
  • GET /api/media/albums/:id/files - 获取指定相册文件
  • GET /api/media/locations - 获取地理位置数据

任务相关

  • POST /api/tasks/scan - 创建扫描任务
  • POST /api/tasks/burst - 创建连拍检测任务
  • GET /api/tasks - 获取任务列表
  • GET /api/tasks/:id/progress - 获取任务进度

配置相关

  • GET /api/config/folder-rules - 获取文件夹规则配置
  • POST /api/config/folder-rules - 更新文件夹规则配置

开发说明

前端开发

# 启动开发服务器(端口3000)
npm run dev

后端开发

# 启动开发服务器(端口5001)
python app.py --debug

注意事项

  1. 首次使用时,建议先扫描一个测试文件夹
  2. 文件整理操作会创建大量文件夹,请确保目标磁盘有足够空间
  3. 连拍检测功能目前基于文件名和时间间隔,可能需要手动调整结果
  4. 地图功能需要网络连接以加载地图瓦片

License

MIT

联系方式

如有问题或建议,请联系:[项目维护者邮箱]

About

一个用于自动整理相机拍摄文件的Python Web应用,支持按文件元信息创建自定义文件夹层级,并提供时间轴、相册、地图视图和文件管理功能。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors