Skip to content

About

可以从本地AV视频文件中提取番号,并可以批量进行文件移动和重命名操作。完整版可以使用番号去javDB刮削影片信息,可以去字幕猫下载中文字幕,可以利用信息生成适用于jellyfin的.nfo文件,用于搭建本地影视服务。

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

JAVscraper

JAVscraper

文件名刮削与文件整理工具

一个 Windows 桌面小工具,用于从文件名中提取标准代码,并按代码批量移动、重命名文件。所有操作都在图形界面完成,不需要懂编程,也不需要打开命令行。

需要写进脚本、计划任务,或者干脆不想开界面时,核心的扫描和移动也可以用命令行批量跑。

完整版还额外提供网页信息抓取和Jellyfin 元数据生成扩展功能,全部通过图形界面操作。


目录


这个工具能做什么

假设你有一堆文件名长这样的视频:

ABP-123 某某标题.mp4
SSIS_456 另一个标题.mkv
FC2-1234567.mp4
随手拍的一段视频.mp4

核心功能(核心版就有):

  1. 自动识别哪些文件名里有标准代码(ABP-123、SSIS-456、FC2-1234567);
  2. 告诉你识别结果——识别成功标绿色 ✓,识别失败标灰色 ✗;
  3. 按代码把文件移动到指定目录,可以按代码分文件夹,也可以用代码给文件重命名;
  4. 一键撤回——如果移错了,可以还原。

扩展功能(完整版才有,随程序一起发布):

功能 作用
JavDB 信息 去 javdb.com 抓取演员、评分、封面图,生成 Excel
字幕猫 去 subtitlecat.com 下载中文字幕
Jellyfin NFO 读取刮削好的表格,给每个电影文件夹生成 Jellyfin 能识别的元数据文件

下载与安装

软件有两个版本,选一个下载即可:

版本 大小 包含什么 适合谁
核心版 约 13 MB 扫描 + 移动功能 只想整理本地文件
完整版 约 150 MB 核心功能 + 全部扩展功能 还要抓取网站信息 / 下载字幕 / 生成 NFO

核心版

下载 JAVscraper_core_win64.exe,放到任意目录,双击运行。

完整版

下载 JAVscraper_full_win64.7z,解压到任意目录(比如 D:\Tools\AVScraper\),双击里面的 JAVscraper_full_win64.exe。

⚠ 重要:完整版是一个文件夹,不要只把里面的 .exe 单独拷出来,会无法运行。

系统要求

  • Windows 10 / 11
  • 不需要安装 Python,不需要任何其他软件

第一次使用

  1. 双击 exe 启动。首次运行会在 exe 旁边自动生成 config.json(配置文件)和 log/ 文件夹(日志)。

  2. 点击右下角的「配置」按钮,弹出配置窗口。初次使用需要改几个路径:

    配置项 填什么
    默认扫描目录 你的视频文件所在的目录
    输出目录 一般留空即可(结果自动存到 log/ 下)
    目标目录 文件整理后要移到哪里

    改完点下方的「应用」或「确定」。

  3. 切到「1-扫描」标签页,检查扫描目录对不对,点「开始扫描」。

到这里就基本能用起来了。详细流程见下一节。


日常使用流程

主界面顶部是一排标签页,完整版会显示:

1-扫描   2-移动   3-爬虫   4-Jellyfin NFO

所有配置项都集中在右下角的「配置」窗口里,主界面的各标签页只负责操作。


① 扫描

这是整个流程的起点。

操作步骤:

  1. 确认顶部的「扫描目录」是你的视频目录;
    • 第一次需要手动选,之后会自动记住上次用的目录;
    • 点击输入框会展开历史下拉,选之前用过的目录;
  2. 点「开始扫描」;
  3. 稍等片刻,结果会一行行显示在表格里。

看懂结果:

显示 含义
✓ 绿色 成功识别到代码
✗ 灰色 没识别到,保持原文件名
↳ 蓝色 文件名里没找到,但从父文件夹名继承了代码

表格上方的状态栏会显示总数、成功数、提取率。点击表头可以排序——比如点「状态」列,把 ✓ 和 ✗ 分开看。

搜索框:

