Fork of https://github.com/Alplox/teles
Open-source PWA project for displaying multiple TV streams in a grid or single view.
- Display multiple channels simultaneously in a grid
- Single-view mode with channel sidebar
- Support for M3U8 links, iframes, and YouTube streams
- Responsive interface with light/dark themes
- Installable as a PWA (Progressive Web App)
- Tools for validating and managing channels
index.html
– Main UI and entry pointassets/
– Static resourcesjs/
– Application logic and helperscss/
– Stylesheetsimg/
– Images and iconsjson-tv/
– Channel datatv-channels.json
– Main channel filetv-channels.m3u
– M3U playlisttools/
– Utilities for data manipulation and validation
- Node.js (for
tools/
scripts) - A static server to serve the PWA
- Clone the repository
- Serve locally (from the repo root):
npx http-server -c-1 . -p 8080
# Open http://localhost:8080
# Sort IPTV channels by country
node ./tools/sort_json_by_country.js
# Lightweight validation without dependencies
node ./tools/validate_json_light.js
# Generate a status report and update the JSON channel list
node ./tools/report_status_channels.js
node ./tools/update_list_channels.js
The channels are located in json-tv/tv-channels.json
. Each key is a unique ID, and the object must follow the structure:
"id": {
"name": "Channel Name",
"logo": "url_logo",
"signals": {
"m3u8_url": ["..."],
"iframe_url": [],
"yt_id": "",
"yt_embed": "",
"yt_playlist": "",
"twitch_id": ""
},
"website": "",
"category": "news",
"country": "cl"
}
- Validate the JSON before uploading changes with scripts in
tools/
- Keep keys unique and descriptive
- Periodically check the status of M3U8 links
- Increase the timeout in scripts if many links appear as unavailable
- Review unavailable links and update the JSON when necessary