New Note: Jellyfin File Organization
Some checks failed
部署文档 / build (push) Failing after 4m40s

This commit is contained in:
2025-06-28 23:25:25 +08:00
parent 5cbddd7a53
commit 350e1fd4c1
6 changed files with 178 additions and 0 deletions

View File

@ -0,0 +1,178 @@
---
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 等国外源抓取、刮削。
个人建议刮削阶段还是用国内源比较好,因为接下来我要讲一个“洛天依作品集”的故事:
![洛 天 依 作 品 集 =x200](./luotianyi_question_mark.webp)
![《洛天依》 =150x](./im_luotianyi.webp)
但刮削工具也并非万能。比如《紫罗兰永恒花园 OST》的很多歌就被“音乐标签”那软件霍霍了个遍
![《凹凸世界五周年》《葬送的芙莉莲》](./musictag_misfetch.webp)
---
刮削完了需要按上面的官方要求组织这些歌曲,毕竟 Jellyfin 不支持读取音乐标签自动聚合(这点在上面援引的博客中也吐槽了)。我个人用 Mp3tag 做批量重命名。相比起音乐标签Mp3tag 重命名时允许字符串格式化,比如`$replace``$num`,方便一点。
Jellyfin 的音频搜集**仅以专辑为依据**。官方文档自己也说“as long as each album is contained within one folder”翻译过来就是“只需确保一张专一个文件夹”。所以文件结构自然也以专辑为准。
### 音频音声的刮削与组织
不同于歌曲的刮削,音声**通常是没有标签**的。所以首先需要人为对这些音声进行分类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 批量为这些音声的作者、年份字段打上标注,或是在专辑字段打上“谁谁的限定音声”,都行。

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB