宅家有N種可能,如何讓學(xué)習(xí)成為一種可能?關(guān)注#宅家學(xué)習(xí)技巧#,原來(lái),在家也能高效學(xué)習(xí)和辦公!>活動(dòng)詳情戳這里< 分享優(yōu)質(zhì)學(xué)習(xí)資源/經(jīng)驗(yàn)/技巧,贏效率好物!
很多NAS用戶(hù)都喜歡在硬盤(pán)上存儲(chǔ)許多電影,然后使用Jellyfin、PLEX、Emby、Kodi等進(jìn)行播放。為了讓這些電影呈現(xiàn)完美的展示形態(tài),刮削電影信息、下載海報(bào)圖片就很關(guān)鍵了。為了完成這個(gè)目的,對(duì)墻內(nèi)用戶(hù)來(lái)說(shuō),tinyMediaManager絕對(duì)是一款電影信息刮削神器。通常的做法是,在電腦上安裝tinyMediaManager并運(yùn)行,然后手動(dòng)刮削NAS上存儲(chǔ)的電影資源。對(duì)于完美黨來(lái)說(shuō),這樣做雖然可以基本實(shí)現(xiàn)好看的電影墻,但是軟件是裝在PC端總覺(jué)得不舒服,每次下載了新的電影還要主動(dòng)去手動(dòng)刮削。那么,有沒(méi)有一種方法可以把tinyMediaManager直接運(yùn)行在群暉或者QNAP系統(tǒng)上,并實(shí)現(xiàn)電影信息自動(dòng)刮削呢?我研究了一個(gè)晚上,發(fā)現(xiàn)實(shí)現(xiàn)這個(gè)目標(biāo)并沒(méi)有想象中那么困難。下面,我就來(lái)詳細(xì)描述一下我的解決思路。另外需要提前說(shuō)明的是,我的設(shè)備是QNAP TS-453B mini,其他X86平臺(tái)NAS理論上也適用。
勸退警告?。?!我擔(dān)心大家看不懂或者懶得看,可以直接看后面的小白教程。
勸退警告?。。?/strong>本文核心步驟不涉及代碼修改,全是簡(jiǎn)單的命令。
勸退警告?。?!但是還是再發(fā)一次。
tinyMediaManager作為一款電影信息刮削神器,目前支持Linux、Windows、Mac三個(gè)平臺(tái)。而tinyMediaManager是基于Java開(kāi)發(fā)的,需要Java 1.8以上版本的運(yùn)行時(shí)環(huán)境支持。我們常見(jiàn)的家用NAS幾乎都是基于Linux的,在上面安裝Java運(yùn)行時(shí)也不是什么難事,在QNAP和群暉系統(tǒng)的應(yīng)用商店里面,都是直接可以安裝Java 8的。所以,我們所要做的第一步,就是去NAS系統(tǒng)的應(yīng)用商店里面安裝Java 8。對(duì)于QNAP系統(tǒng),在應(yīng)用商店的開(kāi)發(fā)者工具里面找到JRE并安裝。
對(duì)于群暉DSM系統(tǒng),在套件中心搜索Java,找到Java 8安裝。
安裝了Java 8的NAS系統(tǒng),就具備了運(yùn)行tinyMediaManager的最基本條件。但是,平時(shí)我們使用tinyMediaManager時(shí),是通過(guò)GUI界面進(jìn)行操作的,而QNAP或者群暉等NAS系統(tǒng),都是通過(guò)web方式進(jìn)行操作,并不能提供桌面運(yùn)行環(huán)境。
其實(shí),和大多數(shù)開(kāi)源軟件一樣,tinyMediaManager除了GUI界面操作,也可以支持Command Line,也就是命令行操作。這樣,就可以通過(guò)在命令行中輸入命令加上合適的參數(shù),實(shí)現(xiàn)電影信息的刮削。
理論上是可行的,Java 8的環(huán)境也具備,所以去tinyMediaManager的官網(wǎng)中:點(diǎn)我直達(dá),下載最新的Linux版本tinyMediaManager試試吧。當(dāng)前最新的是Linux平臺(tái)tinyMediaManager是這個(gè)文件:tmm_3.1.3_linux.tar.gz。下面的操作默認(rèn)X86平臺(tái)的都是64位系統(tǒng)。
下載完成后,把軟件解壓到NAS的共享目錄中去。這樣,tinyMediaManager的安裝工作就完成了一大半了。
現(xiàn)在還有最后一個(gè)問(wèn)題需要解決。通過(guò)閱讀tinyMediaManager的官方文檔可以知道,在Linux上運(yùn)行tinyMediaManager除了Java運(yùn)行環(huán)境,還需要libmediainfo這個(gè)第三方native庫(kù)。但是NAS系統(tǒng)一般沒(méi)有像是apt這樣的軟件包管理軟件,如何下載這個(gè)libmediainfo呢。我去谷歌上搜索了一下,很偶然的機(jī)會(huì),我發(fā)現(xiàn)了qnapclub里面有一個(gè)名為Media Info CLI (Shared)的軟件包。地址在這里:點(diǎn)我直達(dá)。qnapclub是QNAP的第三方軟件源,上面下載的qpkg包可以直接安裝在QNAP系統(tǒng)上。主流X86平臺(tái)對(duì)應(yīng)的就是TS-NASX86_64這個(gè)版本。
在QNAP里面離線(xiàn)安裝這個(gè)qpkg包,然后通過(guò)ssh連接到NAS終端,把我需要的so找到。
QNAP系統(tǒng)中,軟件包的安裝位置在硬盤(pán)的.qpkg隱藏目錄中。比如我把Media Info CLI 安裝到了第一個(gè)硬盤(pán),其安裝位置就是/share/CACHEDEV1_DATA/.qpkg。繼續(xù)尋找,在/share/CACHEDEV1_DATA/.qpkg/MediaInfoShared/lib中可以找到許多so文件,我們需要的是以下兩個(gè):libmediainfo.so.0.0.0、libzen.so.0.0.0。
命令行中把他們拷貝出來(lái),修改名字為libmediainfo.so和libzen.so,然后放到tinyMediaManager安裝目錄的native/linux-x64文件夾下面。為了方便大家使用我將這兩個(gè)so放到了百度盤(pán)上,大家直接下載并放到指定位置就行了。鏈接: 百度網(wǎng)盤(pán)地址 。
命令行回到tinyMediaManager安裝目錄,我發(fā)現(xiàn)我拷貝到NAS共享目錄里面的可執(zhí)行文件沒(méi)有執(zhí)行權(quán)限,所以還要運(yùn)行下面的命令修復(fù)一下權(quán)限。
chmod +x tinyMediaManagerCMD.sh
現(xiàn)在,所有安裝工作就算完成了。
上面的安裝方式實(shí)現(xiàn)了tinyMediaManager在NAS系統(tǒng)上本地運(yùn)行,但其實(shí)還可以通過(guò)docker的方式運(yùn)行tinyMediaManager。群暉和QNAP都提供了在界面上運(yùn)行docker的方法,但是習(xí)慣了命令行感覺(jué)不是很方便。即使在命令行下運(yùn)行docker,NAS系統(tǒng)的Dcoker套件上還是可以看到運(yùn)行狀態(tài)的。
具體Docker的使用方法可以參考下面的鏈接:romancin/tinymediamanager-docker或者
dzhuang/tinymediamanager-docker (加了中文字體,解決GUI上中文字符顯示問(wèn)題)
基本的使用方法如下,部分路徑需要根據(jù)自己的實(shí)際情況修改:
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起來(lái)后,可以通過(guò)web頁(yè)面進(jìn)行GUI操作。
當(dāng)然命令行操作也是可以實(shí)現(xiàn)的:
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
這條命令會(huì)啟動(dòng)一個(gè)容器,以命令行的方式進(jìn)行電影信息刮削,完成后再把容器刪除。自動(dòng)化電影信息刮削也可以利用docker實(shí)現(xiàn),不過(guò)我更喜歡原生的。
我們?cè)赑C端通過(guò)GUI方式運(yùn)行tinyMediaManager的時(shí)候,啟動(dòng)階段會(huì)有向?qū)?,幫助我們進(jìn)行一些基本配置。但是命令行下可沒(méi)有向?qū)?,配置文件如何生成呢。我的辦法很簡(jiǎn)單,先在Windows上裝好tinyMediaManager,運(yùn)行向?qū)?,生成配置文件,然后直接拷貝過(guò)來(lái)用。
tinyMediaManager配置向?qū)н\(yùn)行的時(shí)候,主要是為電影和電視劇選擇正確的刮削器。媒體庫(kù)那邊不用配置。語(yǔ)言就使用默認(rèn)的英文,不要用中文,很多電影會(huì)刮削不到。下面的圖是錯(cuò)的。
生成的配置文件在tinyMediaManager安裝目錄的data文件夾下,我們只需要拷貝movies.json、tmm.json、tvShows.json這三個(gè)文件即可。NAS上的tinyMediaManager安裝目錄沒(méi)有data文件夾,需要自己創(chuàng)建一個(gè)。
當(dāng)然,這樣拷貝過(guò)來(lái)的文件是不能直接使用的,還需要打開(kāi)文本編輯器,手動(dòng)再加入幾個(gè)配置。首先是打開(kāi)movies.json,找到movieDataSource,添加NAS電影路徑。
這個(gè)路徑不是你從PC上看到的NAS電影目錄的路徑,是NAS系統(tǒng)自身的絕對(duì)路徑,在NAS終端上可查。比如QNAP的路徑如下圖所示。
然后還有一個(gè)重要的配置,movies.json中找到artworkScrapers,設(shè)置為tmdb。我最開(kāi)始的時(shí)候漏掉了這個(gè)設(shè)置,導(dǎo)致刮削出來(lái)只有movie.info,沒(méi)有海報(bào)圖片,最后看了一個(gè)多小時(shí)tinyMediaManager的源代碼才發(fā)現(xiàn)是這個(gè)問(wèn)題。本質(zhì)上也說(shuō)明我對(duì)tinyMediaManager的用法不夠精通。
movies.json配置好后,tvShows.json同理,不再贅述。如果你是使用tinyMediaManager的老手,還可以進(jìn)行更多配置。目前按照我的做法配置后,可以生成movie.info,可以生成電影海報(bào)。
另外,眾所周知,最近大家使用tinyMediaManager經(jīng)常遇到刮削不出信息來(lái)的情況,主要是相關(guān)網(wǎng)站受到DNS污染,需要手動(dòng)設(shè)置hosts。在QNAP中或者說(shuō)任意Linux系統(tǒng)中,需要修改/etc/hosts文件,添加一下內(nèi)容即可:
13.224.161.90 api.themoviedb.org
好了,折騰了半天,終于可以正常在命令行下運(yùn)行tinyMediaManager。先看下官方文檔,里面有命令行下運(yùn)行tinyMediaManager參數(shù)的詳細(xì)說(shuō)明?;蛘咧苯釉诿钚邢螺斎?/tinyMediaManagerCMD.sh不加參數(shù),也能顯示help文檔。
官方文檔鏈接在此:Command Line Argumentsger,參數(shù)說(shuō)明如下:
這點(diǎn)英文說(shuō)明沒(méi)什么難的。updateXXX命令是用來(lái)將電影資源加入tinyMediaManager的數(shù)據(jù)庫(kù),scrapeXXX命令是用來(lái)進(jìn)行電影信息刮削的。具體含義自己理解吧,可以根據(jù)自己的需求組合。比如:
./tinyMediaManagerCMD.exe -updateMovies -scrapeNew
就是添加新電影,并刮削電影信息。
那么,tinyMediaManager的運(yùn)行環(huán)境已經(jīng)搭建好了,相關(guān)配置也完成了,下面就是如何實(shí)現(xiàn)自動(dòng)運(yùn)行了。理想的自動(dòng)運(yùn)行應(yīng)該是每當(dāng)媒體庫(kù)里添加了新的文件,就開(kāi)啟命令行tinyMediaManager進(jìn)行刮削。這個(gè)并不是不能實(shí)現(xiàn),但是有點(diǎn)麻煩,我暫時(shí)懶得弄。所以,先介紹一種相對(duì)簡(jiǎn)單粗暴的自動(dòng)刮削方法。那就是借助于Linux的crontab工具開(kāi)啟周期性定時(shí)任務(wù)。舉例來(lái)說(shuō),就是我可以利用crontab,定時(shí)在每天凌晨1點(diǎn)的時(shí)候開(kāi)啟tinyMediaManager的刮削任務(wù)。一旦設(shè)定好定時(shí)任務(wù),全程不需要人工操作,這樣就算我們每天下載新的電影資源,第二天醒來(lái)后,信息刮削就已經(jīng)完成了。QNAP和群暉都是Linux系統(tǒng),也都支持crontab。我這里以QNAP為例,相關(guān)操作可以參考Add_items_to_crontab 。群暉的話(huà)要在root下進(jìn)行。
在tinyMediaManager的安裝目錄下創(chuàng)建一個(gè)shell腳本文件,用于封裝命令和參數(shù),命名為tinyMediaManager_daily.sh。腳本的內(nèi)容為:
!/usr/bin/env bash
/share/CACHEDEV1_DATA/Multimedia/tmm_3.1.3_linux/tinyMediaManagerCMD.sh -update -scrapeAll
腳本路徑最好寫(xiě)絕對(duì)路徑,后面的參數(shù)根據(jù)自己的情況調(diào)整,上面的參數(shù)為全掃描、全刮削。
保存好腳本之后,用下面的命令加上可執(zhí)行權(quán)限:
chmod +x tinyMediaManager_daily.sh
為了將上面的腳本定時(shí)周期啟動(dòng),需要在下面的文件中寫(xiě)入相關(guān)內(nèi)容/etc/config/crontab。
寫(xiě)入內(nèi)容的格式為:
minute hour day month week command
具體如何寫(xiě)大家自行百度吧。每天凌晨1點(diǎn)啟動(dòng)任務(wù)的寫(xiě)法為:
0 1 * /share/CACHEDEV1_DATA/Multimedia/tmm_3.1.3_linux/tinyMediaManager_daily.sh
將上面的內(nèi)容寫(xiě)入/etc/config/crontab,注意/etc/config/crontab中本來(lái)就有QNAP系統(tǒng)自己設(shè)定的計(jì)劃任務(wù),千萬(wàn)不要弄亂了,不放心就備份一個(gè)。
echo “0 1 * /share/CACHEDEV1_DATA/Multimedia/tmm_3.1.3_linux/tinyMediaManager_daily.sh” >> /etc/config/crontab
執(zhí)行下面命令讓計(jì)劃任務(wù)生效
crontab /etc/config/crontab && /etc/init.d/crond.sh restart
以上,就可以完成tinyMediaManager定時(shí)自動(dòng)刮削電影信息了。鑒于墻內(nèi)網(wǎng)絡(luò)問(wèn)題,刮削任務(wù)可能會(huì)因?yàn)榫W(wǎng)絡(luò)超時(shí)而意外終止。為了保證刮削的完整性,可以在計(jì)劃任務(wù)中設(shè)置利用凌晨的時(shí)間段多次進(jìn)行刮削。
上面的內(nèi)容除了包含實(shí)現(xiàn)自動(dòng)刮削的具體步驟,還包含我解決問(wèn)題的思路,混在一起對(duì)于很多人來(lái)說(shuō)可能不太容易搞明白。為此,我將核心步驟抽離出來(lái),重新復(fù)述一下。但是我仍然覺(jué)得對(duì)于沒(méi)有任何Linux使用經(jīng)驗(yàn)的人來(lái)說(shuō),實(shí)際操作起來(lái)還是會(huì)有很多問(wèn)題。但是,我只能做到這些了。核心步驟如下:
1.NAS系統(tǒng)中安裝Java 8運(yùn)行環(huán)境。
2.tinyMediaManager官網(wǎng)下載Linux安裝包,并解壓到NAS共享目錄。修復(fù)tinyMediaManagerCMD.sh的可執(zhí)行權(quán)限。
3.下載我上傳到百度盤(pán)的libmediainfo.so和libzen.so文件,并放到tinyMediaManager安裝目錄的native/linux-x64文件夾下面。
4.在Windows上安裝tinyMediaManager文件,并運(yùn)行向?qū)В杀匾呐渲梦募ovies.json、tmm.json、tvShows.json,拷貝到NAS的antinyMediaManager安裝目錄的data文件夾下。
5.修改movies.json和tvShows.json,添加媒體庫(kù)路徑,設(shè)置artworkScrapers為tmdb。
6.新建shell腳本,內(nèi)容為你要定時(shí)執(zhí)行的tinyMediaManager命令和參數(shù)。賦予腳本可執(zhí)行權(quán)限。
7.將定時(shí)任務(wù)寫(xiě)入/etc/config/crontab,并重啟crond讓定時(shí)任務(wù)生效。建議每天設(shè)置多次刮削。
上面是核心步驟,理解好了之后,具體內(nèi)容都可以到相應(yīng)章節(jié)里面尋找。如果有問(wèn)題,就請(qǐng)教搜索引擎吧。
對(duì)于執(zhí)著于追求完美電影墻的NAS用戶(hù)來(lái)說(shuō),自動(dòng)刮削應(yīng)該是比較迫切的需求吧。本文所述的實(shí)現(xiàn)方式其實(shí)并沒(méi)有太多難點(diǎn),我也只是主要解決了tinyMediaManager在QNAP或者群暉上運(yùn)行的問(wèn)題。在解決問(wèn)題的過(guò)程中,我也閱讀了tinyMediaManager的源代碼,代碼風(fēng)格不錯(cuò),流程也很清晰,算是比較優(yōu)秀的值得學(xué)習(xí)的Java開(kāi)源項(xiàng)目。但是,在我實(shí)際使用中,遇到的最大的問(wèn)題就是網(wǎng)絡(luò)超時(shí)。這回讓每次刮削任務(wù)都不能完整地完成,我也只能多次開(kāi)啟任務(wù)嘗試。若不是網(wǎng)絡(luò)問(wèn)題,這個(gè)方案將會(huì)很完美。祝大家玩的愉快。
聯(lián)系客服