Jellyfin is an excellent local media library management tool. I have heard about it before, but I haven't actually used it. Recently, I tried using it to manage the resources in my local 1TB hard drive and realized how primitive my previous methods of tracking TV shows were. So, I decided to write an article to document my exploration of Jellyfin and hopefully provide some insignificant help to newcomers in this field.
What is Local Media Library Management?
First, let's introduce the concept of "local media library management". As we all know, after downloading a video file, we can simply double-click it to play it with a video player. So why do we need "local media library management"?
Let's consider a few scenarios:
- After downloading a TV series, you watch it for a while and then put it aside. When you want to continue watching it, you forget where you left off and have to start from the beginning.
- You have accumulated a lot of TV shows, and when you open your video list, you see a clutter of folders, which makes it difficult to navigate.
- You want to easily access your videos on other devices without complicated configurations.
These are the problems that media library management software needs to solve. Specifically, the core functions of a media library management software should include:
- Being able to record the user's playback behavior of videos and resume playback at any time; optionally, supporting multiple users.
- Abstracting multiple folders as media libraries, which are updated in real-time or on a schedule; matching the video files in the folders and retrieving information such as cover images, descriptions, ratings, and cast and crew lists from an open database, making the TV show list clear and organized.
- Using a frontend-backend separation architecture, where the backend can be deployed on any host to provide APIs. Users can easily access the media library from multiple platforms (web, client apps on different platforms).
How to Install?
After briefly introducing the concept of media library management, let's now briefly describe how to install Jellyfin.
Since I am using Jellyfin on my local machine, I will only introduce the installation on Windows, but the principles are the same for other platforms.
Jellyfin adopts a frontend-backend separation approach. On Windows, it is recommended to directly use the exe installer to install Jellyfin server, which comes with a user-friendly web UI. During the installation process, you will be prompted to choose the installation mode. Installing it as a service means it will start automatically on boot, while installing it as an executable file means the server will only start when manually run.
After running the server, you can open the web UI (default address: localhost:8096) and follow the instructions to complete the initialization process.
Since the installer already includes a web UI, why do you need to install a client separately?
You see, web browsers have limited support for video formats. Therefore, when a browser encounters a video format that it doesn't support, the Jellyfin server needs to transcode the video into a format that the browser can decode, which incurs unnecessary overhead. Therefore, it is recommended to install a client locally to handle all the decoding work. This not only reduces the server load but also allows you to fully utilize the hardware performance (hardware decoding).
Here is a list of Jellyfin clients officially recommended by Jellyfin. Users can choose freely.
What is Scraping and How to Improve Scraping Success Rate?
After installation and adding media libraries, in theory, you can sit back and enjoy. As long as you update the source files of your TV shows and wait for Jellyfin to automatically refresh the metadata (or manually refresh it), the changes to the source files will be synchronized to the Jellyfin media libraries. However, ideals are lofty, and reality is cruel. To fully utilize Jellyfin, you still need to be somewhat involved in managing the source files of your TV shows, and the reason is scraping.
The term may sound complicated, but its meaning is quite simple. It refers to the process I mentioned earlier:
Matching the video files in the folders and retrieving information such as cover images, descriptions, ratings, and cast and crew lists from an open database.
Usually, the success rate of scraping movies is quite high, so I will mainly focus on TV shows. Scraping failures can generally be divided into two types:
- Unable to retrieve video information from the video folder.
- Unable to retrieve season and episode information from the video file.
After a scraping failure, Jellyfin will only display the original folder or file name of the video, without any related images or information, which greatly affects the user experience.
Since the open database used for scraping is reliable, the majority of scraping failures should not be attributed to incomplete databases, but rather to local factors. The matching process of scraping is actually based on the names of files and folders, so unreasonable file and folder naming is often the culprit of scraping failures. Although sometimes scraping can still succeed even without renaming the video files, it is recommended to use the following directory structure and naming conventions for the source files to improve the scraping success rate (using "Summer Reappearance" as an example):
Summer Reappearance └── S1 ├── S01E01.mp4 ├── S01E02.mp4 ├── S01E03.mp4 ├── S01E04.mp4 ├── S01E05.mp4 ├── S01E06.mp4 ├── S01E07.mp4 ├── S01E08.mp4 └── S01E09.mp4
The key points are:
- The top-level folder should use the full name of the TV show (original name or popular translation).
- The second-level folder is the season number (prefixed with "Season" or "S").
- The third-level file is the season number followed by the episode number.
There is already an automatic renaming tool available that you can refer to the README to use and improve the scraping success rate.
Convenient Anime Tracking
mikanani is a very convenient anime download website. Each release group in the website has its own RSS subscription link. You can subscribe to the RSS feed using a torrent client and combine it with the renaming tool to automate the entire anime tracking workflow. This way, you don't need any manual intervention, and you can simply open Jellyfin to see the latest anime updates. auto bangumi is a fully automated anime tracking tool developed based on this idea. Interested readers can explore it on their own. If you prefer semi-automated management, you can follow the steps below for configuration.
Subscribing to Anime RSS in a Torrent Client
First, copy the RSS link of the anime you want to subscribe to:
Subscribe to the link in a torrent client (using qbittorrent as an example):
Set up download rules:
Automatically rename after downloading (15 seconds after downloading, automatically use the aforementioned automatic renaming tool to rename the download directory):
After renaming the files, qbittorrent will not be able to seed them due to missing files. Currently, I haven't found a reasonable solution, so the only option is to delete the torrent after downloading and not seed it:
If any readers have a solution to keep seeding, please comment on this article. People who only download and don't seed are scum, but I have no choice... (sad
After configuring the process mentioned above, you can automatically track anime updates.
Finally, here are a few screenshots of Jellyfin!
Anime Introduction and Season Division:
Season Episode Preview and Summary: