Is your feature request related to a problem?
There's no way for an IPTV client (TiviMate, Kodi, VLC, Infuse, etc.) to browse and play DVR recordings without running additional external tooling to generate a playlist. The recordings exist, the file serving exists, the metadata exists, but there's no M3U output that ties it together for a client to consume.
Describe the solution you'd like
Add M3U and XMLTV output endpoints for completed DVR recordings, surfaced on the DVR page the same way the Channels page already exposes its M3U/EPG copy-URL buttons:
GET /output/m3u/recordings — M3U playlist of all completed recordings
GET /output/xmltv/recordings — XMLTV EPG with recording metadata
Each M3U entry would use group-title="DVR | {show title}" for per-show VOD folder grouping, with air date/resolution as the episode label, and /api/channels/recordings/{id}/file/ as the stream URL. Users paste the M3U URL into their IPTV client once; new recordings appear automatically on the next playlist refresh.
This is almost entirely already built, the existing file endpoint (/api/channels/recordings/{id}/file/) supports Range requests and requires no authentication, and the M3U/XMLTV generation pattern already exists for channels. It's a matter of applying the same output logic to recordings.
Additional context
Before filing this I validated the concept end-to-end using only dispatcharr's existing API, no modifications to dispatcharr required. Results: recordings appear correctly in TiviMate's VOD library grouped by show, playback and seeking work, and channel logos display as poster art fallback. Every piece is already in place.
A few notes for implementation consideration:
- Poster art: The recordings API doesn't store show poster URLs. Channel logos work as a fallback but are landscape-oriented and look stretched in portrait VOD UIs. Capturing a poster URL from EPG program data at record time would improve this significantly.
- Profile scoping (optional/future): A profile-scoped variant (/output/m3u/recordings/{profile}) could filter to channels within a given M3U profile, consistent with how channel output already works.
Is your feature request related to a problem?
There's no way for an IPTV client (TiviMate, Kodi, VLC, Infuse, etc.) to browse and play DVR recordings without running additional external tooling to generate a playlist. The recordings exist, the file serving exists, the metadata exists, but there's no M3U output that ties it together for a client to consume.
Describe the solution you'd like
Add M3U and XMLTV output endpoints for completed DVR recordings, surfaced on the DVR page the same way the Channels page already exposes its M3U/EPG copy-URL buttons:
GET /output/m3u/recordings — M3U playlist of all completed recordings
GET /output/xmltv/recordings — XMLTV EPG with recording metadata
Each M3U entry would use group-title="DVR | {show title}" for per-show VOD folder grouping, with air date/resolution as the episode label, and /api/channels/recordings/{id}/file/ as the stream URL. Users paste the M3U URL into their IPTV client once; new recordings appear automatically on the next playlist refresh.
This is almost entirely already built, the existing file endpoint (/api/channels/recordings/{id}/file/) supports Range requests and requires no authentication, and the M3U/XMLTV generation pattern already exists for channels. It's a matter of applying the same output logic to recordings.
Additional context
Before filing this I validated the concept end-to-end using only dispatcharr's existing API, no modifications to dispatcharr required. Results: recordings appear correctly in TiviMate's VOD library grouped by show, playback and seeking work, and channel logos display as poster art fallback. Every piece is already in place.
A few notes for implementation consideration: