本帖最后由 z377409011 于 2021-4-7 15:31 编辑
一、前言 方便qBittorrent下载完成后做种和刮削,搞了个脚本来自动按分类文件,创建视频文件硬链接。主要为了解决*.nfo文件和海报图片不知不觉中被修改,影响做种,复制一份又占空间,又不想搞其他的软件来辅种,直接对所有文件创建软连接,虽说TMM刮削时可以生成movie.nfo文件,但时常有.nfo文件和海报图片被修改影响做种的情况发生。所以搞了个脚本,自动按种子名创建文件名,自动对常见格式视频文件创建硬链接(不占用空间),自动复制(非硬链接,方便修改)其他文件到目录,这样就可以在基本不占用太多额外空间的情况下,拥有两份相对独立的数据,就可以随意刮削,修改替换海报、修改nfo文件了。二、脚本 - #!/bin/bash
- set -x
- #qBittorrent命令参数:
- #qBittorrent %N:Torrent 名称
- #qBittorrent %F:内容路径(与多文件 torrent 的根目录相同)
- #qBittorrent %L:分类
- #qBittorrent %G:标签(以逗号分隔)
- #qBittorrent %R:根目录(第一个 torrent 的子目录路径)
- #qBittorrent %D:保存路径
- #qBittorrent %C:文件数
- #qBittorrent %Z:Torrent 大小(字节)
- #qBittorrent %T:当前 tracker
- #qBittorrent %I:哈希值
- #在qBittorrent分别按如上顺序键入参数,ex:/downloads/qbittorrent.sh "%N" "%F" "%L"
- #设置想保存的位置
- your_path=/downloads/complete
- #获取种子名称
- torrent_name="$1"
- #获取种子路径
- torrent_path="$2"
- #获取种子分类
- torrent_category="$3"
- #根据分类、种子路径类型创建保存路径
- link_path_directory="$your_path"/"$3"
- link_path_file="$your_path"/"$3"/"$1"
- tmp_path="$your_path"/"$3"/tempfile
- #清空临时目录
- rm -rf "$tmp_path"/
- #只对电影和电视剧分类的常见电影文件创建软连接
- if [[ "$torrent_category" == "电影" || "$torrent_category" == "电视剧" || "$torrent_category" == "tmp" ]]; then
- #判断种子路径是目录还是文件夹
- if [ -d "$torrent_path" ]; then
- mkdir -p "$tmp_path"
- cp -lR "$torrent_path"/ "$tmp_path"/
- find "$tmp_path"/ -type f -regextype posix-extended -regex ".*\.(mp4|avi|mkv|rmvb|mov|rm|mpeg)" -print0 | xargs -0 -i rm -f {}
- cp -R "$tmp_path"/* "$link_path_directory"/
- cp -lnR "$torrent_path"/ "$link_path_directory"/
- rm -rf "$tmp_path"/
- #删除链接的*.nfo元数据文件
- #find "$link_path_file" -regextype posix-extended -regex ".*\.(nfo)" -print0 | xargs -0 -i rm {}
- #仅链接指定类型文件,默认是链接全部文件
- #find "$torrent_path" -regextype posix-extended -regex ".*\.(mp4|avi|mkv|rmvb|mov|rm|mpeg|ass|srt|nfo)" -print0 | xargs -0 -i cp -lR {} "$link_path_directory"
- elif [ -f "$torrent_path" ]; then
- #创建链接文件夹
- mkdir -p "$link_path_file"/
- #仅链接指定类型文件,默认是链接全部文件
- #find "$torrent_path" -regextype posix-extended -regex ".*\.(p4|avi|mkv|rmvb|mov|rm|mpeg|ass|srt|nfo)" -print0 | xargs -0 -i cp -lR {} "$link_path_file"
- cp -lR "$torrent_path" "$link_path_file"/
- fi
- fi
复制代码三、使用方法 1)将脚本放到某个位置(如/downloads/qbittorrent.sh)后,在ssh中增加脚本执行权限:chmod +x /downloads/qbittorrent.sh
2)在qBittorrent设置→下载中勾选“Torrent 完成时运行外部程序”并输入:“/downloads/qbittorrent.sh "%N" "%F" "%L"”(不含前后中文引号)后保存,注意参数顺序。
3)在qBittorrent中按需添加分类,分类需与脚本对应,每次添加任务时,注意设置分类,我的tmp是大姐姐资源
添加任务时,最好就直接设置好分类:
4)刮削和jellyfin、emby等目录,直接添加链接后的分类目录(如volume1/downloads/qbittorrent/complete/电影)即可。 四、保存位置 your_path就是你希望链接文件保存的位置,可以按自己的喜好设置,最好使用绝对路径。注意docker中的路径和宿主的路径区别。例如希望链接文件到downloads/qbittorrent/complete中,如果我用的是插件版的qBittorrent,downloads位于储存池1中,则应该设置your_path=/volume1/downloads/qbittorrent/complete;如果使用的是docker版qBittorrent,并把我的下载目录(如:/volume1/downloads/qbittorrent)映射到容器/download,那么your_path=/downloads/complete即可。
五、效果展示
*.mkv文件均为硬链接文件(不占用空间),其他文件均为文件(独立存在,修改不影响做种)。 六、免责申明 直接使用脚本操作文件有丢失文件和损坏文件的风险,使用脚本导致的各种问题,后果自负,请酌情使用。水平有限,基本满足当前的使用需求,希望有大神能继续完善更新。
|