獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

獨家首創,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並安裝。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

對於群暉DSM系統,在套件中心搜索Java,找到Java 8安裝。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

安裝了Java 8的NAS系統,就具備了運行tinyMediaManager的最基本條件。但是,平時我們使用tinyMediaManager時,是通過GUI界面進行操作的,而QNAP或者群暉等NAS系統,都是通過web方式進行操作,並不能提供桌面運行環境。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

其實,和大多數開源軟件一樣,tinyMediaManager除了GUI界面操作,也可以支持Command Line,也就是命令行操作。這樣,就可以通過在命令行中輸入命令加上合適的參數,實現電影信息的刮削。

理論上是可行的,Java 8的環境也具備,所以去tinyMediaManager的官網中:點我直達,下載最新的Linux版本tinyMediaManager試試吧。當前最新的是Linux平臺tinyMediaManager是這個文件:tmm_3.1.3_linux.tar.gz。下面的操作默認X86平臺的都是64位系統。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

下載完成後,把軟件解壓到NAS的共享目錄中去。這樣,tinyMediaManager的安裝工作就完成了一大半了。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

現在還有最後一個問題需要解決。通過閱讀tinyMediaManager的官方文檔可以知道,在Linux上運行tinyMediaManager除了Java運行環境,還需要libmediainfo這個第三方native庫。但是NAS系統一般沒有像是apt這樣的軟件包管理軟件,如何下載這個libmediainfo呢。我去谷歌上搜索了一下,很偶然的機會,我發現了qnapclub裡面有一個名為Media Info CLI (Shared)的軟件包。地址在這裡:點我直達。qnapclub是QNAP的第三方軟件源,上面下載的qpkg包可以直接安裝在QNAP系統上。主流X86平臺對應的就是TS-NASX86_64這個版本。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

在QNAP裡面離線安裝這個qpkg包,然後通過ssh連接到NAS終端,把我需要的so找到。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

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。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

命令行中把他們拷貝出來,修改名字為libmediainfo.so和libzen.so,然後放到tinyMediaManager安裝目錄的native/linux-x64文件夾下面。為了方便大家使用我將這兩個so放到了百度盤上,大家直接下載並放到指定位置就行了。鏈接: 百度網盤地址 提取碼: 228u。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

命令行回到tinyMediaManager安裝目錄,我發現我拷貝到NAS共享目錄裡面的可執行文件沒有執行權限,所以還要運行下面的命令修復一下權限。

chmod +x tinyMediaManagerCMD.sh

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

現在,所有安裝工作就算完成了。

Docker安裝

上面的安裝方式實現了tinyMediaManager在NAS系統上本地運行,但其實還可以通過docker的方式運行tinyMediaManager。群暉和QNAP都提供了在界面上運行docker的方法,但是習慣了命令行感覺不是很方便。即使在命令行下運行docker,NAS系統的Dcoker套件上還是可以看到運行狀態的。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

具體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操作。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

當然命令行操作也是可以實現的:

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自動刮削電影,NAS上打造完美電影牆

tinyMediaManager配置嚮導運行的時候,主要是為電影和電視劇選擇正確的刮削器。媒體庫那邊不用配置。語言就使用默認的英文,不要用中文,很多電影會刮削不到。下面的圖是錯的。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

生成的配置文件在tinyMediaManager安裝目錄的data文件夾下,我們只需要拷貝movies.json、tmm.json、tvShows.json這三個文件即可。NAS上的tinyMediaManager安裝目錄沒有data文件夾,需要自己創建一個。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

當然,這樣拷貝過來的文件是不能直接使用的,還需要打開文本編輯器,手動再加入幾個配置。首先是打開movies.json,找到movieDataSource,添加NAS電影路徑。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

這個路徑不是你從PC上看到的NAS電影目錄的路徑,是NAS系統自身的絕對路徑,在NAS終端上可查。比如QNAP的路徑如下圖所示。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

