NAS全功能全自动自动影音工具: video_tools
创作声明:本工具基于作者实际需求制作;本工具未经充分验证,尚存未知bug
功能介绍:
以豆瓣为入口,添加电影
根据豆瓣添加的电影智能选择电影下载,并支持追剧
电影信息搜刮及nfo文件创建,可在Jellyfin等软件中形成海报墙
电影字幕下载。由于字幕库网站规则变化,此功能暂时不能用,需要重新优化
电影下载完成后,通过邮件进行通知
说明及需求:
本工具基于BT网站进行制作,不需要PT账号。很显然,作者没有PT账
本工具不需要安装Jacket等种子搜索软件。可能作者对这些软件使用不善,发现其对中文的支持不是特别好
本工具不支持动漫。由于作者不看动漫,所以没有针对动漫进行程序编制和优化
本工具无任何图像化界面,需要简单配置一下初始化文件
本工具基于dockers部署,所以需要安装docker
本工具基于Qbittorrent进行下载,所以需要安装Qbittorrent。不影响Qbittorrent下载其它资源
本工具支持邮件通知,所以根据需求添加邮箱
各功能简介:
1. 豆瓣添加电影
登录豆瓣,选取想要下载的电影,点击电影页面底部的”想看“按钮并确认。注意不要勾选“仅自己可见”
配置文件中的个人兴趣RSS可以在豆瓣个人主页中右侧底部点击文字“feed: rss 2.0",然后新打开页面地址栏中的地址就是个人兴趣rss的链接,格式为https://www.douban.com/feed/people/yourID/interests
2. 电影下载
国内电影及日韩电影通过BT之家进行下载
欧美电影通过海盗湾进行下载
由于BT站内规则变化,以及种子文件不规范,可能无法下载或者下载错误。大家如果有好的BT网站,尤其是支持中文的,不需要验证码的,请推荐
电影下载仅支持web,br和bd
分辨率支持2016p,1080p和720p,可以在配置文件配置权重。默认权重分别是3,2,1。3为权重最大
其中一条规则为:超过4小时,且下载速度小于预设值,且下载完成百分比小于预设值,则重新下载,以减少种子活跃度的影响。但是对于老电影,肯定做种的人比较少
Downloads文件夹为QBittorrent下载路径,电影下载完成后会硬链接到Videos文件夹
电影通过QBittorrent进行下载。任意版本皆可。此工具不影响QBittorrent的使用,仍可以通过此软件下载其它资源
没有计划增加软件交互界面。可以通过修改”/config“文件夹中的”data.csv“文件进行修改。修改之后还需保存为csv格式的文件
3. 电影信息搜刮
电影搜刮基于豆瓣的电影信息
电视剧搜刮是基于tmdb。相对来说,tmdb的电视剧信息更全面。本工具会修改容器本身的host文件避免DNS污染,所以正常来说,tmdb是可以访问的。建议在配置文件添加tmdb的token以搜索电视剧信息。至于tmdb的token申请,可以自行搜索
搜刮完电影信息,就可以在jellyfin/emby/kodi中看到海报墙了
4. 字幕下载
字幕下载基于字幕库网站
通常会下载两个字幕文件,一个是默认的字幕,文件带"default",一个为备选的字幕,不带"default"。如果默认字幕有问题,可以在视频软件中选择备选字幕
只会下载”ass“和"srt"格式的字幕,其它格式如"sup"格式不会下载
由于字幕库现在需要验证码登陆,暂时取消此功能,后续优化
安装及设置:
1. 文件夹设置:
存储电影的文件一中添加两个子文件夹,Videos文件夹作为jellyfin/emby的媒体库文件夹;Downloads作为QBittorrent的下载文件夹,在QB中设置
2. Docker容器建立
下载docker镜像文件:yixinrushi/video_tools. 其中tag带slim的镜像不带字幕搜索功能。其中tag带full的镜像带字幕搜索功能,由于字幕库规则变化,镜像已经撤下
点击镜像并安装,映射“/config”到文件夹二(配置文件目录),映射“/data”到文件夹一(电影存储目录)。其它不需要任何设置
3. 配置文件
第一次运行会在配置文件夹中创建配置文件“config.ini”,然后容器停止运行
用记事本等文本软件打开配置文件并修改:
rss_url:必须,豆瓣个人兴趣页,格式为https://www.douban.com/feed/people/yourID/interests,
最多可以放3个链接,以逗号分隔。意味着可以多人添加电影
url_qb: 必须, Qbittorrent的web界面地址,格式为http://192.168.2.50:8989
user_qb: 必须,Qbittorrent登录用户名
passwd_qb: 必须,Qbittorrent登录密码
邮箱及邮箱token等,可自行添加。可有可无
video_weight:电影分辨率选择权重。3最高。可有可无
download_speed_flag及download_percentage_flag:超过4小时,平均下载速度小于这里的设定值,且完成度小于这里的设定值,则重新搜索新的种子进行下载。可有可无
interval:电影搜索间隔时间,必须整数,最短为2小时,最大为24小时。默认4小时,可有可无
tmdb_key: 电视剧信息搜刮基于TMDB,所以最好能够注册TMDB并填写token。可有可无
修改完成配置文件,重新启动docker,就可万事大吉
后续版本计划
修改bug
优化代码。由于本作者初学python,所以代码整体架构需要优化
重新优化字幕下载代码
增加更多的BT网站,如YTS。待定
集成QBittorrent到镜像。待定
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~


校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
到底是看剧还是折腾
校验提示文案
校验提示文案
校验提示文案
注意,带字幕镜像的初始化文件和不带字幕镜像的初始化文件不同
校验提示文案
校验提示文案
校验提示文案
校验提示文案
因为PT确实对于下载电影来说很友好。
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
2024/2/26 22:49:47 File "/media_flow/main.py", line 495, in get_video_info
2024/2/26 22:49:47 get_video_info()
2024/2/26 22:49:47 File "/media_flow/main.py", line 1200, in run_media
2024/2/26 22:49:47 run_media()
2024/2/26 22:49:47 File "/media_flow/main.py", line 1443, in
2024/2/26 22:49:47 Traceback (most recent call last):
2024/2/26 22:49:45 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd7 in position 0: invalid continuation byte
2024/2/26 22:49:45 (result, consumed) = self._buffer_decode(data, self.errors, final)
2024/2/26 22:49:45 File "/usr/local/lib/python3.10/codecs.py", line 322, in decode
2024/2/26 22:49:45 for r in reader:
校验提示文案
校验提示文案
校验提示文案
if epi_status[episode_no - 1] != 0:
IndexError: list index out of range
Traceback (most recent call last):
File "/media_flow/main.py", line 1443, in
run_media()
File "/media_flow/main.py", line 1255, in run_media
epi_states, c[9] = download_video(c[0], c[1], c[2], epi_states, c[7], c[9])
File "/media_flow/main.py", line 558, in download_video
epi_status, dl_links = get_tv_tpb(title, o_title, season, epi_status, video_folder, dl_links)
File "/media_flow/main.py", line 897, in get_tv_tpb
ok_flag = download_video_qb(title, epi_status, epi_dl_link, folder)
File "/media_flow/main.py", line 960, in download_video_qb
dl_flag = handle_torrent_content(video_title, epi_status, tags)
File "/media_flow/main.py", line 1029, in handle_torrent_content
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
added_date = datetime.datetime.strptime(added_dates[i], gmt_format) + datetime.timedelta(hours=8)
if added_date.date() == datetime.datetime.today().date():
校验提示文案
好多人都在问重启的问题,
我的也是一样的,docker一运行就直接重启了。修改配置之后还是不停的重启。没有任何log信息。容器也进不去。
给个源码地址,让别人给看看什么问题。
或者哪怕把你用的哪些bt网站说明一下也行啊。
校验提示文案
Traceback (most recent call last):
File "/media_flow/main.py", line 1443, in
run_media()
File "/media_flow/main.py", line 1255, in run_media
epi_states, c[9] = download_video(c[0], c[1], c[2], epi_states, c[7], c[9])
File "/media_flow/main.py", line 552, in download_video
epi_status, dl_links = get_tv_btzj(title, epi_status, video_folder, dl_links)
File "/media_flow/main.py", line 761, in get_tv_btzj
ok_flag = download_video_qb(title, epi_status, torrent_link, folder)
File "/media_flow/main.py", line 960, in download_video_qb
dl_flag = handle_torrent_content(video_title, epi_status, tags)
File "/media_flow/main.py", line 1029, in handle_torrent_content
if epi_status[episode_no - 1] != 0:
IndexError: list index out of range
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案