表格上方有一个搜索框,可以实时筛选结果:

  • 下拉选「全部列」:所有列里都搜;
  • 下拉选具体列名(如「文件名」):只搜该列;
  • 勾上「正则」:搜索文本按正则表达式解释。

小技巧:

  • 每个扫描结果会自动存到 log/<时间戳>/ 里,包括 JSON、文本报告、CSV 表格;
  • 扫描不会修改任何文件,可以放心重复运行。

如果 ✗ 太多:

  • 说明这些文件名里没有可识别的代码;
  • 常见原因是文件名里缺少连接符(- 或 _)——比如 ABP123 而不是 ABP-123,这时需要手动改文件名;
  • 识别规则在配置窗口里可以调整(见下方配置窗口)。

② 移动

扫描完成后,切到这一页。

操作步骤:

  1. 顶部「输入 JSON」应该已经自动填好了(来自上一次扫描);
  2. 确认「目标目录」;
  3. 点「预览更改」——这一步不会动文件,只是告诉你会发生什么;
  4. 仔细检查表格里的每一行;
  5. 用勾选框选择要移动的行(默认全选);
  6. 确认无误后,点「执行移动」;
  7. 弹窗确认后,文件开始移动。

预览表格的颜色:

颜色 含义
绿色 正常移动
灰色 跳过(目标已存在,不覆盖)
红色 覆盖(目标已存在,会被替换)⚠

勾选框:

  • 每一行前面有一个勾选框,用来标记"这一行是否参与本次移动";
  • 表头的勾选框是"全选 / 全不选"——只对当前可见的行生效;
  • 可以配合搜索框使用:搜 ABP,点表头全选,就只勾上了所有 ABP 相关的行;
  • 状态栏会实时显示已勾选的数量。

搜索与筛选:

和扫描页一样有搜索框,下拉里还能选「已勾选 / 未勾选」,只显示符合筛选条件的行。

移错了怎么办:

点「撤回移动」,会按照上一次移动的记录把所有文件搬回原位。

撤回记录只保留最近一次。如果连续执行了多次移动,只能撤回最后一次。

多视频与分段(-partN):

如果同一番号下有多个视频文件(如分段视频),勾选「多视频启用 -partN 后缀」后:

  • 工具会自动比对文件名,剔除公共部分,提取差异中的序号(支持纯数字或纯单字母)。
  • 按序重新编号:不管原文件是 _A, _B 还是 _1, _2,只要序号连续(1~N),都会按顺序重命名为 -part1、-part2……
  • 连续性要求:如果检测到的序号跳号(如只有 _1 和 _3 缺少 _2),为了 Jellyfin 播放序列的稳定,整组放弃重命名,退回普通移动规则。
  • 命名主干:若选择「按提取码命名」,主干为提取码;若选择「保留原文件名」,主干为剔除序号后的最长公共前缀。

附件命名方式有三个选项:

选项 行为
保留原文件名 附件保持原文件名(默认)
按提取码命名 附件改为 提取码.扩展名
跟随视频命名 附件改为与视频同名

「跟随视频命名」的详细规则:

  1. 优先跟随源目录里的视频:同一源目录下恰好一个视频时,附件跟它同名。 例如源目录有 ABP-123 某某标题.mp4 和 ABP-123-zh-CN.srt, 移动后变成 ABP-123 某某标题.mp4 和 ABP-123 某某标题.srt。

  2. 源目录没有视频时,到目标目录里找:如果你已经先把视频移到了目标目录 (目标/ABP-123/),之后单独扫描字幕并移动,工具会在 目标/ABP-123/ 里找那个唯一的视频,让字幕跟它同名。

  3. 两处都找不到、或找到多个视频时,退回保留原文件名:

    • 源目录和目标目录都没有视频;
    • 或者任何一处有多个视频(如分段视频 part1 / part2)—— 这时配对是模糊的,工具不猜。
  4. 平铺模式不启用目标目录查找:移动到提取名子文件夹 关闭时, 目标目录里是一堆平铺的文件,无从定位"这个番号的视频"。此时只跟随 源目录里的视频。

典型用法:视频和字幕一次扫描、一起移动 → 用规则 1; 先移动视频、再下载字幕、再移动字幕 → 用规则 2。


