解决问题
Plex对中文电影的支持不算友好,Plex加入本地影音库后,媒体库海报墙显示的很完整,但是电影、剧集等的排列顺序是错乱的,不符合国人的使用习惯。如果可以利用首字的汉语拼音顺序来排列的话,使用体验就能得到很大的提升。当媒体库中有很多电影和剧集的时候也可以利用拼音首字来进行检索。另一个问题是电影墙的电影/剧集类型有英文有中文,比较错乱。
那么能不能让电影按照拼音顺序排列呢?为解决这个问题,可以利用Python脚本插件自动化运行,运行之后就会把电影信息中的排序名称转换为拼音,电影就会按照拼音的顺序排列了,同时也可以将电影类型统一为中文。
本文介绍在威联通QNAP NAS中如何实现Plex本地中文化。每天凌晨4点定时执行脚本任务,在加入新影片后继续保持中文化。
前提条件
-
威联通安装了Plex Media Server。可以在Plex官网下载最新版本,在威联通的App Center中手动上传安装。 https://www.plex.tv/media-server-downloads/
-
威联通安装了Python。在威联通的App Center中手动上传安装。Python3.10:https://www.naslab.club/613.html
-
安装了pip(威联通安装完Python版本后自动安装)
-
威联通Python3系统环境变量采用软链接方式实现,
/usr/local/bin/
为系统路径。具体为:ln -s /share/CACHEDEV1_DATA/.qpkg/Python3/python3/bin/python3 /usr/local/bin/python3
ln -s /share/CACHEDEV1_DATA/.qpkg/Python3/python3/bin/python3.10 /usr/local/bin/python3.10
ln -s /share/CACHEDEV1_DATA/.qpkg/Python3/python3/bin/pip /usr/local/bin/pip
ln -s /share/CACHEDEV1_DATA/.qpkg/Python3/python3/bin/pip3 /usr/local/bin/pip3
ln -s /share/CACHEDEV1_DATA/.qpkg/Python3/python3/bin/pip3.10 /usr/local/bin/pip3.10
使用步骤
-
从仓库https://github.com/anooki-c/plexpy下载脚本。
原脚本Github地址:https://github.com/sqkkyzx/plex_localization_zhcn
原脚本需要手动选择媒体库,这个脚本改成了遍历所有的媒体库,其他无变化
-
将脚本中的plexpy.py和config.ini文件解压至威联通的任意位置,只要plex可以访问即可。
我放在了
/share/homes/admin/plexpy-master/
目录下。 -
获取plex的token
- 通过浏览器打开:https://app.plex.tv/,登录plex网页端
- 按F12进入开发者模式,通过F5刷新网页,输入账号和密码登录plex
- 选择网络(Network),键入
X-Plex-Token
进行筛选,就可以看到所需的Token了
-
在config.ini文件中配置plex的的host和token。
-
安装必要的python包,保险起见configparser、pypinyin、requests、pathlib这几个依赖包都装一下。
pip install pypinyin
-
威联通设置计划任务,:
使用
crontab -l
查看当前 qnap 中已经存在的定时任务。在大多数桌面版 Linux 中会使用crontab -e
来编辑 crontab 配置,但是注意不要在威联通中使用这种方法,威联通在重启的时候会覆盖使用这种方式写入的配置。如果想要永久的保存配置,应该使用-
vim /etc/config/crontab
-
写入配置
0 4 * * * /share/CACHEDEV1_DATA/.qpkg/Python3/python3/bin/python3 -u /share/homes/admin/Scripts/plexpy-master/plexpy.py >> /share/homes/admin/Scripts/plexpy-master/syslog/result_$(date +"%Y%m%d").log 2>&1 &
或者直接使用echo,将命令放在双引号中
echo "0 4 * * * /share/CACHEDEV1_DATA/.qpkg/Python3/python3/bin/python3 -u /share/homes/admin/Scripts/plexpy-master/plexpy.py >> /share/homes/admin/Scripts/plexpy-master/syslog/result_$(date +"%Y%m%d").log 2>&1 &" >> /etc/config/crontab
code description 0 4 * * *
表示每天凌晨4点执行定时任务 >>
为重定向追加输出log到现有result.log文件;如果写>重定向的话,则是清空原文件result.log,再输入 result_$(date +"%Y%m%d").log
记录日期的log文件格式,使用$(date +“%Y%m%d”),输出为"result_yyyymmdd.log",如:result_20230815.log python3 -u
这个非常重要, 由于python有缓冲机制,print不一定会立刻输出到文件!!! 加了-u可以让stdout等强制无缓冲, 立刻输出到文件! 2>&1
将错误重定向到标准输出中(意思是将不同等级的输出都显示在一个文件里) 最后一个 &
表明此python在后台运行 -
设置定时任务生效并重启 crontab
crontab /etc/config/crontab && /etc/init.d/crond.sh restart
-
-
可以通过计划任务的执行结果看是否设置成功
计划任务输出结果查看方式
在/share/homes/admin/Scripts/plexpy-master/syslog/result_年月日.log
中查看结果
下面是我手动执行的3次结果,第1次没有配置config.ini,后面成功执行了2次。