---
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”，翻译过来就是“只需确保一张专一个文件夹”。所以文件结构自然也以专辑为准。

### 音频音声的刮削与组织

不同于歌曲的刮削，音声**通常是没有标签**的。所以，首先需要人为对这些音声进行分类：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 批量为这些音声的作者、年份字段打上标注，或是在专辑字段打上“谁谁的限定音声”，都行。