③ 爬虫(完整版)

「3-爬虫」是一个扩展功能模块,内部包含两个子标签页:

JavDB 信息   字幕猫

两者的使用方式类似:输入一批番号 → 自动去网站上抓取 → 生成 Excel 报告或下载文件。它们的配置项全部在「配置」窗口里。


JavDB 信息

去 javdb.com 抓取影片信息,生成带封面嵌入的 Excel 表格。

操作步骤:

  1. 准备一个 Excel 文件,第一列写要抓取的番号,一行一个,不要表头:

    ABP-123
    SSIS-456
    FC2-1234567
    
  2. 打开配置窗口,切到「JavDB 信息」,填好以下路径:

    配置项 说明
    站点地址 默认 https://javdb.com/,一般不用改
    输入 Excel 上面那个文件
    封面目录 下载的封面图保存到哪里
    输出 CSV 中间结果(爬到的原始数据)
    输出 Excel 最终的漂亮表格
    登录状态 见下方「登录 javdb」

    点「应用」或「确定」。

  3. 切回「3-爬虫」→「JavDB 信息」,点「开始爬取」;

  4. 进度表格会逐行显示状态:

    目标番号     实际番号     名称                     状态
    ABP-123     ABP-123     某某标题                 ✓ 完成
    SSIS-456    SSIS-456B   别的标题                 ⚠ 完成(番号不同)
    FC2-…       —           —                        进行中…
    
  5. 全部完成后,点「生成 Excel」。

登录 javdb:

有些信息需要登录才能看到。建议先登录一次:

  1. 在浏览器里安装 Cookie-Editor 或 EditThisCookie 扩展;
  2. 打开 javdb.com,确认已登录;
  3. 用扩展导出 cookies,选 JSON 格式;
  4. 在配置窗口的「JavDB 信息」页里点「导入浏览器 Cookie」,选刚才的 JSON 文件;
  5. 完成。

也可以点「启动浏览器」→ 在弹出的浏览器里手动登录 → 回到程序点「关闭浏览器」→ 登录状态自动保存。

重要建议:

  • 第一次跑建议开启「显示浏览器窗口」——javdb 会弹验证码,需要你手动点一下;
  • 不要贪快——「请求间隔」默认 1 秒,改快容易被封;
  • 遇到卡住可以点「停止」,已抓到的数据会保存。

字幕猫

去 subtitlecat.com 搜索并下载中文字幕。

操作步骤:

  1. 准备番号清单 Excel(和 JavDB 一样);

  2. 打开配置窗口,切到「字幕猫」,填好:

    配置项 说明
    站点地址 默认 https://www.subtitlecat.com/
    输入 Excel 番号清单
    目标目录 下载的字幕保存到哪里(平铺,不建子文件夹)
    输出 Excel 爬取完成后自动生成的结果表格
    登录状态 一般留空即可
  3. 切回「3-爬虫」→「字幕猫」,点「开始爬取」。

字幕选择策略:

工具会从搜索结果里挑一条最合适的下载,优先级从高到低:

  1. 番号一致的;
  2. 有 👍 标记的;
  3. 有 translated from Chinese 的;
  4. 下载量最高的。

所以只要搜索结果不为空,就一定会选中一条。

结果表格包含的列:

列 说明
目标番号 你输入的
搜索结果数量 该网站里搜到多少条(带超链接,点击直接跳转到网页)
实际番号 选中字幕对应的番号
名称 字幕的标题
源语言 字幕翻译前的语言(中文显示)
下载量 该字幕的下载次数
状态 见下

状态说明:

状态 含义
下载成功 正常下载完成,且番号一致
下载成功(番号不一致) 下载完成,但选中的字幕是另一个番号的(浅黄底,需要人工核对)
未搜到 网站里没有该番号的结果
下载失败 详情页里既没有下载按钮也没有翻译按钮
下载失败(翻译超时) 点了「翻译」按钮后等太久,网站还没生成下载链接

关于「翻译」按钮:

