A Jellyfin plugin that syncs Xtream VOD, Series, and Live TV content to native Jellyfin libraries. STRM-based movies and series with universal client compatibility, plus a native Live TV tuner with full EPG support.
.strm files containing streaming URLs for Movies and Series| HD |, [EN], UK:, codec info, and resolution suffixesStreamId=Name|Number|Logo). The logo can be an http(s) URL or a local file path readable by the Jellyfin server (bind-mount the folder into the container for Docker installs).ChannelGroup / M3U group-title)| EN |, [DE], (EN SPOKEN) for better matchingMovie Name (2023) [tmdbid-12345] for reliable matchingMovies/Kids, Series/Documentaries)The standard Xtream channel-based plugin presents content as Jellyfin "Channels" which have limited client support (particularly broken in Swiftfin). This plugin takes a different approach:
| Feature | Xtream Channels | Xtream Library (STRM) |
|---|---|---|
| Paradigm | Channel items | Native library items |
| Client support | Limited | Universal |
| Metadata | Plugin-managed | Jellyfin (TMDB/TVDb) |
| Collections | Not supported | Full support |
| Watch status | Channel-specific | Standard library |
| Live TV | Supported | Supported (native tuner + EPG) |
Add the plugin repository to Jellyfin:
+ to add a repositoryXtream Pluginshttps://firestaerter3.github.io/jellyfin-plugin-repo/manifest.jsonThen install "Xtream Library" from the plugin catalog (under General category).
/config/plugins/Xtream Library/~/.local/share/jellyfin/plugins/Xtream Library/%APPDATA%\Jellyfin\plugins\Xtream Library\Pre-release versions ship to a separate beta channel before being promoted to stable. To opt in:
Beta releases will then appear in Dashboard → Plugins → Catalog alongside stable versions. Untick the box to opt back out. Beta releases may contain bugs or incomplete features — opting in helps catch regressions before they reach the stable channel.
http://provider.com:8000)/config/xtream-library)To organize content into subfolders:
For automatic TMDb/TVDb ID lookup:
The Matrix (1999)=603Breaking Bad (2008)=81189Once enabled, go to Dashboard → Live TV in Jellyfin — the Xtream Library tuner and guide data will appear automatically. Channels are grouped by their Xtream category in the guide. To trim a large channel list down, set the Live channel mode to Custom and select only the categories you want — by default every channel the provider exposes is included.
/config/xtream-library/Movies/config/xtream-library/Series/config/xtream-library/
├── Movies/
│ ├── The Matrix (1999) [tmdbid-603]/
│ │ ├── The Matrix (1999) [tmdbid-603].strm
│ │ └── The Matrix (1999) [tmdbid-603].nfo
│ ├── Kids/ # Custom subfolder
│ │ └── Finding Nemo (2003) [tmdbid-12]/
│ │ └── Finding Nemo (2003) [tmdbid-12].strm
│ └── ...
└── Series/
├── Breaking Bad (2008) [tvdbid-81189]/
│ ├── Season 1/
│ │ ├── Breaking Bad - S01E01 - Pilot.strm
│ │ ├── Breaking Bad - S01E01 - Pilot.nfo
│ │ └── ...
│ └── Season 2/
│ └── ...
└── ...
| Endpoint | Method | Description |
|---|---|---|
/XtreamLibrary/Sync | POST | Trigger manual sync |
/XtreamLibrary/Cancel | POST | Cancel running sync |
/XtreamLibrary/Status | GET | Get last sync result |
/XtreamLibrary/Progress | GET | Get real-time sync progress |
/XtreamLibrary/History | GET | Sync history (last 10 runs) |
/XtreamLibrary/Dashboard | GET | Dashboard data (sync, progress, history, stats) |
/XtreamLibrary/FailedItems | GET | Failed items from last sync |
/XtreamLibrary/RetryFailed | POST | Retry failed items |
/XtreamLibrary/TestConnection | POST | Test Xtream provider connection |
/XtreamLibrary/TestDispatcharr | POST | Test Dispatcharr API connection |
/XtreamLibrary/Categories/Vod | GET | Fetch VOD categories |
/XtreamLibrary/Categories/Series | GET | Fetch Series categories |
/XtreamLibrary/Categories/Live | GET | Fetch Live TV categories |
/XtreamLibrary/Channels/Live | GET | Fetch channels in a Live TV category (?categoryId=) |
/XtreamLibrary/Streams/Vod | GET | Fetch movies in a VOD category (?categoryId=&providerIndex=) |
/XtreamLibrary/Series/List | GET | Fetch series in a Series category (?categoryId=&providerIndex=) |
/XtreamLibrary/CleanMovies | POST | Delete all Movies library content |
/XtreamLibrary/CleanSeries | POST | Delete all Series library content |
/XtreamLibrary/ClearMetadataCache | POST | Clear metadata lookup cache |
/XtreamLibrary/LiveTv/RefreshCache | POST | Refresh Live TV M3U/EPG cache |
/XtreamLibrary/LiveTv.m3u | GET | M3U playlist (no auth) |
/XtreamLibrary/Epg.xml | GET | XMLTV EPG data (no auth) |
/XtreamLibrary/Catchup.m3u | GET | Catch-up channels M3U (no auth) |
/XtreamLibrary/ChannelLogo/{streamId} | GET | Serve a local-path channel override logo (no auth) |
A scheduled task "Sync Xtream Library" runs automatically based on your settings:
Trigger manually from Dashboard → Scheduled Tasks.
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
C#
81.6%
JavaScript
12.4%
HTML
6.0%
A Jellyfin plugin that syncs Xtream VOD, Series, and Live TV content to native Jellyfin libraries. STRM-based movies and series with universal client compatibility, plus a native Live TV tuner with full EPG support.
.strm files containing streaming URLs for Movies and Series| HD |, [EN], UK:, codec info, and resolution suffixesStreamId=Name|Number|Logo). The logo can be an http(s) URL or a local file path readable by the Jellyfin server (bind-mount the folder into the container for Docker installs).ChannelGroup / M3U group-title)| EN |, [DE], (EN SPOKEN) for better matchingMovie Name (2023) [tmdbid-12345] for reliable matchingMovies/Kids, Series/Documentaries)The standard Xtream channel-based plugin presents content as Jellyfin "Channels" which have limited client support (particularly broken in Swiftfin). This plugin takes a different approach:
| Feature | Xtream Channels | Xtream Library (STRM) |
|---|---|---|
| Paradigm | Channel items | Native library items |
| Client support | Limited | Universal |
| Metadata | Plugin-managed | Jellyfin (TMDB/TVDb) |
| Collections | Not supported | Full support |
| Watch status | Channel-specific | Standard library |
| Live TV | Supported | Supported (native tuner + EPG) |
Add the plugin repository to Jellyfin:
+ to add a repositoryXtream Pluginshttps://firestaerter3.github.io/jellyfin-plugin-repo/manifest.jsonThen install "Xtream Library" from the plugin catalog (under General category).
/config/plugins/Xtream Library/~/.local/share/jellyfin/plugins/Xtream Library/%APPDATA%\Jellyfin\plugins\Xtream Library\Pre-release versions ship to a separate beta channel before being promoted to stable. To opt in:
Beta releases will then appear in Dashboard → Plugins → Catalog alongside stable versions. Untick the box to opt back out. Beta releases may contain bugs or incomplete features — opting in helps catch regressions before they reach the stable channel.
http://provider.com:8000)/config/xtream-library)To organize content into subfolders:
For automatic TMDb/TVDb ID lookup:
The Matrix (1999)=603Breaking Bad (2008)=81189Once enabled, go to Dashboard → Live TV in Jellyfin — the Xtream Library tuner and guide data will appear automatically. Channels are grouped by their Xtream category in the guide. To trim a large channel list down, set the Live channel mode to Custom and select only the categories you want — by default every channel the provider exposes is included.
/config/xtream-library/Movies/config/xtream-library/Series/config/xtream-library/
├── Movies/
│ ├── The Matrix (1999) [tmdbid-603]/
│ │ ├── The Matrix (1999) [tmdbid-603].strm
│ │ └── The Matrix (1999) [tmdbid-603].nfo
│ ├── Kids/ # Custom subfolder
│ │ └── Finding Nemo (2003) [tmdbid-12]/
│ │ └── Finding Nemo (2003) [tmdbid-12].strm
│ └── ...
└── Series/
├── Breaking Bad (2008) [tvdbid-81189]/
│ ├── Season 1/
│ │ ├── Breaking Bad - S01E01 - Pilot.strm
│ │ ├── Breaking Bad - S01E01 - Pilot.nfo
│ │ └── ...
│ └── Season 2/
│ └── ...
└── ...
| Endpoint | Method | Description |
|---|---|---|
/XtreamLibrary/Sync | POST | Trigger manual sync |
/XtreamLibrary/Cancel | POST | Cancel running sync |
/XtreamLibrary/Status | GET | Get last sync result |
/XtreamLibrary/Progress | GET | Get real-time sync progress |
/XtreamLibrary/History | GET | Sync history (last 10 runs) |
/XtreamLibrary/Dashboard | GET | Dashboard data (sync, progress, history, stats) |
/XtreamLibrary/FailedItems | GET | Failed items from last sync |
/XtreamLibrary/RetryFailed | POST | Retry failed items |
/XtreamLibrary/TestConnection | POST | Test Xtream provider connection |
/XtreamLibrary/TestDispatcharr | POST | Test Dispatcharr API connection |
/XtreamLibrary/Categories/Vod | GET | Fetch VOD categories |
/XtreamLibrary/Categories/Series | GET | Fetch Series categories |
/XtreamLibrary/Categories/Live | GET | Fetch Live TV categories |
/XtreamLibrary/Channels/Live | GET | Fetch channels in a Live TV category (?categoryId=) |
/XtreamLibrary/Streams/Vod | GET | Fetch movies in a VOD category (?categoryId=&providerIndex=) |
/XtreamLibrary/Series/List | GET | Fetch series in a Series category (?categoryId=&providerIndex=) |
/XtreamLibrary/CleanMovies | POST | Delete all Movies library content |
/XtreamLibrary/CleanSeries | POST | Delete all Series library content |
/XtreamLibrary/ClearMetadataCache | POST | Clear metadata lookup cache |
/XtreamLibrary/LiveTv/RefreshCache | POST | Refresh Live TV M3U/EPG cache |
/XtreamLibrary/LiveTv.m3u | GET | M3U playlist (no auth) |
/XtreamLibrary/Epg.xml | GET | XMLTV EPG data (no auth) |
/XtreamLibrary/Catchup.m3u | GET | Catch-up channels M3U (no auth) |
/XtreamLibrary/ChannelLogo/{streamId} | GET | Serve a local-path channel override logo (no auth) |
A scheduled task "Sync Xtream Library" runs automatically based on your settings:
Trigger manually from Dashboard → Scheduled Tasks.
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
C#
81.6%
JavaScript
12.4%
HTML
6.0%