媒體庫與掃描 - MiCat-S/Mi302 GitHub Wiki

繁體中文 | 简体中文 | English

這一頁說明媒體庫的資料夾怎麼放、Mi302 怎麼掃描,以及中文片名的排序搜尋、演職人員中文名、類型中文化和媒體庫封面。

媒體庫和資料夾

媒體庫在管理網頁的「媒體庫」分頁建立。分頁上每個媒體庫一格,顯示封面、名稱、類型、項目數和資料夾。按最後一格的「新增媒體庫」,在對話框裡取名,類型選「電影」或「劇集」,按「加入資料夾」選伺服器上的資料夾,最後按「儲存並掃描」。一個媒體庫可以有好幾個資料夾。

要改名稱、類型、資料夾或封面,點那一格的封面、名稱或「編輯」,打開同一個對話框。對話框左下角的「刪除媒體庫」刪掉整個媒體庫,資料夾裡的檔案不會被刪;但這個媒體庫的觀看紀錄(看過、續播點、收藏)會一起刪除,之後再加回同一個資料夾也找不回來,確認框會寫出有幾筆。一次建好幾個媒體庫見批量新增媒體庫。

Mi302 不自己刮削,只讀資料夾裡已經有的檔案:

  • 影片:.strm 和一般影片檔(.mkv .mp4 .m4v .avi .ts .m2ts .mov .wmv .flv .webm .rmvb .mpg .mpeg .iso .3gp)。
  • 中繼資料:nfo 和圖片(.jpg .jpeg .png .webp)。這些可以從 115 同步時一起下載,或交給 MoviePilot 刮削,見 MoviePilot 整合。

典型的結構:

movies/
  Inception (2010)/
    Inception (2010).strm
    Inception (2010).nfo        # 或 movie.nfo
    poster.jpg  fanart.jpg
tv/
  Dark (2017)/
    tvshow.nfo  poster.jpg  fanart.jpg
    Season 1/
      Dark.S01E01.strm
      Dark.S01E01.nfo
      Dark.S01E01-thumb.jpg

找電影和劇集資料夾時,名稱以 .、@、# 開頭的資料夾會略過(例如 NAS 的 @eaDir、#recycle)。

電影

  • 每個影片檔是一部電影。
  • 資料夾裡只有這一部影片(而且不是直接放在媒體庫資料夾底下)時,資料夾名稱帶年份、或檔名沒有年份,就用資料夾名稱當片名,例如 Inception (2010)。這種資料夾也讀 movie.nfo。
  • 其他情況用檔名:認得 片名 (年份),或去掉 1080p、BluRay、x265 這類字樣後取片名和年份。
  • nfo 裡有 <title> 時以 nfo 為準。

劇集

每個劇集資料夾是一部劇。劇集資料夾裡任何一層的影片都算這部劇的集,可以放在季資料夾裡,也可以直接放在劇集資料夾裡。

季和集的命名

季資料夾的名稱:

寫法 例子 季
Season N、Series N(中間可以有空格、點、底線、減號) Season 1、Season.02、Series 3 N
SN S01、s2 N
第N季、第N部(阿拉伯數字或中文數字) 第1季、第一季、第十二季 N
Specials、Special、SP、特別篇、特别篇 0(特別篇)

集號從檔名找,依下面的順序,第一個對上的算數:

