sandy-sp/metadata-cleaner
GitHub: sandy-sp/metadata-cleaner
一个注重隐私的 CLI 工具,用于查看、编辑和批量移除多种文件格式中的元数据。
Stars: 35 | Forks: 2
# Metadata Cleaner
[](https://github.com/sandy-sp/metadata-cleaner/actions/workflows/ci.yml)
[](https://github.com/sandy-sp/metadata-cleaner/releases)
[](https://pypi.org/project/metadata-cleaner/)
[](LICENSE)
Metadata Cleaner 是一个注重隐私的 CLI 工具,用于查看和移除本地文件中的元数据。
默认情况下,它会生成清理后的副本,避免就地修改原始文件。
## 支持的文件
- 图像:JPG、JPEG、PNG、TIFF、WEBP、AVIF、HEIC、HEIF
- 文档:PDF、DOCX、EPUB、ODT、TXT
- 音频:MP3、WAV、FLAC、OGG、AAC、M4A、WMA
- 视频:MP4、MKV、MOV、AVI、WEBM、FLV
视频支持需要 `ffmpeg` 和 `ffprobe`。AVIF 和更广泛的元数据处理可得益于 `exiftool`。
## 安装说明
需要 Python 3.11 或更新版本。
```
pip install metadata-cleaner
metadata-cleaner --help
```
用于开发:
```
git clone https://github.com/sandy-sp/metadata-cleaner.git
cd metadata-cleaner
poetry install --with dev
poetry run metadata-cleaner --help
```
## CLI 用法
查看元数据:
```
metadata-cleaner view sample.jpg
```
打印元数据用于自动化:
```
metadata-cleaner view sample.jpg --json
```
移除单个文件的元数据:
```
metadata-cleaner delete sample.jpg
```
写入特定文件:
```
metadata-cleaner delete sample.jpg --output cleaned/sample.jpg
```
递归处理文件夹:
```
metadata-cleaner delete ./photos --output ./cleaned-photos
```
预览运行而不写入文件:
```
metadata-cleaner delete ./photos --dry-run
```
编写 JSON 摘要报告:
```
metadata-cleaner delete ./photos --summary-file reports/summary.json
```
摘要报告包含每个文件的状态和输出路径,用于审计追踪。
添加 `--checksums` 以包含输入/输出哈希值。SHA-256 是默认值;使用 `--checksum-algorithm sha512` 或 `--checksum-algorithm blake2b` 可生成更强的哈希报告。
当清理后的文件需要保留源文件时间时,请添加 `--preserve-timestamps`。
使用 `--report-detail compact` 或 `--report-detail summary` 生成较小的报告。
使用 `--report-filter failed` 仅列出失败的逐文件条目。
涉及重写、重新保存或重封装数据的格式,在 JSON 摘要报告中会包含逐文件警告。
在受支持的情况下编辑元数据:
```
metadata-cleaner edit song.mp3 --changes '{"artist": "Unknown"}'
```
## 开发检查
```
python3 manage.py test
python3 manage.py lint
python3 manage.py check
```
CI 会在拉取请求和推送到 `main` 分支时运行测试、lint 和 `pip-audit`。
## Docker
```
docker build -t metadata-cleaner .
docker run --rm -v "$(pwd)/photos:/data" metadata-cleaner delete /data
```
已发布的发布镜像可从 GitHub Container Registry 获取:
```
docker run --rm -v "$(pwd)/photos:/data" ghcr.io/sandy-sp/metadata-cleaner:latest delete /data
```
## 日志
默认情况下,日志仅输出到 stderr。如需写入日志文件,请显式启用:
```
METADATA_CLEANER_LOG_FILE=./metadata-cleaner.log metadata-cleaner delete sample.jpg
```
在需要时使用 debug 日志:
```
METADATA_CLEANER_LOG_LEVEL=DEBUG metadata-cleaner view sample.jpg
```
## 资源
- [API 参考](docs/API_REFERENCE.md)
- [使用指南](docs/USAGE.md)
- [架构](docs/ARCHITECTURE.md)
标签:DOCX处理, Exiftool, EXIF清除, Ffmpeg, meg, MP3处理, MP4处理, PDF处理, Poetry, Pypi, Python, Python 3.11, SHA-256, 二进制发布, 信息安全, 元数据清理, 元数据清除, 匿名化, 哈希校验, 图片处理, 审计追踪, 开源工具, 批量处理, 数据脱敏, 文件保密, 文件处理, 文档处理, 无后门, 网络安全, 网络安全审计, 请求拦截, 逆向工具, 防溯源, 隐私保护, 音视频处理