然後還有一個重要的配置,movies.json中找到artworkScrapers,設置為tmdb。我最開始的時候漏掉了這個設置,導致刮削出來只有movie.info,沒有海報圖片,最後看了一個多小時tinyMediaManager的源代碼才發現是這個問題。本質上也說明我對tinyMediaManager的用法不夠精通。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

movies.json配置好後,tvShows.json同理,不再贅述。如果你是使用tinyMediaManager的老手,還可以進行更多配置。目前按照我的做法配置後,可以生成movie.info,可以生成電影海報。

另外,眾所周知,最近大家使用tinyMediaManager經常遇到刮削不出信息來的情況,主要是相關網站受到DNS汙染,需要手動設置hosts。在QNAP中或者說任意Linux系統中,需要修改/etc/hosts文件,添加一下內容即可:

13.224.161.90 api.themoviedb.org

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

運行

好了,折騰了半天,終於可以正常在命令行下運行tinyMediaManager。先看下官方文檔,裡面有命令行下運行tinyMediaManager參數的詳細說明。或者直接在命令行下輸入./tinyMediaManagerCMD.sh不加參數,也能顯示help文檔。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

官方文檔鏈接在此:Command Line Argumentsger,參數說明如下:

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

這點英文說明沒什麼難的。updateXXX命令是用來將電影資源加入tinyMediaManager的數據庫,scrapeXXX命令是用來進行電影信息刮削的。具體含義自己理解吧,可以根據自己的需求組合。比如:

./tinyMediaManagerCMD.exe -updateMovies -scrapeNew

就是添加新電影,並刮削電影信息。

定時任務

那麼,tinyMediaManager的運行環境已經搭建好了,相關配置也完成了,下面就是如何實現自動運行了。理想的自動運行應該是每當媒體庫裡添加了新的文件,就開啟命令行tinyMediaManager進行刮削。這個並不是不能實現,但是有點麻煩,我暫時懶得弄。所以,先介紹一種相對簡單粗暴的自動刮削方法。那就是藉助於Linux的crontab工具開啟週期性定時任務。舉例來說,就是我可以利用crontab,定時在每天凌晨1點的時候開啟tinyMediaManager的刮削任務。一旦設定好定時任務,全程不需要人工操作,這樣就算我們每天下載新的電影資源,第二天醒來後,信息刮削就已經完成了。QNAP和群暉都是Linux系統,也都支持crontab。我這裡以QNAP為例,相關操作可以參考Add_items_to_crontab 。群暉的話要在root下進行。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

在tinyMediaManager的安裝目錄下創建一個shell腳本文件,用於封裝命令和參數,命名為tinyMediaManager_daily.sh。腳本的內容為:

!/usr/bin/env bash

/share/CACHEDEV1_DATA/Multimedia/tmm_3.1.3_linux/tinyMediaManagerCMD.sh -update -scrapeAll

腳本路徑最好寫絕對路徑,後面的參數根據自己的情況調整,上面的參數為全掃描、全刮削。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

保存好腳本之後,用下面的命令加上可執行權限:

chmod +x tinyMediaManager_daily.sh

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

為了將上面的腳本定時週期啟動,需要在下面的文件中寫入相關內容/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

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

執行下面命令讓計劃任務生效

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讓定時任務生效。建議每天設置多次刮削。

上面是核心步驟,理解好了之後,具體內容都可以到相應章節裡面尋找。如果有問題,就請教搜索引擎吧。

獨家首創,tinyMediaManager自動刮削電影,NAS上打造完美電影牆

總結

對於執著於追求完美電影牆的NAS用戶來說,自動刮削應該是比較迫切的需求吧。本文所述的實現方式其實並沒有太多難點,我也只是主要解決了tinyMediaManager在QNAP或者群暉上運行的問題。在解決問題的過程中,我也閱讀了tinyMediaManager的源代碼,代碼風格不錯,流程也很清晰,算是比較優秀的值得學習的Java開源項目。但是,在我實際使用中,遇到的最大的問題就是網絡超時。這回讓每次刮削任務都不能完整地完成,我也只能多次開啟任務嘗試。若不是網絡問題,這個方案將會很完美。祝大家玩的愉快。


分享到:


相關文章: