Jellyfin Customization
This is an ongoing project to change undesirable behaviors of Jellyfin, encompassing its server, Android TV and web UI.
List of Codebases
- Jellyfin Ubuntu Server [C#]
- Jellyfin Web-UI [TypeScript]
- Jellyfin AndroidTV [Java, Kotlin]
List of Mods
- Speed jump to episode by index
- Auto-play after time-seeking
- Time-seeking using number input as in HH:MM:SS
- Preferred audio and subtitle language setting per series
- Make seasons non mandatory for TV series
- Disentangle the logic to remove an item from its metadata from file deletion.
Speed jump to episode by index
This idea came out of the need to find the item I want from a huge list. Sometimes the list can exceed 1000 items. To endlessly scroll to the right is rather tedious and inefficient. I was originally planning to redesign the layout from horizontal row to a grid, like how Movies and TV Series are displayed. It quickly became obvious that it is still not efficient and that the modification is quite involved. Remembering how we switched channels before the Smart TV came out, I decided to write a key listener for that specific layout, which listens for consecutive number inputs in quick succession. I got it to work within a few hours in the emulator. The true excitment came when I tested it on my 77” TV.
Auto-play after time-seeking
The Jellyfin AndroidTV requires the user to press the “ENTER” button to resume playing after time-seeking (a.k.a. scrubbing the progress bar). Many people including me find this behavior rather annoying. Using breakpoints, I discovered that this is the default behavior of Leanback library, which is used by Jellyfin to handle the heavylifting of video playback.
Time-seeking using number input as in HH:MM:SS
The idea is to quickly navigate to a timestamp using number input. The entered numbers will be parsed in the format of HH:MM:SS from the right, like how Banking app interprets 1234 as 12.34 without you having to enter the decimal point.
Preferred audio and subtitle language setting per series
You can only change this on the web UI episode by episode!
Make seasons non mandatory for TV series
How about just play the episodes in the order they are numbered in the file system? Most Asian TV dramas are not released by seasons. Imposing a season system on everyone is not right.
Disentangle the logic to remove an item from its metadata from file deletion
This is yet another idiosyncracy of Jellyfin. The Server actually has this option to not delete files from the file system when removing the record in its metadata. However this option options.DeleteFileLocation is actually hardcoded to true in the API handling HTTP Request.