My first C# project!
TheTVApp (https://thetvapp.to) is an aggregation service for FTA (free-to-air; https://en.wikipedia.org/wiki/Free-to-air) TV channels, but the interface on their website leaves much to be desired. This plugin enables the channels on TheTVApp to be played on Jellyfin.
After installing the plugin, no additional configuration is required, and you can immediately start watching the channels after performing a simple guide refresh.
To build the plugin, run the following commands:
dotnet build --configuration Release
The plugin will be output to Jellyfin.Plugin.TheTVApp/bin/Release/net8.0/Jellyfin.Plugin.TheTVApp.dll
.
If you built the plugin yourself, use the dll
file(s) you generated. If you didn't, download the latest nightly build here.
The files needed are:
-
Jellyfin.Plugin.TheTVApp.dll
-
OpenAI.dll
-
System.Memory.Data.dll
-
System.ClientModel.dll
-
Put the files in
/config/plugins/thetvapp
(or the directory for your installation method) and restart Jellyfin. Jellyfin will take care of the rest.
Tested on Jellyfin 10.10.3.
This plugin requires a little bit of configuration. To pick up channels, the plugin needs an OpenAI API key so it can deobfuscate the encryption key for the HLS streams.
It uses the typical configuration flow for a plugin.
To get the key, go to OpenAI's API website and sign up for a key.
TheTVApp encrypts their HLS Stream URLs with a custom Vigenère-like cipher, but the key itself is obfuscated in the client-side JavaScript.
There's no easy way to write a program that can extract the key from the JavaScript, so instead we use an LLM with a finely tuned system prompt to extract the key.
You can see the system prompt here and my reverse engineering journal here.
This project is GPLv3 licensed, like the rest of Jellyfin.
If you are better at C# than I am, please feel free to contribute to this project with a PR.
- Add better marquee pictures to the channels (currently using the same image for all channels)
- Fetch channel numbers
- Add DVR functionality
- Add more specific tags to programs:
IsLive
,IsForKids
,IsNews
,IsSports
, etc.