有些字幕在网站上只提供"翻译成中文"的按钮,需要点击后等网站生成中文版本,然后才会出现"下载"按钮。工具会自动处理:

  • 点「翻译」→ 等待 → 过一段时间再回来看;
  • 如果超过「等待翻译」秒数(默认 30 秒)网站还没生成,就记为失败;
  • 「轮间等待」控制每轮重试之间隔多久(默认 3 秒)。

颜色约定:

颜色 含义
浅红底 失败(未搜到 / 下载失败 / 翻译超时)
浅黄底 下载成功但番号不一致,需要核对
无底色 正常

小技巧:

  • 下载的字幕文件名与网站提供的一致(如 ABC-123-zh-CN.srt);
  • 下载的字幕可以直接用本工具的扫描功能识别番号,再配合移动功能整理到视频旁边。

④ Jellyfin NFO(完整版)

读取刮削好的 Excel(通常来自 JavDB 信息),为每个电影文件夹生成 Jellyfin / Kodi 能识别的 .nfo 元数据文件,并把封面复制到电影文件夹里。

操作步骤:

  1. 准备两个目录:

    准备 说明
    电影文件目录 每个电影一个子文件夹,文件夹名就是番号,如 ABP-123/
    封面源目录 从刮削表格里提取出来的封面图存到哪里
  2. 打开配置窗口,切到「Jellyfin NFO」,填好:

    配置项 说明
    输入 Excel 刮削结果的 Excel(JavDB 生成的,或你自己整理的同结构表格)
    电影文件目录 上面那个目录
    封面源目录 上面那个目录
    工作表序号 Excel 里目标 sheet 的序号(第几个)
    列名所在行 表头在第几行
    番号列名 / 封面列名 / 标题列名 单列,填实际列名
    演员 / 评分 / 类别 / 个人评论 / 网友评论列名 支持多个,用 , 分隔
    NFO 模式 每个视频生成同名 NFO / 只生成 movie.nfo / 两种都生成
    封面命名 与视频同名 / 用番号命名 / 两种都复制
  3. 切回「4-Jellyfin NFO」,先点「提取图片」,把 Excel 里嵌入的封面抠出来,存到「封面源目录」;

  4. 再点「生成 NFO」,工具会遍历电影文件夹,复制封面 + 生成 .nfo 文件;

  5. 把「电影文件目录」添加到 Jellyfin 媒体库,Jellyfin 会自动读取 NFO 和封面。

注意事项:

  • 本功能只处理嵌入单元格的封面图(WPS 的「嵌入单元格图片」格式,或 Excel 365 的「置于单元格中」)。普通"插入图片"(浮动图片)提取不了;
  • 电影文件夹名必须与 Excel 里的番号一致,否则会显示"未匹配";
  • 生成的 NFO 是 UTF-8 编码的 XML,可以直接用记事本打开查看。

命令行模式(CLI)

扫描和移动这两件事可以完全不开界面,用命令跑。爬虫和 Jellyfin NFO 目前只在图形界面里提供。

命令行版和界面版是同一个程序、共用同一份配置,放在同一个目录里就行:

JAVscraper_core_win64.exe          ← 双击,打开界面
JAVscraper_cli.exe                 ← 在 cmd / PowerShell 里用
config.json                        ← 两者共用
log\                               ← 两者的输出都在这里

用 pip 安装的也可以:把下面的 JAVscraper_cli.exe 换成 av-scraper 即可。 命令行版 exe 不带版本号,方便加进 PATH 或者反复敲。

扫描

:: 扫描 D:\videos,结果自动存进 log\<时间戳>\(JSON + 文本报告 + CSV)
JAVscraper_cli.exe scan D:\videos

:: 一次扫多个目录(互相包含的目录只会扫一遍)
JAVscraper_cli.exe scan D:\videos D:\downloads

:: 报告换个地方放(默认 log\<时间戳>\)
JAVscraper_cli.exe scan D:\videos --output-dir D:\reports

:: 只在屏幕上看看结果,不写任何文件
JAVscraper_cli.exe scan D:\videos --no-reports

:: 把 JSON 交给下一条命令:- 表示写到标准输出(摘要仍然打在屏幕上,走 stderr)
JAVscraper_cli.exe scan D:\videos --json - > results.json

输出长这样:

扫描目录    D:\videos
文件总数    5
直接提取    3
父目录继承  0
保持原样    2
提取率      60.0%

未识别(2):
  - random.mkv
  - 随手拍的一段视频.mp4

未识别的文件不会被动,认出来的才参与下一步。

一次扫多个目录时,「扫描目录」下面会把每个目录各列一行;某个目录如果已经在另一个目录里面,命令行只在 stderr 提醒一句「……在……里面,已跳过」,不会重复扫两遍。

移动

先 --dry-run 看一遍,它就是界面里的「预览更改」:

:: 预览:只告诉你会发生什么,一个文件都不动
JAVscraper_cli.exe move results.json -t E:\sorted --dry-run

:: 确认没问题再执行(-y = 不再问一次)
JAVscraper_cli.exe move results.json -t E:\sorted -y

:: 只处理其中几个番号(相当于界面里勾选几行)
JAVscraper_cli.exe move results.json -t E:\sorted -y --only ABP-123,SSIS-456

:: 目标已有同名文件时改成覆盖(默认是「重命名」,加 _01)
JAVscraper_cli.exe move results.json -t E:\sorted -y --on-conflict overwrite

:: 分段视频重新编号成 -part1、-part2(相当于界面里的「多视频启用 -partN 后缀」)
JAVscraper_cli.exe move results.json -t E:\sorted -y --part-naming
参数 说明
-t, --target DIR 目标目录。不写就用配置里的(在界面上选过一次就会记住)
--dry-run 只预览,不动文件
-y, --yes 不再确认。在脚本或计划任务里必须加,否则会拒绝执行
--only 番号[,番号] 只处理这些番号
--folder / --no-folder 是否按番号建子文件夹(默认跟配置)
--video-naming keep 保留原文件名 / code 按番号命名
--attachment-naming keep / code / follow(跟随同目录视频)
--part-naming / --no-part-naming 分段视频按 -part1、-part2 重新编号,附件跟随第一段(默认跟配置)
--on-conflict skip 跳过 / overwrite 覆盖 / rename 加 _01(默认跟配置)

撤回

命令行移的文件,可以回界面点「撤回移动」;界面移的也能用命令撤。两边共用 log\move_operations.json(只保留最近一次)。

JAVscraper_cli.exe undo --dry-run    :: 先看看会撤回什么
JAVscraper_cli.exe undo -y           :: 真的撤回

撤回可以重复执行:中途按了 Ctrl+C,或者有几个因为原位置被占用没撤回去,处理好之后再跑一次 undo 就会接着撤,已经撤回去的自动跳过。

看当前配置

JAVscraper_cli.exe config          :: 列出当前生效的配置
JAVscraper_cli.exe config --path   :: 只打印配置文件在哪

命令行不会修改配置,要改配置请用界面的「配置」窗口。

退出码

退出码 含义
0 成功(包括"没有需要处理的文件")
1 有文件没处理成功 / 被中断 / 你自己取消了
2 参数用法问题(包括非交互环境里少了 --yes)

每个子命令都可以加 -v 看每个文件的明细,或者 -q 只在出错时出声。完整的参数说明:

JAVscraper_cli.exe --help
JAVscraper_cli.exe move --help

配置窗口

主界面右下角有一个 「配置」 按钮,点击弹出一个独立窗口。

为什么独立出来:各标签页只负责操作,配置项集中管理,避免操作界面被配置项挤满。

窗口结构:

[核心配置]  [JavDB 信息]  [字幕猫]  [Jellyfin NFO]
─────────────────────────────────────────
(当前标签页的所有配置项)
─────────────────────────────────────────
[重置]  [重新加载]         [确定]  [取消]  [应用]

顶部标签页对应不同模块的配置:

标签页 内容
核心配置 扫描、移动、应用全局设置
JavDB 信息 JavDB 抓取功能的路径与参数
字幕猫 字幕下载功能的路径与参数
Jellyfin NFO NFO 生成功能的路径与参数

底部按钮:

按钮 作用
重置 恢复所有配置为出厂默认值并立即保存(会弹二次确认)
重新加载 从磁盘重读配置,放弃当前未保存的修改
确定 保存当前修改并关闭窗口
取消 放弃当前修改并关闭窗口
应用 保存当前修改但不关闭窗口

几个全局配置项(在「核心配置」的「应用」段):

配置项 说明
关闭时二次确认 关闭主窗口时弹窗确认,避免误关
历史目录上限 路径输入框的下拉里最多保留多少条历史
日志区高度(行) 各页面日志区显示多少行
表格区高度(行) 各页面表格显示多少行

修改生效:

  • 大部分配置改完点「应用」立即生效;
  • 表格 / 日志高度、历史目录上限等全局项也是保存后立即生效,不需要重启程序。

常见问题

Q:双击 exe 没反应 / 闪退?

  • 检查是否有杀毒软件拦截。Windows Defender 或国产杀软对 PyInstaller 打包的 exe 有时会误报,加到白名单即可;
  • 完整版确认整个文件夹都在,没有单独拷贝 exe。

Q:扫描时程序卡死?

  • 正常不会。如果卡住,多半是磁盘读得慢(尤其是机械硬盘或网络盘),等它跑完即可;
  • 日志区能看到实时进度。

Q:扫描结果里 ✗ 很多怎么办?

  • 打开配置窗口,切到「核心配置」,确认文件名里的前缀在「已知字母前缀」列表里;
  • 不在就加进去;
  • 也检查文件名里是否有合法的连接符(- 或 _)。

Q:移错了想反悔?

  • 点「撤回移动」即可。前提是 log/move_operations.json 还在,且没有执行过新的移动。

Q:爬虫标签页没显示?

  • 核心版不含爬虫功能,看不到是正常的;
  • 完整版如果某个功能显示为红色错误提示,说明该模块的依赖缺失或加载失败,具体原因和修复方法会写在提示里。

Q:抓取 javdb 时总是搜错番号?

  • 打开生成的 Excel,看有没有浅红底或浅黄底的行:
    • 浅黄底:搜到的第一条结果和目标番号不一致,需要人工核对;
    • 浅红底:该番号没抓到,可以重跑一次,或者手动修正。
  • 建议先打开「显示浏览器窗口」看一次实际搜索行为。

Q:字幕猫下载的字幕,名字对不上视频?

  • 看生成的结果表格里状态是不是浅黄底的「下载成功(番号不一致)」;
  • 这类行需要人工核对,或手动改字幕文件名;
  • 如果番号一致但文件名不好看,可以用本工具的「移动」功能把字幕重命名。

Q:想清空历史目录记录?

  • 关闭程序,用记事本打开 config.json,找到 recent_scan_dirs 和 recent_target_dirs,改成 [],保存。

Q:配置文件在哪?

  • 跟 exe 放一起。核心里叫 config.json;爬虫功能叫 scraper_config.json;NFO 功能叫 jellyfin_nfo_config.json;
  • 想完全恢复默认:删掉这些文件(或其中一个),重启程序会自动生成新的。

Q:日志和结果文件在哪里?

  • exe 旁边的 log/ 文件夹里;
  • 每次扫描会在 log/<时间戳>/ 下生成三个文件;
  • 这些文件不会被自动清理,想删就手动删。

重要提醒

  • 移动是不可逆的物理操作。虽然提供了撤回,但只在特定条件下有效(记录文件还在、之后没有执行过新移动)。执行前务必点「预览更改」,尤其看清红色的「覆盖」行。
  • 扫描不修改文件,可以放心反复运行。
  • 本工具仅用于本地文件整理。请确保所处理的文件来源合法,并遵守当地法律法规。
  • 完整版体积较大(约 150 MB),因为内置了浏览器驱动。这是正常的,不是软件出问题。
  • 不要单独拷贝完整版里的 exe——整个文件夹要一起复制或移动。

更多信息

  • 每个功能模块的详细说明见 plugins/ 目录下各自的 README.md;
  • 想了解内部原理、开发扩展、自己打包?请看 DEVELOPER.md;
  • 遇到本文档没覆盖的问题,欢迎提 issue。

About

可以从本地AV视频文件中提取番号,并可以批量进行文件移动和重命名操作。完整版可以使用番号去javDB刮削影片信息,可以去字幕猫下载中文字幕,可以利用信息生成适用于jellyfin的.nfo文件,用于搭建本地影视服务。

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages