一行代码修复群晖VideoStation刮削器的评分BUG

发布于:6/5/2023, 5:09:14 PM @孙博
技术分享 | 群晖,VideoStation,刮削器,评分
许可协议:署名-非商业性使用(by-nc)

群晖自带的 Video Station 是很多人建立私有影院的绝佳选择,其自带的刮削器效果强大,只要按照他规定的命名方式定义视频文件的名称,刮削器就可以智能的利用 The Movie DB 开放的API将影视信息保存到本机。

尽管绝大部分的视频都能够正常识别及保存,对于电视剧、动画等分季多集的作品来说,有时候会遇到作品详情能正常保存,但分级数据却都为空,这是为什么?

经过调查发现,对于不能正常保存的视频都有一个共同的现象——就是他们的评分数据都不规范。正常的评分数据是一个不超过1位的小数,但这些视频往往小数位数都会超过1位。比如我们拉取动画片《賭ケグルイ》的评分时,其用户评分(vote_average)返回的就是“8.251”。而 Video Station 处理这样的数据时,就会提示“数据格式不正确”,继而无法保存,除非手动将“8.251”改为“8.2”这样的1位小数格式。

尽管我们可以通过手动的方式,将剧集数据一集一集的手动修复,但对于程序员来说,能让电脑自己做的事情为什么还要我们亲自动手?况且如果是修复了自动刮削的脚本,我们也不用再操作修复了。

既然提到是修改代码,就已经默认了你是一个具有良好编程经验的程序员,且可以熟练的使用Linux命令,至少可以在搜索引擎的帮助下,可以很快的找到解决问题的方案。因此,我不会给出如何通过XShell或类似工具连接到群晖服务器的基础教程,这也是因为如果你不具备这些最简单的技巧,你可能会把只有刮削器有故障的 Video Station 变得整个都无法使用。


我们需要做什么?

将刮削器获取到的TheMovieDB的接口数据做修整,将 vote_average 字段的值强制改为 1位小数。

下面是代码,请参考。

声明:本方法仅针对 3.0.5-2503 版本的 VideoStation 生效,其他版本由于我均未做过尝试,故不会对结果负责,有经验的程序员应该可以根据我的思路轻松确认及解决。

# 进入 Video Station 的刮削器插件目录,根据 VideoStation 安装目录的不同,volume1 可能在你的机器上应该变为其他分卷。
cd /volume1/@appstore/VideoStation/plugins/syno_themoviedb
# 备份检索方法的代码(自信不需要做备份和恢复的小伙伴可以忽略)
cp search.py search.py.bak
# 核心改动! 将文件中取评分的逻辑加上保存为1位小数的逻辑
sed -i 's/tv_data\['\''vote_average'\''\]/round(tv_data\['\''vote_average'\''\], 1)/g' search.py