--- category: 折腾流程 tag: - Jellyfin - 影音服务器 - 媒体库 - 刮削 - 文件管理 --- # 影音服务器——有关 Jellyfin 的文件归集 > [!important] > 本文仅探讨音、视、图、文在纳入 Jellyfin 媒体库时应该如何整理、刮削,**并不涉及工具本身的部署以及媒体库的建立**。如有需求还请另行查找教程,或翻阅[官方文档](https://jellyfin.org/docs/general/installation/)。 > ~~Emby 支持文件夹,Jellyfin 不支持,Emby 赢一半!(~~ Plex 怎样我不清楚,但 Emby 对文件摆放的要求的确是比 Jellyfin 宽松得多的。但在好友的撺掇下,我还是换用 Jellyfin 了。~~……然后,就被 Jellyfin 的刮削和文件结构要求气晕。~~ ::: note 我个人的大致分类 - 电子书(Books) - 漫画(Comics) - 小说(Novels) - 音频 - 音乐(CloudMusic) - 音声(DLsite、ASMR 虚拟主播的录播转码) - 视频、图片 - 音声(实写录播) - 画师的差分图(Fanbox、Patreon,等等) - MMD - 可爱的女装照(不是我的,我的[都发出来惹](../diaries/dress/readme.md)) 虽然上述一些内容的说法已经比较直白,但真的点出来是什么东西就还是有点超过了哈。 ::: 有人可能会问,为什么音声会分音、视频呢?呐就要讨论下 Jellyfin 的媒体库了。 ## 媒体库的类型 无论 Emby 还是 Jellyfin(我想 Plex 也一样),对于媒体内容的界定通常比较分明。这当然可称得上一件好事,但视频不仅仅是影片,音频也不仅仅是歌曲。对于没办法归类成“剧集”的,尚有“家庭视频和照片”这种分类,这也就能够解释为何我把视频和图片归为一大类;然鹅对于没办法归类成“专辑”的,私密马赛,我莫得选择。 ![Jellyfin 媒体库类型 =180x](./jellyfin_content_type.webp) 然后……接下来就讲讲音乐、书籍、家庭视频和照片怎么整理文件夹结构吧。电影和节目这块网上应该也有不少教程。“混合电影和电视”这一项据官网称**已经弃用,不推荐选**。 ::: tip 或者参考这些博客 毕竟我是死宅嘛。!!死宅真恶心。!! - [《利用 Jellyfin+Bangumi 打造更舒适的动画媒体库》(初之音)](https://www.himiku.com/archives/deploy-a-more-comfortable-animation-library-with-jellyfin-and-bangumi.html) - [《打造你的同人音声媒体库》(Hinata Rin)](https://blog.hinatarin.com/2021/09/27/build-your-own-doujin-voice-media-library/index.html) ::: ## 书籍 ::: details 官方给出的电子书摆放 ``` Books ├── Audiobooks │ ├── Author │ │ ├── Book1 │ │ │ └── Book1.flac │ │ └── Book2 │ │ └── Book2.mp3 │ └── Book3 │ ├── Book3.aac │ ├── content.opf │ └── cover.jpg ├── Books │ └── Author │ ├── Book4 │ │ └── Book4.epub │ ├── Book5 │ │ └── Book5.epub │ ├── Book6 │ │ ├── Book6.epub │ │ ├── cover.png │ │ └── metadata.opf │ └── Book7 │ └── Book7.pdf └── Comics ├── Plastic Man (1944) │ └── Plastic Man #002 (1944).cbz ├── Attack on Titan (2012) │ └── Attack on Titan #001 (2012).pdf └── Comic (2008) ├── ComicInfo.xml └── Comic #001 (2008).cbr ``` ::: 简而言之,对于每一“本”书,最好**单独开辟一个文件夹**,然后文件夹里**只摆放该书的单文件“合订本”**(比如`Books/王道24寄网/王道24寄网.pdf`)。 但这么分在我看来十分甚至九分的抽象,因为我手里的大多数小说和漫画都莫得有效的标签,甚至绝大多数是由纯文本导出 PDF 而来。因此,比起官版墨迹的组织方式,不妨就按各人的阅读习惯组织起来,不支持的格式导出成 PDF,就可以了。 ## 家庭视频与照片 这一分类也是差不多的随性。官方也莫得文档来强制约束应当是什么样的文件组织。以《绝区零》铃妹的一组差分图为例: ![《家庭视频和照片》 =180x](./jellyfin_home_visual.webp) ## 音乐 然后就是重头戏了,音乐。开篇我提过,我借助音乐媒体库还托管一些同人音声,那么对于音声的管理也是同样的。 ::: details 官方给出的音乐摆放 ``` Music ├── Some Artist │ ├── Album A │ │ ├── Song 1.flac │ │ ├── Song 2.flac │ │ └── Song 3.flac │ └── Album B │ ├── Track 1.m4a │ ├── Track 2.m4a │ └── Track 3.m4a └── Album X ├── Whatever You.mp3 ├── Like To.mp3 ├── Name Your.mp3 └── Music Files.mp3 ``` ::: ### 歌曲的刮削与组织 ::: info 媒体刮削 刮削——或者我更愿意称之为“打标”或者“tagging”——指的是从特定渠道(一定是互联网吗?未必)获取到这份音/视频的元数据信息(作者、标题、流派、专辑、发行年份,等等),并且填充进媒体文件的附加信息位(通常位于文件尾部),又或者单独整理成`.nfo`之类的数据库的行为。 这一词不仅限于音频,视频也是有元数据信息的,比如内嵌字幕(不同于剪辑、特效软件直接打在视频流上的文本框字幕)。 非要说的话,我更倾向于:“刮削”一词不过是老烧们捏出来唬人的,所谓的专有术语罢了。 ::: 我的歌曲大多下载自网易云,通常来说都是刮削好的`mp3`和`flac`文件,但也有些许例外,比如 VIP 歌曲复制链接跑去在线工具抓取下载得来的音频文件,呐怎么办呢? 之前看到的[《基于 Jellyfin 和音流的 nas 影音库搭建及踩坑》(少数派)](https://sspai.com/post/90896)一文推荐了“音乐标签”这么个工具,支持从网易云、QQ 等多个国内源抓取、刮削音频。此外,Mp3tag([官网下载](https://www.mp3tag.de/en/download.html)、[官方文档](https://docs.mp3tag.de/))也可以从 MusicBrainz 等国外源抓取、刮削。 个人建议刮削阶段还是用国内源比较好,因为接下来我要讲一个“洛天依作品集”的故事: ![洛 天 依 作 品 集 =420x](./luotianyi_question_mark.webp) ![《洛天依》 =150x](./im_luotianyi.webp) 但刮削工具也并非万能。比如《紫罗兰永恒花园 OST》的很多歌就被“音乐标签”那软件霍霍了个遍: ![《凹凸世界五周年》 =420x](./musictag_misfetch.webp) --- 刮削完了需要按上面的官方要求组织这些歌曲,毕竟 Jellyfin 不支持读取音乐标签自动聚合(这点在上面援引的博客中也吐槽了)。我个人用 Mp3tag 做批量重命名。相比起音乐标签,Mp3tag 重命名时允许字符串格式化,比如`$replace`、`$num`,方便一点。 Jellyfin 的音频搜集**仅以专辑为依据**。官方文档自己也说“as long as each album is contained within one folder”,翻译过来就是“只需确保一个文件夹(子树)均为同一张专”。所以文件结构自然也以专辑为准。 ::: details 分碟 事实上,根据我对音声的组织实践来看,需要确保的是**一张专一个文件夹子树**。比如下列情形会被拆分: ``` Author \AlbumA Vol.X \AlbumA Vol.Y \AlbumB Vol.X ``` 这种情形会在媒体库里拆出两个 AlbumA(分别为盘号 X 和盘号 Y),正确的组织方式应为: ``` Author \AlbumA \Vol.X \Vol.Y \AlbumB ``` 当然,若是盘号没有显式标明,很有可能仍然会拆。~~所以就不能直接读音乐标签做自动聚合马?~~ ::: ### 音频音声的刮削与组织 不同于歌曲的刮削,音声**通常是没有标签**的。所以,首先需要人为对这些音声进行分类:DLsite 贩售的?主包的订阅限定?还是说有什么特征,是剧情音声?催眠音声?普通的奥数魔刃? 如果有些音声实在没有头猪,至少也用“散装”之类的文件夹包起来,**尽量确保所有的“文件”都被文件夹收纳好,避免裸放在媒体库文件夹下,也避免文件夹和音声文件混着存放**[^mixed_album]。 [^mixed_album]: 避免音声文件和文件夹混在一起,是因为: - 假若该文件并没有任何标签,那么你只能在 Jellyfin 音乐媒体库的(全部)歌曲那一页翻来覆去才找得到; - 假如该文件有打标签,那么所有和它混在一起的文件夹,里面的音声分类(哪怕自身有打标)均会被覆盖为该文件的标签。 ::: tip 理想的文件树(简化版本,但仍可能加载较慢) ```mermaid flowchart LR A(["音声"]) --> B(["DLsite"]) & D(["订阅限定"]) & E(["音声录播"]) B --> B1(["RJ416817"]) --> n1(("\*.mp3")) D --> D1(["希丝奈cisne"]) --> D11(["24-11"]) --> n21(("\*.mp3")) D1 --> D12(["八月舰长音声"]) --> n22(("\*.mp3")) E --> E1(["mahoulelys"]) --> n3(("\*.mp4.mp3")) ``` 或者说,尽可能保证所有的**文件**均在树形图的末端(末梢、叶子节点)处。 ::: 分类完毕之后,再对这些音声做批量的打标。 DLsite 上贩售的音声可用 Python 第三方库`dvtag`打标(从 DLsite 获取元数据可能需要代理),具体可参见开篇的参考博客;像音声录播通常就以主播为单位收纳好;至于可能存在子文件夹的订阅限定,可以用 Mp3tag 批量为这些音声的作者、年份字段打上标注,或是在专辑字段打上“谁谁的限定音声”,都行。