首先感谢作者及参与的众大佬作出的贡献!!! 本文皆转自大佬,如需下架请联系。
开源地址:
https://github.com/ccf-2012/torcp
本程序需要在 python3 运行环境,以命令行方式运行
下载源码
git clone https://github.com/ccf-2012/torcp.git
切换到torcp目录
cd ./torcp/
安装依赖
pip3 install -r requirements.txt
使用方法:
完整的命令参数,可以通过这样查看:
python3 torcp.py -h
usage: torcp.py [-h] -d HD_PATH [-e KEEP_EXT] [-l LANG] [--tmdb-api-key TMDB_API_KEY] [--tmdb-lang TMDB_LANG] [--tv] [--movie] [--dryrun] [--single] [--extract-bdmv]
[--full-bdmv] [--origin-name] [--sleep SLEEP] [--move-run] [--make-log] [--symbolink] [--emby-bracket] [--plex-bracket]
MEDIA_DIR
torcp: a script hardlink media files and directories in Emby-happy naming and structs.
positional arguments:
MEDIA_DIR The directory contains TVs and Movies to be copied.
optional arguments:
-h, --help show this help message and exit
-d HD_PATH, --hd_path HD_PATH
the dest path to create Hard Link.
-e KEEP_EXT, --keep-ext KEEP_EXT
keep files with these extention('srt,ass').
-l LANG, --lang LANG seperate move by language('cn,en').
--tmdb-api-key TMDB_API_KEY
Search API for the tmdb id, and gen dirname as Name (year)\{tmdbid=xxx\}
--tmdb-lang TMDB_LANG
specify the TMDb language
--tv specify the src directory is TV.
--movie specify the src directory is Movie.
--dryrun print message instead of real copy.
--single, -s parse and copy one single folder.
--extract-bdmv extract largest file in BDMV dir.
--full-bdmv copy full BDMV dir and iso files.
--origin-name keep origin file name.
--sleep SLEEP sleep x seconds after operation.
--move-run WARN: REAL MOVE...with NO REGRET.
--make-log Make a log file.
--symbolink symbolink instead of hard link
--emby-bracket ex: Alone (2020) [tmdbid=509635]
--plex-bracket ex: Alone (2020) {tmdb-509635}
例子:
将一个目录中所有影视文件和目录,硬链到另一个目录,其间会按目录名/文件名猜测分类,并挑出 .mkv 和 .mp4:
python3 torcp.py /home/ccf2012/Downloads/ -d /home/ccf2012/emby/
电影和剧集的处理,是不一样的,如果你确认一个目录是电影或剧集,可以使用–movie 和 --tv 指定:
python3 torcp.py /home/ccf2012/Downloads/RSSMovie/ -d /home/ccf2012/emby/ --movie
如果想单独处理单个目录,可使用 -s 指定,例如:
python3 torcp.py /home/ccf2012/Downloads/权力的游戏.第1-8季.Game.Of.Thrones.S01-S08.1080p.Blu-Ray.AC3.x265.10bit-Yumi -d /home/ccf2012/emby/ -s --tv
–extract-bdmv 和 --full-bdmv,BDMV的处理
特别说一下对BDMV的处理:
1.如果什么参数都不加,在碰到含有 BDMV 目录和 .iso 文件时,将会跳过。
python3 torcp.py /volume1/video/emby/test -d /volume1/video/emby/testdir
2.–extract-bdmv 参数,可能最适合 Emby 或 Kodi 的用家,它将会从 BDMV 目录中挑出最大的几个 .m2ts 文件硬链出来,对于 movie/tv 都行。见下面的例子
with iso files copy to sepereate dir
python3 torcp.py /volume1/video/emby/test -d /volume1/video/emby/testdir --extract-bdmv
3.–full-bdmv 参数。使用这个参数会将整个 BDMV 文件夹和 .iso 文件都硬链出来,对于使用碟机播放的用家,就会有用。
python3 torcp.py /volume1/video/emby/test -d /volume1/video/emby/testdir --full-bdmv
–extract-bdmv 的例子
命令:
python torcp.py /share/CACHEDEV1_DATA/Video/QB/TV -d /share/CACHEDEV1_DATA/Video/emby/ --extract-bdmv
原目录:
[/share/CACHEDEV1_DATA/Video/QB/TV/Civilisations.S01.COMPLETE.BLURAY-VEXHD] # tree . -h -A -P *.m2ts
.
├── [4.0K] CIVILISATIONS_D1
│ └── [4.0K] BDMV
│ ├── [4.0K] BACKUP
│ │ ├── [4.0K] CLIPINF
│ │ └── [4.0K] PLAYLIST
│ ├── [4.0K] CLIPINF
│ ├── [4.0K] META
│ │ └── [4.0K] DL
│ ├── [4.0K] PLAYLIST
│ └── [4.0K] STREAM
│ ├── [ 14G] 00002.m2ts
│ ├── [ 14G] 00003.m2ts
│ ├── [ 14G] 00004.m2ts
│ ├── [1.1M] 00005.m2ts
│ ├── [ 12M] 00006.m2ts
│ ├── [ 94M] 00007.m2ts
│ ├── [ 94M] 00008.m2ts
│ ├── [1.9M] 00009.m2ts
│ ├── [1.5M] 00010.m2ts
│ └── [126K] 00011.m2ts
├── [4.0K] CIVILISATIONS_D2
│ └── [4.0K] BDMV
│ ├── [4.0K] BACKUP
│ │ ├── [4.0K] CLIPINF
│ │ └── [4.0K] PLAYLIST
│ ├── [4.0K] CLIPINF
│ ├── [4.0K] META
│ │ └── [4.0K] DL
│ ├── [4.0K] PLAYLIST
│ └── [4.0K] STREAM
│ ├── [ 14G] 00002.m2ts
│ ├── [ 14G] 00003.m2ts
│ ├── [ 14G] 00004.m2ts
│ ├── [1.1M] 00005.m2ts
│ ├── [ 12M] 00006.m2ts
│ ├── [ 94M] 00007.m2ts
│ ├── [ 94M] 00008.m2ts
│ ├── [1.9M] 00009.m2ts
│ ├── [1.5M] 00010.m2ts
│ └── [126K] 00011.m2ts
└── [4.0K] CIVILISATIONS_D3
└── [4.0K] BDMV
├── [4.0K] BACKUP
│ ├── [4.0K] CLIPINF
│ └── [4.0K] PLAYLIST
├── [4.0K] CLIPINF
├── [4.0K] META
│ └── [4.0K] DL
├── [4.0K] PLAYLIST
└── [4.0K] STREAM
├── [ 14G] 00002.m2ts
├── [ 14G] 00003.m2ts
├── [ 14G] 00004.m2ts
├── [1.1M] 00005.m2ts
├── [ 12M] 00006.m2ts
├── [ 94M] 00007.m2ts
├── [ 94M] 00008.m2ts
├── [1.9M] 00009.m2ts
├── [1.5M] 00010.m2ts
└── [126K] 00011.m2ts
执行后:
[/share/CACHEDEV1_DATA/Video/emby/BDMV_TV/Civilisations] # tree . -h -A
.
├── [4.0K] CIVILISATIONS_D1
│ ├── [ 14G] CIVILISATIONS_D1\ -\ 00002.m2ts
│ ├── [ 14G] CIVILISATIONS_D1\ -\ 00003.m2ts
│ └── [ 14G] CIVILISATIONS_D1\ -\ 00004.m2ts
├── [4.0K] CIVILISATIONS_D2
│ ├── [ 14G] CIVILISATIONS_D2\ -\ 00002.m2ts
│ ├── [ 14G] CIVILISATIONS_D2\ -\ 00003.m2ts
│ └── [ 14G] CIVILISATIONS_D2\ -\ 00004.m2ts
└── [4.0K] CIVILISATIONS_D3
├── [ 14G] CIVILISATIONS_D3\ -\ 00002.m2ts
├── [ 14G] CIVILISATIONS_D3\ -\ 00003.m2ts
└── [ 14G] CIVILISATIONS_D3\ -\ 00004.m2ts
–tmdb-api-key TMDb 查询
1.通过The Movie Database (TMDb) API 查询,得到确切的tmdbid, 确保生成的文件夹可被刮削
2.可选 --tmdb-lang 参数,默认是 zh-CN
3.查询不到的文件,将会被 链 或 移 到目标目录下 TMDbNotFound 目录中
python3 torcp.py /home/test/ -d /home/test/result3/ --tmdb-api-key='your TMDb api key'
组合 --move-run 的例子
python3 torcp.py /home/test/ -d /home/test/result2/ --tmdb-api-key='your TMDb api key' --plex-bracket --move-run --dryrun
–lang 按语言分类
1.如果查出了TMDb id,那么可以将媒体按语言分类
2.–lang 后面以逗号分隔写所需要分出来的语言,其它的归到 others
3.如果写 --lang all 则所有语言都被分类
4.在TMDb 中,中文语言会是 zh 和 cn
python3 torcp.py /home/test/ -d /home/test/result3/ --tmdb-api-key='your TMDb api key' --lang zh,cn,en
–move-run 直接改名和移动
1.不作硬链,直接进行move和改名操作,用于对已经放在gd中的文件进行整理
2.-d 指定要搬移的目标位置,请自己把握不跨区
3.加了一个–sleep参数,可以每次操作搬移一个文件后暂停 SLEEP 秒,此参数仅在 --move-run 时有效
4.由于这样的操作不可逆,请一定先作 --dry-run 确认后才执行
python3 torcp.py /home/test/ -d /home/test/result5/ --move-run --dryrun
DeleteEmptyFolders.py 清除空目录
1.在作了上面 --move-run 操作后,原目录将会剩留大量 空的,或仅包含 .jpg, .nfo 这类小文件的目录
2.除了默认的 .mkv, .mp4, .ts, .iso 之外,使用与 torcp.py 相同的 --keep-ext 来表示那些已经 不再包含这些扩展名文件 的目录,将被删除
3.使用 --dryrun 先看下将会发生什么
python3 DeleteEmptyFolders.py /home/test/ -e srt,ass --dryrun
评论区