Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ MediaForge

轻量、零外部依赖的现代原生 GUI 本地文件与多媒体批处理瑞士军刀
A lightweight, zero-dependency modern native GUI toolkit for batch media & file management.

Python uv License Zero Dependencies Platform Display

简体中文 | English | 架构设计 | 工具详解 | 扩展指南


🌟 为什么选择 MediaForge?

在管理庞大的本地媒体库(如 NAS 共享目录、视频归档库、电子书库、影视刮削元数据)时,传统工具往往存在各种痛点:

  • 传统脚本:没有图形界面,每次使用都要修改代码配置路径,稍有不慎改错文件名无法挽回;
  • 大型工具软件:动辄几百 MB 的 Electron 臃肿框架,启动缓慢、消耗大量内存,且在网络驱动器权限下频频报错;
  • 普通 Tkinter 工具:界面宛如 90 年代 Windows 95,在大分辨率屏幕上字小如蚁、布局挤迫。

MediaForge 为此而生:它采用纯 Python 标准库打造,兼具极简现代审美安全预演与一键撤销机制极佳的 2K/4K 大屏适配,拉下代码即开即用!


✨ 核心优势

杀手级特性 详细描述
🛡️ 安全第一 (Safety First) 标配 【🔍 预览 Dry-Run】,正式操作前清晰掌控匹配清单与冲突预警,绝不误伤文件;采用两阶段改名机制,彻底杜绝文件相互覆盖。
持久化撤销 (Persistent Undo) 每次批量操作流水自动落盘到本地 JSON。即使关闭软件或重启电脑,再次打开依然支持一键无损原路回退!
零外部依赖 (Zero Dependency) 纯基于 Python 标准库开发,无需安装任何第三方依赖包,拉下代码直接运行,绿色无污染。
🔒 uv 精确锁定 项目使用现代 Python 包管理器 uv 进行环境与 Python 3.12.14 版本锁定(uv.lock)。
🎨 现代原生 UI (Modern Aesthetics) 摆脱传统 Tkinter 复古灰底粗边框,采用 Tailwind / Linear 级纯白卡片、动态悬浮反馈与深色 VSCode 风格控制台。
🖥️ 2K / 4K 高分屏优化 默认以 1800 × 1200 宽阔视野启动,适配高分屏字体与舒适留白,大屏操作舒展从容。
🧩 模块化扁平架构 摒弃多层无用嵌套,业务算法(core)与 UI 视图彻底解耦,轻松在 3 步内扩展新工具。

🛠️ 内置四大核心功能

┌─────────────────────────────────────────────────────────────────────────────┐
│                             ⚡ MediaForge Studio                             │
├─────────────────┬───────────────────────────────────────────────────────────┤
│ 🎬 MP4 批量编号  │ 遍历所选父目录下的每个子文件夹,各自独立从 V001 开始按序重命名   │
│ 📦 视频提取命名  │ 将分散在各子文件夹内的视频改名为“文件夹名.mp4”并提取至父目录下    │
│ 📝 NFO 文本替换  │ 批量查找替换 NFO/文本中的分类标签、网址等,支持 Shift_JIS/UTF-8   │
│ 📚 电子书提取    │ 扫描二级书籍目录(L2),将深层嵌套(L3+)的 .epub 一键提取扁平化到 L2 │
│ 🧹 空目录清理    │ 递归自底向上智能探测并清理空文件夹,支持识别 Thumbs.db 残留与撤销 │
│ 🌳 目录树生成    │ 生成 ASCII 视觉树(tree /f)或平铺清单,支持深度/后缀过滤与导出   │
│ 🗜️ 子文件夹打包  │ 纯原生零依赖,将父目录下各子文件夹独立打包为同名 zip 归档包       │
└─────────────────┴───────────────────────────────────────────────────────────┘

各工具详细配置与实战案例请参见 👉 内置工具使用指南


🚀 快速开始

1. 克隆仓库

git clone https://github.com/esverde/media-forge.git
cd media-forge

2. 一键启动

本项目锁定了 Python 3.12.14,推荐使用 uv 运行,也支持系统 Python 直接启动:

# 方式 A:使用 uv (推荐,自动遵循 uv.lock 与 3.12.14 环境)
uv run main.py

# 方式 B:使用系统 Python 3.12 直接运行
python main.py

也可以作为标准 Python 模块启动:

python -m media_forge

或者本地安装后直接作为全局命令调用:

uv pip install -e .
media-forge

💻 命令行独立启动模式

如果您希望直接打开某一个独立工具窗口,可使用命令行参数:

python main.py --tool mp4     # 直接打开 MP4 批量编号独立窗口
python main.py --tool move    # 直接打开 视频提取重命名独立窗口
python main.py --tool nfo     # 直接打开 NFO 文本替换独立窗口
python main.py --tool epub    # 直接打开 电子书提取扁平化独立窗口
python main.py --tool empty   # 直接打开 空文件夹智能清理独立窗口
python main.py --tool tree    # 直接打开 目录树生成导出独立窗口
python main.py --tool zip     # 直接打开 子文件夹独立打包独立窗口

📂 项目结构规范

采用清晰直观的扁平包结构(避免多余目录嵌套):

media-forge/
├── .gitignore                  # Git 规范忽略配置
├── .python-version             # Python 版本锁定 (3.12.14)
├── uv.lock                     # uv 依赖与环境锁定文件
├── LICENSE                     # MIT 开源许可证
├── pyproject.toml              # PEP 517 / PEP 621 构建配置
├── README.md                   # 主文档
├── main.py                     # 快速启动入口
├── docs/                       # 详细工程文档
│   ├── architecture.md         # 架构分层与设计规范
│   ├── tools_guide.md          # 4大工具深度使用手册
│   └── extension_guide.md      # 二次开发扩展指南
└── media_forge/                # 核心 Python 模块包
    ├── __init__.py             # 包导出与元数据
    ├── __main__.py             # python -m 入口
    ├── core/                   # 纯业务逻辑算法层(无 UI 依赖)
    │   ├── history.py          # 通用历史记录与持久化管理器
    │   ├── utils.py            # 自然排序、后缀解析、编码尝试
    │   ├── mp4_renamer.py      # MP4 批量编号引擎
    │   ├── video_extractor.py  # 视频提取引擎
    │   ├── nfo_replacer.py     # 文本/NFO 查找替换引擎
    │   └── epub_extractor.py   # 电子书扁平化提取引擎
    └── ui/                     # 展现层
        ├── theme.py            # 现代色彩系统与设计令牌
        ├── components.py       # 纯原生扁平化现代组件库
        ├── app.py              # 主工作台窗口(侧边栏集成)
        └── views/              # 各工具视图
            ├── base_view.py          # 视图通用抽象基类
            ├── mp4_rename_view.py    # MP4 重命名视图
            ├── video_extract_view.py # 视频提取视图
            ├── nfo_replace_view.py   # NFO 替换视图
            └── epub_flatten_view.py  # 电子书提取视图

🧩 二次开发:如何添加新工具?

MediaForge 拥有清晰的扩展体系。如果您想新增一个功能(例如:图片压缩字幕重命名),只需 3 步:

  1. media_forge/core/ 中编写纯业务逻辑(扫描、执行、回退);
  2. media_forge/ui/views/ 中继承 BaseView 编写现代卡片表单
  3. media_forge/ui/app.py 中注册菜单项与视图

详细示例代码与说明请参阅 👉 二次开发与扩展指南


🗺️ 未来路线图 (Roadmap)

  • 🖼️ 图片批处理模块:批量无损压缩、格式转换(WebP/AVIF)、EXIF 拍摄日期重命名;
  • 🎬 字幕与音频对齐:视频与字幕文件(.srt/.ass)自动模糊匹配并对齐命名;
  • 🔍 重复文件查重工具:基于快速哈希(xxHash/MD5)查重与清理;
  • 📦 压缩包批量解压与整理:自动识别分卷、清理残留并扁平化归类。

🌐 English Overview

MediaForge is a modern, lightweight, zero-dependency desktop toolkit for batch file and media management built purely with Python 3.12.14 standard library.

Key Features

  • Zero Dependencies: Pure Python standard library (tkinter), no third-party packages required.
  • Reproducible Environment: Python version locked to 3.12.14 via uv (uv.lock + .python-version).
  • Safety First: Full Dry-Run simulation before making changes; two-phase renaming prevents file overwrite conflicts.
  • Persistent Undo: Actions are logged to JSON; revert previous operations with one click anytime, even after app restart.
  • Modern Native Aesthetics: Card-based flat UI, hover response, dark VSCode-like terminal, and optimized for 2K/4K large displays (1800x1200).
  • Clean Architecture: Decoupled core business logic from UI views with zero unnecessary nesting.

📄 开源许可证

本项目基于 MIT 许可证 开源。欢迎提交 Issue 与 Pull Request!

About

⚡ Lightweight, zero-dependency modern native GUI toolkit for batch file & media management. 轻量、零依赖的现代原生 GUI 本地文件与多媒体批处理工具箱。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages