Files
blogs/docs/notes/JellyfinFileOrg.md
SilverAg.L 56c2eb882f
All checks were successful
部署文档 / build (push) Successful in 4m22s
Edit Note: Jellyfin File Org
append notes about album\discs.
2025-07-06 22:59:38 +08:00

198 lines
9.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 批量为这些音声的作者、年份字段打上标注,或是在专辑字段打上“谁谁的限定音声”,都行。