This repository contains the jellyfin-plugin-tvheadend-api
, a Jellyfin plugin that integrates with the TVHeadend API to provide seamless live TV, EPG (Electronic Program Guide), and recording functionality. The plugin is built to leverage the powerful TVHeadend backend while ensuring a smooth experience within Jellyfin.
Note: This plugin exclusively uses the TVHeadend API and does not support the custom HTSP protocol.
- Features
- Requirements
- Installation
- Usage
- Configuration
- Developer Guide
- License
- Contributing
- Acknowledgments
- Contact
- Live TV Support: Fetch and stream live TV channels from TVHeadend.
- EPG Integration: Display an electronic program guide with detailed program metadata.
- Recording Management: Schedule, update, and manage recordings directly from Jellyfin.
- Automatic Series Timers: Create automatic recording rules for series.
- Content Filtering: Leverage TVHeadend content types and tags for advanced filtering.
- Jellyfin 10.10 or later
- TVHeadend 4.3 or later
- A configured TVHeadend server with accessible API endpoints.
- Add the following repository to your Jellyfin plugin settings:
https://raw.githubusercontent.com/john-pierre/jellyfin-plugin-tvheadend-api/refs/heads/main/manifest.json
- Install the
TVHeadend API
plugin from the repository. - Set up your TVHeadend server, ensuring the API is enabled and accessible.
- Configure the plugin via the Jellyfin admin interface:
- Navigate to
Dashboard > Plugins > TVHeadend API
. - Provide your TVHeadend server details (host, port, credentials, etc.).
- Click
Save
and ensure the status reportsOK
.
- Navigate to
- Ensure your TVHeadend instance is set up and running.
- Fill in the URL to your TVHeadend instance in the plugin settings.
- Provide additional configuration, such as:
- Username and Password for TVHeadend API access.
- Auth Token for accessing images (not streams).
- Click
Save
and confirm that the plugin status reportsOK
. - Navigate to the Jellyfin live TV section or EPG to access your channels and recordings.
Note: All configuration changes are applied at runtime without restarting the plugin.
The following settings are configurable within the plugin:
- Host: TVHeadend server hostname or IP address.
- Port: TVHeadend API port.
- Use SSL: Enable for HTTPS connections.
- Ignore Certificate Errors: Useful for self-signed certificates.
- Webroot: Specify the webroot path.
- Allow Anonymous Access: If enabled, no authentication is required.
- Username: TVHeadend username.
- Password: TVHeadend password.
- Auth Token: Required only for accessing channel images.
Note:
- API requests use Basic Authentication via HTTP headers.
- Streams use Basic Authentication embedded in the URL.
- Streaming Profile: Profile for streaming.
- BufferMs: Buffer size in milliseconds.
- FallbackMaxStreamingBitrate: Maximum streaming bitrate in kbps.
- AnalyzeDurationMs: Stream analysis duration in milliseconds.
- Supports Transcoding: Enable transcoding support.
- Supports Probing: Enable stream probing.
- Supports Direct Play: Enable direct playback.
- Supports Direct Stream: Enable direct streaming.
- Is Infinite Stream: Treat stream as infinite.
- Ignore DTS: Ignore DTS timestamps.
- Priority: Priority for recordings.
- PrePaddingSeconds: Pre-padding time in seconds.
- PostPaddingSeconds: Post-padding time in seconds.
- Recording Profile: Profile for recordings.
To simplify the development process, you can use Docker to set up Jellyfin with the TVHeadend plugin.
-
Clone the repository:
git clone https://github.com/john-pierre/jellyfin-plugin-tvheadend-api.git cd jellyfin-plugin-tvheadend-api
-
Use the provided
docker-compose.yml
file to build and start the environment:docker-compose -p jellyfin-plugin-tvheadend-api up --always-recreate-deps --renew-anon-volumes --force-recreate -d --build
-
Access Jellyfin at
http://localhost:8096
.
- Logs automatically filter sensitive information, such as passwords and authentication tokens, to ensure data security.
- Ensure debug logs do not expose unnecessary details in production environments.
This project is licensed under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for details.
Contributions are welcome! Please submit issues, feature requests, or pull requests to improve the plugin.
For questions or support, please open an issue or contact the repository maintainers.