APP下载 微博 微信

Hao4K影音


[经验心得] 独家首创,tinyMediaManager自动刮削电影,在NAS上打造完美电影墙

[复制链接]

发表于 2020年03月08日 21:54 135110 4 来源:媒体存储> 经验心得 回帖奖励 |倒序浏览 |

Jiong 帖主

2020-3-8 21:54

前言很多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共享目录里面的可执行文件没有执行权限,所以还要运行下面的命令修复一下权限。

现在,所有安装工作就算完成了。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:5900romancin/tinymediamanager:latestdocker起来后,可以通过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/Madridromancin/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命令是用来进行电影信息刮削的。具体含义自己理解吧,可以根据自己的需求组合。比如:就是添加新电影,并刮削电影信息。
定时任务那么,tinyMediaManager的运行环境已经搭建好了,相关配置也完成了,下面就是如何实现自动运行了。理想的自动运行应该是每当媒体库里添加了新的文件,就开启命令行tinyMediaManager进行刮削。这个并不是不能实现,但是有点麻烦,我暂时懒得弄。所以,先介绍一种相对简单粗暴的自动刮削方法。那就是借助于Linux的crontab工具开启周期性定时任务。举例来说,就是我可以利用crontab,定时在每天凌晨1点的时候开启tinyMediaManager的刮削任务。一旦设定好定时任务,全程不需要人工操作,这样就算我们每天下载新的电影资源,第二天醒来后,信息刮削就已经完成了。QNAP和群晖都是Linux系统,也都支持crontab。我这里以QNAP为例,相关操作可以参考Add_items_to_crontab 。群晖的话要在root下进行。

在tinyMediaManager的安装目录下创建一个shell脚本文件,用于封装命令和参数,命名为tinyMediaManager_daily.sh。脚本的内容为:脚本路径最好写绝对路径,后面的参数根据自己的情况调整,上面的参数为全扫描、全刮削。

保存好脚本之后,用下面的命令加上可执行权限:

为了将上面的脚本定时周期启动,需要在下面的文件中写入相关内容/etc/config/crontab。
写入内容的格式为:
minute hour day month week command
具体如何写大家自行百度吧。每天凌晨1点启动任务的写法为:将上面的内容写入/etc/config/crontab,注意/etc/config/crontab中本来就有QNAP系统自己设定的计划任务,千万不要弄乱了,不放心就备份一个。

执行下面命令让计划任务生效以上,就可以完成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开源项目。但是,在我实际使用中,遇到的最大的问题就是网络超时。这回让每次刮削任务都不能完整地完成,我也只能多次开启任务尝试。若不是网络问题,这个方案将会很完美。祝大家玩的愉快。未经授权,不得转载
回复

使用道具 举报

全部回复4

zeusility 2

2021-12-13 16:16

文中的链接没有整上,无法获取软件
回复 支持 反对

使用道具 举报

Simon3748 3

2021-12-26 12:34

文中的鏈接沒有作用,無法取得文件
回复 支持 反对

使用道具 举报

garrywu 4

2023-1-8 15:56

搜刮不成功
回复 支持 反对

使用道具 举报

大H牛蹄 5

2023-3-28 19:51

大神了,要慢慢研究研究才动手
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

返回列表 本版积分规则



绑定微信 + 关注公众号,第一时间获得消息通知!
:
新手玩家
:
介绍未填写

主题

帖子

积分34

图文推荐

  • 小量的影视、音频存储方案之我见

    最近,一块使用了近十年的4T移动硬盘挂了(曾被摔

  • 极空间挂载阿里云、115、百度、夸克等20个

    理论上使用如下教实现程极空间可以挂载阿里云网盘

  • 红米AC2100刷Padavan固件超全详细教程

    刷机全过程图解 准备工作这部分,网上教程几乎都

  • 科普:什么是硬盘MTBF?那MTTF、MTTD、MTTR

    买固态硬盘,我们会比较关注颗粒寿命,机械硬盘虽

  • 群辉加USB3.0千兆网卡成功,教程分享

    具体安装替换参考此贴https://www.hao4k.cn/threa

  • 机械硬盘该怎么选?教你最全机械硬盘选购指

    机械硬盘该怎么选?教你最全机械硬盘选购指南

  • 搭建私有云—华芸AS6404T NAS+华硕 AC68U体

    帮朋友搭建私有云—华芸AS6404T NAS+华硕 AC68U体

  • 分享蜗牛星际A\B\C\D款机箱和功能分别有

    历经一个月研究:蜗牛星际ABCD款机箱和功能分

  • NAS都有哪些品牌?带你了解几大NAS名牌介绍

    NAS都有哪些品牌?带你了解几大NAS名牌介绍 前

  • 利用NAS建立DNS缓存服务器Pi-hole

    在家用环境中利用NAS建立DNS缓存服务器 1 前

  • Hao4K影音app客户端下载