寫法 例子
SxxEyy(也認 SxxEPyy,中間可以有空格、點、底線、減號) Dark.S01E02.mkv、S01 EP02
NxNN 1x02
第N集、第N話、第N话(阿拉伯數字或中文數字) 第2集、第十二集
Eyy、EPyy(前面是開頭、空格、點、底線、減號或 [) EP02、[E05]
檔名開頭就是集號,後面接點、減號、底線或 、;只用空格隔開時要補零 10.潘玮柏战队…、03-比赛…、01 嘻哈首战、07

最後一種只在沒有其他寫法時才用。只有空格隔開又沒補零的(21 Jump Street)不算集號。

有好幾個來源時的優先順序:

  • 季:集的 nfo 裡的 <season> → 所在的季資料夾 → 檔名裡的 SxxEyy → 都沒有就算第 1 季。
  • 集號:集的 nfo 裡的 <episode> → 檔名。

nfo 裡的 <season>、<episode> 是負數(例如刮削時沒認出集號寫的 -1)時當成沒寫,改用後面的來源。

  • 集名:集的 nfo 裡的 <title> → 「第 N 集」→ 檔名。

季的名稱是「第 N 季」,第 0 季是「特別篇」。季資料夾裡的 season.nfo 可以改季的名稱和簡介。

分類資料夾

劇集媒體庫裡可以有分類資料夾,例如 MoviePilot 二級分類的 电视剧/国产剧/庆余年 (2019)/。媒體庫路徑直接選 电视剧 就好,不用每個分類各加一次。

符合下面任何一項的資料夾是一部劇:

  • 裡面有 tvshow.nfo。
  • 名稱是 劇名 (年份),括號也可以是全形 () 或 []。
  • 裡面有季資料夾。
  • 裡面直接放著影片或 strm。

其他資料夾當成分類,再往下一層找。媒體庫資料夾底下最多找三層分類資料夾。

注意兩種會認錯的情況:

  • 分類資料夾裡直接放了影片,這個分類會被當成一部劇。
  • 劇集資料夾沒有年份、沒有 tvshow.nfo,影片又都放在不是季資料夾的子資料夾裡(例如 Disc1),這部劇會被當成分類。給劇集資料夾加上年份最保險。

想讓每個分類在播放器首頁各佔一列,就每個分類各建一個媒體庫,用下一節的「從資料夾批量新增」可以一次建好。

批量新增媒體庫

一個資料夾底下已經分好「电影」「国产剧」「日番」這類子資料夾,想讓每個子資料夾各自成為一個媒體庫時,按「媒體庫」分頁最後一格的「從資料夾批量新增」:

  1. 選上層資料夾。對話框會先讀第一個媒體庫第一個資料夾的上一層,還沒有媒體庫時直接打開選資料夾的視窗。要換資料夾就按「選擇…」,或輸入路徑後按「讀取」。
  2. 每個子資料夾一列,附上影片數和建議的類型。
  3. 勾選要新增的,名稱和類型都可以改。空資料夾和已經在某個媒體庫裡的資料夾預設不勾,後者會寫出在哪個媒體庫。
  4. 按「新增並掃描」。

建議的類型是看資料夾裡的檔案猜的:

  • 取樣的影片裡有三成以上檔名帶集數(S01E01、1x01、第1集、EP01 這類)、放在季資料夾裡,或在有 tvshow.nfo 的資料夾裡,就建議「劇集」,否則建議「電影」。
  • 影片少於 3 部時改看資料夾名稱:帶「电影」「剧场版」「movie」「film」的是電影,帶「剧」「番」「动漫」「动画」「综艺」「电视」「tv」「series」「show」「anime」「drama」的是劇集,繁體字也認得。都看不出來就先當電影。

名稱改成一樣的幾列會合成一個媒體庫,類型要相同。名稱和現有的媒體庫相同,這個資料夾就加進那個媒體庫,類型跟著那個媒體庫。每一列底下會寫出它會怎麼處理,有問題的列(名稱空白、同名但類型不同)要先改好才能送出。

資料夾可能在網路磁碟上,所以每個子資料夾最多往下看 5 層、1.5 秒,整次最多 12 秒。沒看完的影片數顯示「至少 N 部」,來不及看的顯示「影片數不明」、類型改看名稱,也不會預設勾選,對話框上方會提醒檢查。

圖片和 nfo 的檔名

表格裡的 X 是影片檔名去掉副檔名。圖片可以是 .jpg、.jpeg、.png、.webp。

項目 nfo 海報 背景圖 橫幅 Logo
電影 X.nfo X-poster、X X-fanart、X-backdrop X-thumb、X-landscape X-logo、X-clearlogo
電影(資料夾裡只有這一部時另外認) movie.nfo poster、folder、cover fanart、backdrop、background thumb、landscape logo、clearlogo
劇集(放在劇集資料夾) tvshow.nfo poster、folder、cover fanart、backdrop、background thumb、landscape logo、clearlogo
季 季資料夾裡的 season.nfo 劇集資料夾裡的 season01-poster、season01(特別篇是 seasonspecials-poster、seasonspecials);沒有就用季資料夾裡的 poster、folder、cover
集 X.nfo X-thumb、X
  • 集沒有自己的圖時,用劇的橫幅(thumb/landscape),沒有橫幅就用劇的背景圖。
  • 季和集沒有自己的背景圖、橫幅、Logo 時用劇的。
  • nfo 讀的欄位:title、originaltitle、sorttitle、plot(或 outline)、year、premiered(或 aired、releasedate)、rating、mpaa、genre、runtime(分鐘)、uniqueid 和 tmdbid/imdbid/tvdbid、season、episode,以及演職人員(見下面)。

掃描

掃描是把資料夾裡的影片、nfo 和圖片讀進資料庫,播放器看到的就是資料庫裡的內容。不一定要整個重新掃描。

在網頁上掃描

「媒體庫」分頁可以:

  • 按某個媒體庫那一格的「掃描」,只掃這個媒體庫。
  • 打開媒體庫的「編輯」對話框,按某個資料夾那一行的「掃描」,只掃這個資料夾。資料夾不存在時會標示「資料夾不存在」,這一行沒有「掃描」按鈕,媒體庫那一格也會寫出幾個資料夾不存在。剛加進去、還沒儲存的資料夾也沒有「掃描」按鈕。
  • 按上方的「掃描資料夾…」,選任何一個媒體庫裡的資料夾,例如一個分類 电视剧/国产剧 或一部劇 电视剧/国产剧/庆余年 (2019)。選到媒體庫以外的位置會提示「這個位置不在任何媒體庫的資料夾裡」。
  • 按「全部重新掃描」,掃全部媒體庫。

掃描時頁面上方會顯示「掃描中」、百分比和正在處理的片名。第一次掃描還不知道總數,顯示來回滑動的忙碌條。同一時間只跑一個掃描,其他的排隊。

掃描中可以按「停止」:在兩個項目之間停下,沒掃到的不會從媒體庫刪掉,下次掃描再補。排在後面等著的整庫掃描(例如開機、改了設定之後的)也一起取消,停止之後再按的照常掃;同步後、刪除後只掃變動地方的照常做(那些地方之後不會再有人掃)。沒在掃描時,進度條的位置顯示上次掃了什麼、處理了幾個項目、是不是按了停止。

自動掃描

自動掃描也只掃有變動的地方:

時機 掃哪裡
每次啟動 Mi302 全部媒體庫
115 同步完成(「同步完自動重新掃描媒體庫」開著時,預設開) 新增、改名、移動或刪除的檔案所在的劇或電影
MoviePilot 刮削完成 刮削過的那些
MoviePilot 或其他工具呼叫 POST /Library/Media/Updated 通知裡的路徑(先依 MoviePilot 的路徑對應換回 Mi302 的路徑);通知裡沒有路徑時掃全部
播放器對單一項目按「重新整理」(POST /Items/{id}/Refresh,要管理員帳號) 那部電影或那部劇;對媒體庫按就是整個媒體庫
POST /Library/Refresh 全部媒體庫
在「媒體庫」分頁儲存(「儲存並掃描」「新增並掃描」「刪除媒體庫」) 新增或改過的媒體庫;刪掉的媒體庫連同裡面的項目一起移除

掃描單位

部分掃描以一部劇或一部電影為單位:

  • 劇集媒體庫:給一集或一季的路徑,會重掃整部劇;給分類資料夾,會掃裡面所有劇;不在任何劇集資料夾裡的檔案略過。
  • 電影媒體庫:重掃變動所在的整個資料夾,因為同一個資料夾裡有幾部影片會影響片名怎麼取;直接放在媒體庫資料夾底下的影片只處理那一部。
  • 已經刪掉的路徑:把資料庫裡那底下的項目移除。
  • 重複或互相包含的路徑只掃一次。
  • 一次超過 300 個單位時(例如第一次全量同步),改成把這些單位所在的媒體庫整個掃一次。

觀看紀錄

項目以檔案路徑對應。重新掃描(不論部分或全部)不會改變項目的 id,觀看紀錄、收藏、片頭片尾紀錄都會留著。檔案改名或搬移後是新的項目,舊項目和它的觀看紀錄在下次掃描時移除。

網路磁碟還沒掛上

NAS 的 NFS/SMB、Parallels 的 /media/psf/... 這類資料夾,開機時可能比 Mi302 晚掛上。媒體庫資料夾不存在、讀不到或完全是空的,Mi302 會當成還沒掛上:

  • 整個媒體庫的掃描(包括啟動時那一次)保留這個資料夾原本的項目和觀看紀錄,不會當成影片全被刪了,日誌記一筆警告「媒體庫路徑不存在或是空的」。
  • 部分掃描略過這個資料夾。

掛好之後在「媒體庫」分頁按「全部重新掃描」即可。

反過來說,真的把一個資料夾清空時,舊項目會一直留著。這時在媒體庫的「編輯」對話框把這個資料夾移除,再按「儲存並掃描」;或按「刪除媒體庫」刪掉整個媒體庫。

中文片名的排序和搜尋

排序:

  • 電影和劇集的排序名用 nfo 的 <sorttitle>,沒有就用片名。
  • 中文先轉成簡體再轉拼音,一個字一個音節、用空格隔開:流浪地球2 → liu lang di qiu 2。其他文字轉小寫。所以播放器按字母跳轉也有效。
  • 集的順序照季、集號,不受影響。

搜尋:

  • 片名、原名(nfo 的 <originaltitle>)都認。
  • 中文片名另外可以用全拼(qingyunian)、首字母(qyn)、簡體、繁體(慶餘年)找到「庆余年」。拼音只從片名產生,不從原名。
  • 繁體轉簡體有時用字不同(慶餘年 會轉成 庆馀年),所以兩個字以上的中文搜尋詞會再用拼音比一次。

排序名和搜尋用的欄位在掃描時產生。每次啟動都會整個掃描一次,所以從舊版更新後,舊資料會自動補齊。

演職人員

Mi302 從 nfo 讀演職人員,給播放器顯示:

  • <director>:導演。
  • <credits>、<writer>:編劇。
  • <actor>:演員,讀 name、role、thumb、tmdbid;type 是 GuestStar 時算客串。

顯示順序是導演、編劇、演員。點人物可以看他在 Mi302 裡參與的作品,搜尋也找得到人。集和季沒有自己的演職人員時用劇的。

人物照片是 nfo 裡 <thumb> 的網址(通常在 TMDB)。播放器要照片時,Mi302 用 302 把它導到那個網址,所以播放器要連得上那台圖片伺服器。

中文名

TMDB 的人名常是拼音或英文(Chen He)。「設定」分頁的「中文化」卡片裡,「演職人員顯示中文名」(server.chinese_people,預設開)開著時,Mi302 在背景查中文名:

  • 只查 nfo 裡帶數字 TMDB 人物 id 的人:每部作品的導演、編劇、客串,以及排在前面的演員(程式設定是前 20 位演員,另外留 10 個位置給排在前面的導演和編劇)。
  • 先問 MoviePilot 的人物介面(/api/v1/tmdb/person/{id}),從 TMDB 的別名裡挑中文的(陈赫):去掉帶日文假名的,優先本來就是簡體的,都沒有就把繁體轉成簡體。每秒最多問 2 次。
  • MoviePilot 沒有的、或還沒設定 MoviePilot、或連不上時,改問 Wikidata(依 TMDB 人物 id,每批 100 位),中文標籤一律轉成簡體。
  • 查過沒有的,30 天後再查。有設定 MoviePilot 但這次連不上時,只問了 Wikidata 的人不算查過,下次再問。
  • 每 30 分鐘看一次有沒有新的人要查(啟動 1 分鐘後第一次),每次最多 500 位。也可以按「現在查中文名」立刻查。

查到之後播放器顯示中文名,人物資料另外帶上原名(OriginalTitle)。用原名、中文名都搜得到人。

「中文化」卡片顯示演職人員、有中文名、還沒查、查過沒有的人數,兩個來源各查到幾位、上次查詢時間和錯誤訊息。還沒設定 MoviePilot 時會提示只能問 Wikidata。

關掉「演職人員顯示中文名」並按「儲存設定」後,播放器馬上改回顯示原名,背景也不再查;已經查到的中文名留在資料庫。

類型中文化

「中文化」卡片裡的「類型顯示中文」(server.chinese_genres,預設開)開著時,掃描時把 nfo 的類型換掉:

  • 英文的 TMDB、IMDb 類型照下表換成中文(大小寫不拘),用的是 TMDB 簡體中文的叫法。
  • 中文類型的繁體換成簡體,所以類型一律顯示簡體。
  • 表裡沒有的英文類型照原樣。換完之後重複的只留一個。

這是掃描時做的,改了開關要重新掃描才生效。關掉後重新掃描,就還原成 nfo 裡原本的類型。

英文 中文 英文 中文 英文 中文
Action 动作 Adventure 冒险 Animation 动画
Comedy 喜剧 Crime 犯罪 Documentary 纪录
Drama 剧情 Family 家庭 Fantasy 奇幻
History 历史 Horror 恐怖 Music 音乐
Mystery 悬疑 Romance 爱情 Science Fiction 科幻
Sci-Fi 科幻 TV Movie 电视电影 Thriller 惊悚
War 战争 Western 西部 Action & Adventure 动作冒险
Kids 儿童 News 新闻 Reality 真人秀
Sci-Fi & Fantasy 科幻奇幻 Soap 肥皂剧 Talk 脱口秀
War & Politics 战争政治 Biography 传记 Sport 运动
Sports 运动 Musical 歌舞 Film-Noir 黑色电影
Short 短片 Game-Show 游戏节目 Reality-TV 真人秀
Talk-Show 脱口秀 Anime 动画

媒體庫封面

播放器首頁每個媒體庫的封面,依序用:

  1. 上傳的封面。
  2. 媒體庫資料夾裡的 poster、folder 或 cover 圖(媒體庫有好幾個資料夾時,用第一個找得到的)。

「媒體庫」分頁每一格都顯示封面。打開那一格的「編輯」對話框,看得到封面的來源:

  • 按「上傳封面」選一張圖,可以是 jpg、png、gif 或 webp,最大 30 MB。
  • 有上傳的封面時多一個「改回預設」,按了刪掉上傳的封面,改回資料夾裡的圖。

MoviePilot 的媒體庫封面插件用 Emby 的 POST /Items/{id}/Images/Primary 上傳,效果和在網頁上傳一樣,設定方法見 MoviePilot 整合。

上傳的圖片:

  • 存在資料資料夾的 images/(預設 data/images/,一鍵安裝的在 config/data/images/)。封面的檔名是 {項目 id}-primary_image.{副檔名}。
  • 重新掃描不會被蓋掉,也比資料夾裡的圖優先。
  • 同一個 API 也能給電影、劇集等其他項目上傳海報、背景圖、橫幅、Logo,規則相同。項目從媒體庫移除時,它上傳的圖片跟著刪掉。
⚠️ **GitHub.com Fallback** ⚠️