因为我在自己的媒体服务器里使用的都是 PT 站上的资源,而媒体服务器通常都要求文件名遵循一定的格式(比如 Jellyfin),所以需要重命名做种的文件。虽然我用的 qBittorrent 可以重命名文件并继续做种,但一个一个重命名实在麻烦,后面就通过 Bash 脚本来干这个事,批量将视频文件软链接到对应的媒体文件夹,这样就可以同时做种和提供媒体服务。
但由于 Bash 语言的局限,这个脚本的扩展性不太好,现在重新用 Python 写了一个专门批量重命名/链接/移动文件的 CLI 工具:batchlink。Python 自带电池,很多我需要的函数标准库里都有,所以实现起来很简单。
举一个我自己的例子:
batchlink -s \
-S "/srv/resources/Videos/Animation/死亡笔记/" \
-d "/srv/emby/Animation/Death Note: Desu nôto (2006)/Season 01/" \
'*.mkv' 'Death Note: Desu nôto S01E{num:02}.mkv'
-s
表示创建软链接;-S
指定源文件夹;-d
指定目标文件夹;第一个位置参数是一个 glob 通配符,用来筛选需要链接的文件;第二个位置参数是一个 Python f-string ,是创建链接名的模板。模板里的 {num:02}
会按字母表顺序被替换成从 1 开始的序号,还有一些其他的替换变量可以使用,比如从 0 开始的序号 i
。
希望有需求的 V 友可以尝试一下、提提意见:)
1
missqso 141 天前 via iPhone
自带电池啥意思
|
2
jaxvanyang OP @missqso batteries included philosophy: https://peps.python.org/pep-0206/#batteries-included-philosophy
Python 标准库的设计理念,即在标准库里提供大量实用函数,使大部分功能不需要自己实现或导入外部库,像是买遥控器附赠电池,开箱即用。比如标准库提供了 argparse 模块来做命令行参数解析,就不用自己实现参数检查、帮助信息排版之类的功能,只要使用对应的接口就行。 |
3
txhwind 140 天前
我感觉这种重命名需求还是比较个性化的,源代码用不了几行,不如自己写
|
4
jaxvanyang OP @txhwind 确实,自己写也很简单,这个也只考虑了我自己的需求,但扩展也不难
|