宅家有N种可能,如何让学习成为一种可能?关注#宅家学习技巧#,原来,在家也能高效学习和办公!>活动详情戳这里< 分享优质学习资源/经验/技巧,赢效率好物!
很多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放到了百度盘上,大家直接下载并放到指定位置就行了。链接: 百度网盘地址 。
命令行回到tinyMediaManager安装目录,我发现我拷贝到NAS共享目录里面的可执行文件没有执行权限,所以还要运行下面的命令修复一下权限。
chmod +x tinyMediaManagerCMD.sh
现在,所有安装工作就算完成了。
上面的安装方式实现了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参数的详细说明。或者直接在命令行下输入http://www.360doc.com/content/20/0314/16/tinyMediaManagerCMD.sh不加参数,也能显示help文档。
官方文档链接在此:Command Line Argumentsger,参数说明如下:
这点英文说明没什么难的。updateXXX命令是用来将电影资源加入tinyMediaManager的数据库,scrapeXXX命令是用来进行电影信息刮削的。具体含义自己理解吧,可以根据自己的需求组合。比如:
http://www.360doc.com/content/20/0314/16/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使用经验的人来说,实际操作起来还是会有很多问题。但是,我只能做到这些了。核心步骤如下:
上面是核心步骤,理解好了之后,具体内容都可以到相应章节里面寻找。如果有问题,就请教搜索引擎吧。