一款简易的照片和视频管理工具,用于扫描指定目录下的媒体文件,提取相关信息并存储到数据库中,以便后续查询和管理。
- 多文件夹路径配置和管理
- 递归扫描所有配置的路径
- 常见图片视频格式元数据提取
- 哈希值计算
- 按条件搜索
- 列出重复文件
- 查询统计信息
- Python 3.6+
- FFmpeg (用于视频元数据提取)
- 克隆或下载本仓库
git clone https://github.com/yourusername/formyphoto.git
cd formyphoto- 安装依赖包
pip install -r requirements.txt- 安装FFmpeg (如果尚未安装)
- Ubuntu/Debian:
sudo apt install ffmpeg - macOS (使用Homebrew):
brew install ffmpeg - Windows: 从FFmpeg官网下载并添加到PATH
首次运行前,需要配置要扫描的路径:
# 添加扫描路径
python formyphoto.py config add /path/to/your/photos
# 查看已配置的路径
python formyphoto.py config list
# 移除路径
python formyphoto.py config remove /path/to/your/photos
# 显示完整配置
python formyphoto.py config show# 扫描所有配置的路径
python formyphoto.py scan
# 只扫描新文件
python formyphoto.py scan --only-new
# 强制重新扫描所有文件
python formyphoto.py scan --force
# 扫描特定路径
python formyphoto.py scan --path /path/to/scan# 检查并列出不存在的文件(默认操作)
python formyphoto.py verify
python formyphoto.py verify --operation=list
# 检查并删除不存在文件的数据库记录
python formyphoto.py verify --operation=delete
# 导出不存在文件的记录到CSV(可与任何操作组合)
python formyphoto.py verify --export=missing_files.csv
python formyphoto.py verify --operation=delete --export=deleted_files.csv
# 只验证特定类型的文件(可与任何操作和导出选项组合)
python formyphoto.py verify --type=image
python formyphoto.py verify --operation=delete --type=video
python formyphoto.py verify --type=image --export=missing_images.csv# 按文件名关键词搜索
python formyphoto.py search "关键词"
# 按文件类型搜索
python formyphoto.py search --type image
python formyphoto.py search --type video
# 按日期搜索
python formyphoto.py search --date 2023-01-01
# 按设备搜索
python formyphoto.py search --device "iPhone"
# 按分辨率搜索
python formyphoto.py search --resolution 1920x1080# 列出所有重复文件
python formyphoto.py duplicates list# 显示基本统计信息
python formyphoto.py stats
# 按设备统计
python formyphoto.py stats --by-device# 初始化数据库
python formyphoto.py db init
# 显示数据库统计信息
python formyphoto.py db stats
# 压缩数据库
python formyphoto.py db vacuum
# 查看数据库版本
python formyphoto.py db version- 常见图片格式: jpg/jpeg, png, gif, bmp, tiff/tif, webp, heic/heif
- 相机RAW格式: cr2 (Canon), nef (Nikon), arw (Sony), orf (Olympus), raf (Fujifilm), rw2 (Panasonic), dng (通用)
- 其他格式: psd (Photoshop)
- 常见视频格式: mp4, mkv, avi, mov, wmv, flv, webm, m4v, mpg/mpeg, 3gp
项目中提供了一个示例配置文件 config.example.json,您应该基于此创建自己的 config.json:
# 复制示例配置文件
cp config.example.json config.json
# 编辑配置文件,添加您自己的路径
vim config.json # 或使用其他编辑器配置文件结构如下:
{
"scan_paths": [
"/path/to/photos",
"/path/to/videos"
],
"database": {
"path": "./formyphoto.db"
},
"file_types": {
"images": [
"jpg", "jpeg", "png", "gif", "bmp", "tiff", "tif", "webp", "heic",
"cr2", "nef", "arw", "orf", "raf", "rw2", "dng", "psd"
],
"videos": [
"mp4", "mkv", "avi", "mov", "wmv", "flv", "webm", "m4v", "mpg", "mpeg", "3gp"
]
},
"scan_settings": {
"hash_algorithm": "sha256",
"extract_metadata": true,
"recursive": true
}
}您也可以通过命令行修改配置:
# 添加扫描路径
python formyphoto.py config add /path/to/your/photos
# 查看已配置的路径
python formyphoto.py config list
# 移除路径
python formyphoto.py config remove /path/to/your/photos
# 显示完整配置
python formyphoto.py config show日志文件保存在 logs 目录下,可以通过 --verbose 或 -v 选项启用详细日志。
-
基于时间的分组导出
-
基于地理位置的分组导出
-
基于搜索结果的分组导出
-
高级搜索
-
重复照片去重策略
-
相似照片筛选
-
人脸识别和分组