根据nfo文件信息刮削相关演员信息及图片
解决docker部署的emby服务无法正常刮削到视频演员信息问题(通过nastool可以正常刮削到视频信息)
- 建议使用linux环境或macOS环境进行执行(windows环境执行的数据结果在导入metadata中后可能会被识别成乱码).
- 受不同国家语言限制,部分刮削内容可能出现
"GBK"
异常提示,请使用MacOS
或者Linux
环境执行脚本即可.- 如果采用非批量的执行方式,即直接使用
scrape
模式进行刮削而没有先进行collect
模式进行元数据收集后再进行刮削. 该情况下为避免重名文件导致的跳过刮削, 请注释 scrape.py 文件中第70
行代码:
shutil.copy(__file_path, "complete/")
电视剧tvs 和 电影movies 的保存
.nfo
命名格式不一样。movies的.nfo
文件以电影名为前缀, tvs 统一以tvshow.nfo
命名
根据实际配置的
__output
路径自动生成.实际刮削后的演员信息和图片的存放路径.
自动生成.存放完成刮削后被转移过来的元数据信息.
自动生成.存放刮削过程中出现异常的元数据记录.
自动生成.存放脚本执行过程中产生的日志文件, 可通过配置进行修改.
主程序下各个脚本子程序代码.
- 演员信息刮削:https://developer.themoviedb.org/reference/person-details
- 图片统一前缀路径:https://www.themoviedb.org/t/p/original
- 环境:Python3.9
最低要求
Python3.8
,如果需要xml中生成standalone
参数则必须至少使用Python3.9
及以上版本
pip3 install requests
pip3 install os
pip3 install xml
pip3 install json
OR/或
pip3 install -r requirements.txt
参数说明
- __dir_path: 目标文件夹路径. 绝对路径.
- 例如电影存放于
./movies/
下,则该路径填写./movies
的完整路径 - 为了兼容
电视剧
中不刮削季
中的.nfo
内容,因此只刮削__dir_path
路径下一层文件夹及当前层下的.nfo
文件(兼容./movies 下同级存放的视频及.nfo文件)
- 例如电影存放于
- __output: 演员信息、图片输出路径. 绝对路径.
- __tmdb_token: TMDB 开发者API调用token
- __mode: 脚本执行模式, 可选参数. 命令行执行脚本使用
--mode collect
调用- scrape: 刮削模式.从扫描目录直接识别nfo文件并刮削元数据和图片到输出目录中
- collect: 转移模式.从扫描目录收集所有nfo文件并复制到输出目录中(不执行刮削操作)
- redo: 重做模式.执行正常刮削数据中出现的异常进行重新处理
- check: 检查模式.检查指定路径下的全部文件夹中演员元数据
person.nfo
和 演员图片folder.jpg
是否存在并分别记录到 no_nfo_tmdb_ids.txt 和 no_image_tmdb_ids.txt 日志文件中scan_path
扫描目录路径使用__output
路径
目录结构说明
-
./movies
- 流浪地球.mkv (不刮削)
- 流浪地球.nfo (刮削)
- 流浪地球2
- 流浪地球2.mkv (不刮削)
- 流浪地球2.nfo (刮削)
-
./tvs
- 三体
- tvshow.nfo (刮削)
- Season 1 (不刮削)
- 三体
参数
__mode
为可选参数,具体请参考参数说明
内容
- 修改
main.py
文件中if __name__ == '__main__':
方法中__dir_path
、__output
、__tmdb_token
、__mode
参数值 - 执行脚本
python3 main.py
注意参数
--dir_path
的值如果需要配置多个,请使用英文半角逗号拼接,不要有空格
python3 main.py --dir_path "example/movies","example/tvs" --output data/metadata/person --tmdb_token tmdb_token --mode collect
可以结合前两种执行方式使用
nohup python3 main.py > nohup.log 2>&1 & echo &! > run.pid
前置要求:需要先执行main.py脚本的"collect"模式收集nfo元数据文件
- 修改
multi_thread.py
文件中if __name__ == '__main__':
方法中__dir_path
、__output
、__tmdb_token
参数值 - 执行脚本
python3 multi_thread.py
注意参数
--dir_path
的值如果需要配置多个,请使用英文半角逗号拼接,不要有空格
python3 multi_thread.py --dir_path "example/movies","example/tvs" --output data/metadata/person --tmdb_token tmdb_token
可以结合前两种执行方式使用
nohup python3 multi_thread.py > nohup.log 2>&1 & echo &! > run.pid
- 运行提示
no module name requests
但是实际python环境中又安装了的:
- 查看当前执行的python版本:
python --version
- 例如
python3 --version
显示的是3.8,但是实际有3.9版本的环境,可以使用python3.9 -m pip install requests
进行指定python版本的依赖包安装