影音服务器——有关 Jellyfin 的文件归集
影音服务器——有关 Jellyfin 的文件归集
重要
本文仅探讨音、视、图、文在纳入 Jellyfin 媒体库时应该如何整理、刮削,并不涉及工具本身的部署以及媒体库的建立。如有需求还请另行查找教程,或翻阅官方文档。
Emby 支持文件夹,Jellyfin 不支持,Emby 赢一半!(
Plex 怎样我不清楚,但 Emby 对文件摆放的要求的确是比 Jellyfin 宽松得多的。但在好友的撺掇下,我还是换用 Jellyfin 了。……然后,就被 Jellyfin 的刮削和文件结构要求气晕。
我个人的大致分类
- 电子书(Books)
- 漫画(Comics)
- 小说(Novels)
- 音频
- 音乐(CloudMusic)
- 音声(DLsite、ASMR 虚拟主播的录播转码)
- 视频、图片
- 音声(实写录播)
- 画师的差分图(Fanbox、Patreon,等等)
- MMD
- 可爱的女装照(不是我的,我的都发出来惹)
虽然上述一些内容的说法已经比较直白,但真的点出来是什么东西就还是有点超过了哈。
有人可能会问,为什么音声会分音、视频呢?呐就要讨论下 Jellyfin 的媒体库了。
媒体库的类型
无论 Emby 还是 Jellyfin(我想 Plex 也一样),对于媒体内容的界定通常比较分明。这当然可称得上一件好事,但视频不仅仅是影片,音频也不仅仅是歌曲。对于没办法归类成“剧集”的,尚有“家庭视频和照片”这种分类,这也就能够解释为何我把视频和图片归为一大类;然鹅对于没办法归类成“专辑”的,私密马赛,我莫得选择。

然后……接下来就讲讲音乐、书籍、家庭视频和照片怎么整理文件夹结构吧。电影和节目这块网上应该也有不少教程。“混合电影和电视”这一项据官网称已经弃用,不推荐选。
书籍
官方给出的电子书摆放
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,就可以了。
家庭视频与照片
这一分类也是差不多的随性。官方也莫得文档来强制约束应当是什么样的文件组织。以《绝区零》铃妹的一组差分图为例:

音乐
然后就是重头戏了,音乐。开篇我提过,我借助音乐媒体库还托管一些同人音声,那么对于音声的管理也是同样的。
官方给出的音乐摆放
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
歌曲的刮削与组织
媒体刮削
刮削——或者我更愿意称之为“打标”或者“tagging”——指的是从特定渠道(一定是互联网吗?未必)获取到这份音/视频的元数据信息(作者、标题、流派、专辑、发行年份,等等),并且填充进媒体文件的附加信息位(通常位于文件尾部),又或者单独整理成.nfo
之类的数据库的行为。
这一词不仅限于音频,视频也是有元数据信息的,比如内嵌字幕(不同于剪辑、特效软件直接打在视频流上的文本框字幕)。
非要说的话,我更倾向于:“刮削”一词不过是老烧们捏出来唬人的,所谓的专有术语罢了。
我的歌曲大多下载自网易云,通常来说都是刮削好的mp3
和flac
文件,但也有些许例外,比如 VIP 歌曲复制链接跑去在线工具抓取下载得来的音频文件,呐怎么办呢?
之前看到的《基于 Jellyfin 和音流的 nas 影音库搭建及踩坑》(少数派)一文推荐了“音乐标签”这么个工具,支持从网易云、QQ 等多个国内源抓取、刮削音频。此外,Mp3tag(官网下载、官方文档)也可以从 MusicBrainz 等国外源抓取、刮削。
个人建议刮削阶段还是用国内源比较好,因为接下来我要讲一个“洛天依作品集”的故事:


但刮削工具也并非万能。比如《紫罗兰永恒花园 OST》的很多歌就被“音乐标签”那软件霍霍了个遍:

刮削完了需要按上面的官方要求组织这些歌曲,毕竟 Jellyfin 不支持读取音乐标签自动聚合(这点在上面援引的博客中也吐槽了)。我个人用 Mp3tag 做批量重命名。相比起音乐标签,Mp3tag 重命名时允许字符串格式化,比如$replace
、$num
,方便一点。
Jellyfin 的音频搜集仅以专辑为依据。官方文档自己也说“as long as each album is contained within one folder”,翻译过来就是“只需确保一张专一个文件夹”。所以文件结构自然也以专辑为准。
音频音声的刮削与组织
不同于歌曲的刮削,音声通常是没有标签的。所以,首先需要人为对这些音声进行分类:DLsite 贩售的?主包的订阅限定?还是说有什么特征,是剧情音声?催眠音声?普通的奥数魔刃?
如果有些音声实在没有头猪,至少也用“散装”之类的文件夹包起来,尽量确保所有的“文件”都被文件夹收纳好,避免裸放在媒体库文件夹下,也避免文件夹和音声文件混着存放[1]。
理想的文件树(简化版本,但仍可能加载较慢)
或者说,尽可能保证所有的文件均在树形图的末端(末梢、叶子节点)处。
分类完毕之后,再对这些音声做批量的打标。
DLsite 上贩售的音声可用 Python 第三方库dvtag
打标(从 DLsite 获取元数据可能需要代理),具体可参见开篇的参考博客;像音声录播通常就以主播为单位收纳好;至于可能存在子文件夹的订阅限定,可以用 Mp3tag 批量为这些音声的作者、年份字段打上标注,或是在专辑字段打上“谁谁的限定音声”,都行。
避免音声文件和文件夹混在一起,是因为:
- 假若该文件并没有任何标签,那么你只能在 Jellyfin 音乐媒体库的(全部)歌曲那一页翻来覆去才找得到;
- 假如该文件有打标签,那么所有和它混在一起的文件夹,里面的音声分类(哪怕自身有打标)均会被覆盖为该文件的标签。