独家首创,tinyMediaManager自动刮削电影,在NAS上打造完美电影墙
前言
很多NAS用户都喜欢在硬盘上存储许多电影,然后使用Jellyfin、PLEX、Emby、Kodi等进行播放。为了让这些电影呈现完美的展示形态,刮削电影信息、下载海报图片就很关键了。为了完成这个目的,对墙内用户来说,tinyMediaManager绝对是一款电影信息刮削神器。通常的做法是,在电脑上安装tinyMediaManager并运行,然后手动刮削NAS上存储的电影资源。对于完美党来说,这样做虽然可以基本实现好看的电影墙,但是软件是装在PC端总觉得不舒服,每次下载了新的电影还要主动去手动刮削。那么,有没有一种方法可以把tinyMediaManager直接运行在群晖或者QNAP系统上,并实现电影信息自动刮削呢?我研究了一个晚上,发现实现这个目标并没有想象中那么困难。下面,我就来详细描述一下我的解决思路。另外需要提前说明的是,我的设备是QNAP TS-453B mini,其他X86平台NAS理论上也适用。
劝退警告!!!我担心大家看不懂或者懒得看,可以直接看后面的小白教程。
劝退警告!!!本文核心步骤不涉及代码修改,全是简单的命令。
劝退警告!!!但是还是再发一次。
直接安装
tinyMediaManager作为一款电影信息刮削神器,目前支持Linux、Windows、Mac三个平台。而tinyMediaManager是基于Java开发的,需要Java 1.8以上版本的运行时环境支持。我们常见的家用NAS几乎都是基于Linux的,在上面安装Java运行时也不是什么难事,在QNAP和群晖系统的应用商店里面,都是直接可以安装Java 8的。所以,我们所要做的第一步,就是去NAS系统的应用商店里面安装Java 8。对于QNAP系统,在应用商店的开发者工具里面找到JRE并安装。
对于群晖DSM系统,在套件中心搜索Java,找到Java 8安装。
安装了Java 8的NAS系统,就具备了运行tinyMediaManager的最基本条件。但是,平时我们使用tinyMediaManager时,是通过GUI界面进行操作的,而QNAP或者群晖等NAS系统,都是通过web方式进行操作,并不能提供桌面运行环境。
其实,和大多数开源软件一样,tinyMediaManager除了GUI界面操作,也可以支持Command Line,也就是命令行操作。这样,就可以通过在命令行中输入命令加上合适的参数,实现电影信息的刮削。
理论上是可行的,Java 8的环境也具备,所以去tinyMediaManager的官网中:点我直达,下载最新的Linux版本tinyMediaManager试试吧。当前最新的是Linux平台tinyMediaManager是这个文件:tmm_3.1.3_linux.tar.gz。下面的操作默认X86平台的都是64位系统。
下载完成后,把软件解压到NAS的共享目录中去。这样,tinyMediaManager的安装工作就完成了一大半了。
现在还有最后一个问题需要解决。通过阅读tinyMediaManager的官方文档可以知道,在Linux上运行tinyMediaManager除了Java运行环境,还需要libmediainfo这个第三方native库。但是NAS系统一般没有像是apt这样的软件包管理软件,如何下载这个libmediainfo呢。我去谷歌上搜索了一下,很偶然的机会,我发现了qnapclub里面有一个名为Media Info CLI (Shared)的软件包。地址在这里:点我直达。qnapclub是QNAP的第三方软件源,上面下载的qpkg包可以直接安装在QNAP系统上。主流X86平台对应的就是TS-NASX86_64这个版本。
在QNAP里面离线安装这个qpkg包,然后通过ssh连接到NAS终端,把我需要的so找到。
QNAP系统中,软件包的安装位置在硬盘的.qpkg隐藏目录中。比如我把Media Info CLI 安装到了第一个硬盘,其安装位置就是/share/CACHEDEV1_DATA/.qpkg。继续寻找,在/share/CACHEDEV1_DATA/.qpkg/MediaInfoShared/lib中可以找到许多so文件,我们需要的是以下两个:libmediainfo.so.0.0.0、libzen.so.0.0.0。
命令行中把他们拷贝出来,修改名字为libmediainfo.so和libzen.so,然后放到tinyMediaManager安装目录的native/linux-x64文件夹下面。为了方便大家使用我将这两个so放到了百度盘上,大家直接下载并放到指定位置就行了。链接: 百度网盘地址 提取码: 228u。
命令行回到tinyMediaManager安装目录,我发现我拷贝到NAS共享目录里面的可执行文件没有执行权限,所以还要运行下面的命令修复一下权限。
chmod +x tinyMediaManagerCMD.sh
现在,所有安装工作就算完成了。
Docker安装
上面的安装方式实现了tinyMediaManager在NAS系统上本地运行,但其实还可以通过docker的方式运行tinyMediaManager。群晖和QNAP都提供了在界面上运行docker的方法,但是习惯了命令行感觉不是很方便。即使在命令行下运行docker,NAS系统的Dcoker套件上还是可以看到运行状态的。
具体Docker的使用方法可以参考下面的链接:romancin/tinymediamanager-docker或者
dzhuang/tinymediamanager-docker (加了中文字体,解决GUI上中文字符显示问题)
基本的使用方法如下,部分路径需要根据自己的实际情况修改:
docker run -d —name=tinymediamanager
-v /share/Container/tinymediamanager/config:/config
-v /share/Container/tinymediamanager/media:/media
-e GROUP_ID=0 -e USER_ID=0 -e TZ=Europe/Madrid
-p 5800:5800
-p 5900:5900
romancin/tinymediamanager:latest
docker起来后,可以通过web页面进行GUI操作。
当然命令行操作也是可以实现的:
docker run —rm —name=tinymediamanagerscript
-v /share/Container/tinymediamanager/config:/config
-v /share/media:/media
-e GROUP_ID=0 -e USER_ID=0 -e TZ=Europe/Madrid
romancin/tinymediamanager:develop /config/tinyMediaManagerCMD.sh -updateMovies -scrapeNew
这条命令会启动一个容器,以命令行的方式进行电影信息刮削,完成后再把容器删除。自动化电影信息刮削也可以利用docker实现,不过我更喜欢原生的。
配置
我们在PC端通过GUI方式运行tinyMediaManager的时候,启动阶段会有向导,帮助我们进行一些基本配置。但是命令行下可没有向导,配置文件如何生成呢。我的办法很简单,先在Windows上装好tinyMediaManager,运行向导,生成配置文件,然后直接拷贝过来用。
tinyMediaManager配置向导运行的时候,主要是为电影和电视剧选择正确的刮削器。媒体库那边不用配置。语言就使用默认的英文,不要用中文,很多电影会刮削不到。下面的图是错的。
生成的配置文件在tinyMediaManager安装目录的data文件夹下,我们只需要拷贝movies.json、tmm.json、tvShows.json这三个文件即可。NAS上的tinyMediaManager安装目录没有data文件夹,需要自己创建一个。
当然,这样拷贝过来的文件是不能直接使用的,还需要打开文本编辑器,手动再加入几个配置。首先是打开movies.json,找到movieDataSource,添加NAS电影路径。
这个路径不是你从PC上看到的NAS电影目录的路径,是NAS系统自身的绝对路径,在NAS终端上可查。比如QNAP的路径如下图所示。
然后还有一个重要的配置,movies.json中找到artworkScrapers,设置为tmdb。我最开始的时候漏掉了这个设置,导致刮削出来只有movie.info,没有海报图片,最后看了一个多小时tinyMediaManager的源代码才发现是这个问题。本质上也说明我对tinyMediaManager的用法不够精通。
movies.json配置好后,tvShows.json同理,不再赘述。如果你是使用tinyMediaManager的老手,还可以进行更多配置。目前按照我的做法配置后,可以生成movie.info,可以生成电影海报。
另外,众所周知,最近大家使用tinyMediaManager经常遇到刮削不出信息来的情况,主要是相关网站受到DNS污染,需要手动设置hosts。在QNAP中或者说任意Linux系统中,需要修改/etc/hosts文件,添加一下内容即可:
13.224.161.90 api.themoviedb.org
运行
好了,折腾了半天,终于可以正常在命令行下运行tinyMediaManager。先看下官方文档,里面有命令行下运行tinyMediaManager参数的详细说明。或者直接在命令行下输入./tinyMediaManagerCMD.sh不加参数,也能显示help文档。
官方文档链接在此:Command Line Argumentsger,参数说明如下:
这点英文说明没什么难的。updateXXX命令是用来将电影资源加入tinyMediaManager的数据库,scrapeXXX命令是用来进行电影信息刮削的。具体含义自己理解吧,可以根据自己的需求组合。比如:
./tinyMediaManagerCMD.exe -updateMovies -scrapeNew
就是添加新电影,并刮削电影信息。
定时任务
那么,tinyMediaManager的运行环境已经搭建好了,相关配置也完成了,下面就是如何实现自动运行了。理想的自动运行应该是每当媒体库里添加了新的文件,就开启命令行tinyMediaManager进行刮削。这个并不是不能实现,但是有点麻烦,我暂时懒得弄。所以,先介绍一种相对简单粗暴的自动刮削方法。那就是借助于Linux的crontab工具开启周期性定时任务。举例来说,就是我可以利用crontab,定时在每天凌晨1点的时候开启tinyMediaManager的刮削任务。一旦设定好定时任务,全程不需要人工操作,这样就算我们每天下载新的电影资源,第二天醒来后,信息刮削就已经完成了。QNAP和群晖都是Linux系统,也都支持crontab。我这里以QNAP为例,相关操作可以参考Add_items_to_crontab 。群晖的话要在root下进行。
在tinyMediaManager的安装目录下创建一个shell脚本文件,用于封装命令和参数,命名为tinyMediaManager_daily.sh。脚本的内容为:
!/usr/bin/env bash
/share/CACHEDEV1_DATA/Multimedia/tmm_3.1.3_linux/tinyMediaManagerCMD.sh -update -scrapeAll
脚本路径最好写绝对路径,后面的参数根据自己的情况调整,上面的参数为全扫描、全刮削。
保存好脚本之后,用下面的命令加上可执行权限:
chmod +x tinyMediaManager_daily.sh
为了将上面的脚本定时周期启动,需要在下面的文件中写入相关内容/etc/config/crontab。
写入内容的格式为:
minute hour day month week command
具体如何写大家自行百度吧。每天凌晨1点启动任务的写法为:
0 1 * /share/CACHEDEV1_DATA/Multimedia/tmm_3.1.3_linux/tinyMediaManager_daily.sh
将上面的内容写入/etc/config/crontab,注意/etc/config/crontab中本来就有QNAP系统自己设定的计划任务,千万不要弄乱了,不放心就备份一个。
echo “0 1 * /share/CACHEDEV1_DATA/Multimedia/tmm_3.1.3_linux/tinyMediaManager_daily.sh” >> /etc/config/crontab
执行下面命令让计划任务生效
crontab /etc/config/crontab && /etc/init.d/crond.sh restart
以上,就可以完成tinyMediaManager定时自动刮削电影信息了。鉴于墙内网络问题,刮削任务可能会因为网络超时而意外终止。为了保证刮削的完整性,可以在计划任务中设置利用凌晨的时间段多次进行刮削。
小白教程
上面的内容除了包含实现自动刮削的具体步骤,还包含我解决问题的思路,混在一起对于很多人来说可能不太容易搞明白。为此,我将核心步骤抽离出来,重新复述一下。但是我仍然觉得对于没有任何Linux使用经验的人来说,实际操作起来还是会有很多问题。但是,我只能做到这些了。核心步骤如下:
1.NAS系统中安装Java 8运行环境。
2.tinyMediaManager官网下载Linux安装包,并解压到NAS共享目录。修复tinyMediaManagerCMD.sh的可执行权限。
3.下载我上传到百度盘的libmediainfo.so和libzen.so文件,并放到tinyMediaManager安装目录的native/linux-x64文件夹下面。
4.在Windows上安装tinyMediaManager文件,并运行向导,生成必要的配置文件movies.json、tmm.json、tvShows.json,拷贝到NAS的antinyMediaManager安装目录的data文件夹下。
5.修改movies.json和tvShows.json,添加媒体库路径,设置artworkScrapers为tmdb。
6.新建shell脚本,内容为你要定时执行的tinyMediaManager命令和参数。赋予脚本可执行权限。
7.将定时任务写入/etc/config/crontab,并重启crond让定时任务生效。建议每天设置多次刮削。
上面是核心步骤,理解好了之后,具体内容都可以到相应章节里面寻找。如果有问题,就请教搜索引擎吧。
总结
对于执着于追求完美电影墙的NAS用户来说,自动刮削应该是比较迫切的需求吧。本文所述的实现方式其实并没有太多难点,我也只是主要解决了tinyMediaManager在QNAP或者群晖上运行的问题。在解决问题的过程中,我也阅读了tinyMediaManager的源代码,代码风格不错,流程也很清晰,算是比较优秀的值得学习的Java开源项目。但是,在我实际使用中,遇到的最大的问题就是网络超时。这回让每次刮削任务都不能完整地完成,我也只能多次开启任务尝试。若不是网络问题,这个方案将会很完美。祝大家玩的愉快。
蓝色de蓝色
JAVA_HOME=/var/packages/Java8/target/j2sdk-image/jre
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
群晖的控制面板可以直接添加计划任务 /volume1/XXXXtinyMediaManager的文件位置XXXX/tinyMediaManagerCMD.sh -update -scrapeAll
校验提示文案
阿文菌
校验提示文案
怂系青年
校验提示文案
wangyi_ggy
校验提示文案
ScotGu
校验提示文案
Carl999
校验提示文案
詹岚丶
校验提示文案
dongsl2
校验提示文案
值友1017292483
校验提示文案
Baoziking
docker run -d --name=tinymediamanager -v /share/Container/tinymediamanager/config:/config -v /share/Container/tinymediamanager/media:/media -v /share/Container/tinymediamanager/data:/data -e GROUP_ID=0 -e USER_ID=0 -e TZ=Europe/Madrid -e ENABLE_CJK_FONT=1 -p 5801:5800 -p 5901:5900 romancin/tinymediamanager:latest
校验提示文案
fyy1863
校验提示文案
mail
校验提示文案
杰西cc
校验提示文案
橙品古董5金一件
校验提示文案
Sanyecao711
校验提示文案
木鱼茶茶
校验提示文案
廿San
校验提示文案
dihong
校验提示文案
坚决
校验提示文案
值友1829625465
校验提示文案
聚萃街的腰果
校验提示文案
聚萃街的腰果
校验提示文案
枫叶飘落
校验提示文案
mhmlion
校验提示文案
foxhound
校验提示文案
苍老师很伤心
校验提示文案
hy118
校验提示文案
nokia790
回到Kodi添加视频源,教程:
信息提供者那里选择“Local information only”,因为不用刮削了更新信息会很快。
校验提示文案
AyanamiNya
校验提示文案
Mengxi1
校验提示文案
法行天下
校验提示文案
值友1541569162
Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
校验提示文案
值友1541569162
校验提示文案
随便给个名字我
校验提示文案
Jack162
校验提示文案
Dinky
校验提示文案
值友3908355877
校验提示文案
Luis_G0
校验提示文案
值友6436573006
校验提示文案
值友1829625465
校验提示文案