Tvapp2
Automatic M3U playlist and XML guide updater for IPTV clients.
Install / Use
/learn @TheBinaryNinja/Tvapp2README
[![Version][github-version-img]][github-version-uri] [![Downloads][github-downloads-img]][github-downloads-uri] [![Size][github-size-img]][github-size-img] [![Last Commit][github-commit-img]][github-commit-img] ![Contributors][contribs-all-img]
<!-- prettier-ignore-end --> <br /> <div align="center"> </div> </div> <br /><br />
- About
- Building
TVApp2Image - Using
tvappImage - Traefik Integration
- Authentik Integration
- Troubleshooting
- Run Error:
Warning: Step size 60 higher than possible maximum of 59 - Run Error:
Error serving playlist: ENOENT: no such file or directory, open /usr/src/app/xmltv.1.xml - Build Error:
s6-rc-compile: fatal: invalid /etc/s6-overlay/s6-rc.d/certsync/type: must be oneshot, longrun, or bundle - Build Error:
unable to exec /etc/s6-overlay/s6-rc.d/init-envfile/run: Permission denied - Build Error:
[ERR] [27] Jellyfin.LiveTv.Guide.GuideManager: Error getting programs for channel XXXXXXXXXXXXXXX (Source 2) System.Xml.XmlException: '', hexadecimal value 0x1F, is an invalid character. Line 1, position 1.
- Run Error:
- Extra Notes
- 🏆 Dedication
- ✨ Contributors
<br />
About
TVApp2 is a docker image which allows you to download M3U playlist and EPG guide data which can be plugged into your IPTV applications such as Jellyfin, Plex, and Emby. It is a revision of the original app by dtankdempse which is no longer available. This app fetches data for:
- TheTvApp
- TVPass
- MoveOnJoy
- <sub>More coming soon</sub>
This project contains several repositories which all share the same code; use them as backups:
- 🔀 dockerhub:thebinaryninja/tvapp2
- 🔀 github:thebinaryninja/tvapp2
- 🔀 gitea:git.binaryninja.net/binaryninja/tvapp2
Quick Install
To install TVApp2 in docker; you will need to use either the 🗔 docker run command, or create a 📄 docker-compose.yml file which contains information about how to pull and start up.
Type out your 🗔 docker run command, or prepare a 📄 docker-compose.yml script. Examples are provided below. We have also provided charts with a list of the registries you can pull the image from, and a list of all the available environment variables you can use.
Pick one registry URL from the list Registry URLs and put it in your 🗔 docker run command, or in your 📄 docker-compose.yml.
For the environment variables, you may specify these in your 🗔 docker run command or 📄 docker-compose.yml file. See the examples below.
Registry URLs
| Pull URL | Registry | Architecture | Version |
| --- | --- | --- | --- |
| ghcr.io/thebinaryninja/tvapp2:latest<br />ghcr.io/thebinaryninja/tvapp2:development | Github | amd64 / arm64 | [![Github - Version][github-docker-version-img]][github-docker-version-uri] |
| thebinaryninja/tvapp2:latest<br />thebinaryninja/tvapp2:development | Dockerhub | amd64 / arm64 | [![Github - Version][dockerhub-docker-version-img]][dockerhub-docker-version-uri] |
| git.binaryninja.net/binaryninja/tvapp2:latest<br />git.binaryninja.net/binaryninja/tvapp2:development | Gitea | amd64 / arm64 | [![Gitea - Version][gitea-docker-version-img]][gitea-docker-version-uri] |
Environment Variables
The following is a list of environment variables you can declare within your docker-compose.yml or docker run command:
<br />[!CAUTION]
Do not add"quotation marks to environment variables.✔️ Correct
environment: - TASK_CRON_SYNC=*/60 * * * *❌ Incorrect
environment: - TASK_CRON_SYNC="*/60 * * * *"
| Env Var | Default | Description |
| --- | --- | --- |
| TZ | Etc/UTC | Timezone for error / log reporting |
| WEB_IP | 0.0.0.0 | IP to use for webserver |
| WEB_PORT | 4124 | Port to use for webserver |
| WEB_FOLDER | www | Internal container folder to keep TVApp2 web files in. <br /><br /> <sup>⚠️ This should not be used unless you know what you're doing</sup> |
| WEB_ENCODING | deflate, br | Defines the HTTP Accept-Encoding request and response header. This value specifies what content encoding the sender can understand<br /><br />Gzip compression can be enabled by specifying 'gzip, deflate, br', however, it may break Jellyfin users. |
| WEB_PROXY_HEADER | x-forwarded-for | Defines the header to look for when finding a client's IP address. Used to get a client's IP when behind a reverse proxy or Cloudflare |
| HDHR_PORT | 6077 | HDHomeRun server default listening port |
| URL_REPO | https://git.binaryninja.net/BinaryNinja/ | Determines where the data files will be downloaded from. Do not change this or you will be unable to get M3U and EPG data. |
| FILE_URL | urls.txt | Filename for urls.txt cache file |
| FILE_M3U | playlist.m3u8 | Filename for M3U playlist file |
| FILE_EPG | xmltv.xml | Filename for XML guide data file |
| FILE_GZP | xmltv.xml.gz | Filename for XML compressed as gzip .gz |
| STREAM_QUALITY | hd | Stream quality<br />Can be either hd or sd |
| TASK_CRON_SYNC | 0 0 */3 * * | Defines how often to refresh the M3U and XML IPTV data |
| HEALTH_TIMER | 600000 | How often (in milliseconds) to run a health check |
| DIR_BUILD | /usr/src/app | Path inside container where TVApp2 will be built. <br /><br /> <sup>⚠️ This should not be used unless you know what you're doing</sup> |
| DIR_RUN | /usr/bin/app | Path inside container where TVApp2 will be placed after it is built <br /><br /> <sup>⚠️ This should not be used unless you know what you're doing</sup> |
| LOG_LEVEL | 4 | Level of logging to display in console<br/>7 Trace <sup><sub>& below</sub></sup><br />6 Verbose <sup><sub>& below</sub></sup><br />5 Debug <sup><sub>& below</sub></sup><br />4 Info <sup><sub>& below</sub></sup><br />3 Notice <sup><sub>& below</sub></sup><br />2 Warn <sup><sub>& below</sub></sup><br />1 Error <sup><sub>only</sub></sup> |
Mountable Volumes
These paths can be mounted and shared between the TVApp2 docker container and your host machine:
| Container Path | Description |
| --- | --- |
| 📁 /usr/bin/app | <sub>Path where TVApp2 files will be placed once the app has been built. Includes 📄 formatted.dat, 📄 xmltv.1.xml, 📄 urls.txt, 📁 node_modules,
Related Skills
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
prose
344.4kOpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
frontend-design
99.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
