Readme update
This commit is contained in:
@@ -27,16 +27,20 @@ This demo runs with sample XMLTV feeds to showcase the interface.
|
||||
## ✨ Features
|
||||
|
||||
- 🎛️ **Timeline grid** — horizontal EPG-style view with a live "now" indicator
|
||||
- 📅 **Date in timebar** — midnight markers show the day/date so you always know where you are
|
||||
- 📱 **Responsive** — optimized list view on mobile
|
||||
- ⏱️ **Live progress bar** on the currently airing program
|
||||
- 🕶️ **Past programs** automatically dimmed
|
||||
- 📋 **Hover tooltip** — title, synopsis, season/episode, schedule, duration
|
||||
- 🎬 **Program popup** — click any program for full details + IMDb search link
|
||||
- 🔗 **One-click copy** buttons for EPG & M3U URLs in the topbar
|
||||
- ▶️ **Built-in HLS player** — click any channel or live program to watch in a PiP overlay
|
||||
- 🔀 **HTTP→HTTPS proxy** — streams Tunarr over HTTP transparently from an HTTPS page
|
||||
- 🎨 **Theme system** — drop a CSS file in `themes/` and it appears in the menu automatically
|
||||
- 📡 **Multi-EPG sources** — configure multiple EPG/M3U sources, switch from the topbar
|
||||
- 👤 **Personal EPG** — optionally let visitors use your instance with their own EPG/M3U URLs (saved in localStorage)
|
||||
- 🔍 **Search** — filter the grid by channel name or program title/synopsis (debounced)
|
||||
- 🌍 **i18n** — auto-detects browser language, supports EN / FR / ES (add your own in `locales/`)
|
||||
- ⚙️ **Guided setup** on first launch — no config files to edit manually
|
||||
- 🔄 **Auto-reload** EPG every 30 minutes
|
||||
- 0️⃣ **Zero JS dependencies** — vanilla PHP, hls.js loaded from CDN
|
||||
@@ -208,21 +212,25 @@ gridtv/
|
||||
├── Dockerfile
|
||||
├── docker-compose.yml
|
||||
├── .gitignore # config.json excluded
|
||||
├── locales/ # i18n translation files
|
||||
│ ├── en.json
|
||||
│ ├── fr.json
|
||||
│ └── es.json
|
||||
├── themes/ # CSS theme files
|
||||
│ ├── default.css
|
||||
│ ├── magazine.css
|
||||
│ ├── cyberpunk.css
|
||||
│ └── steampunk.css
|
||||
└── src/
|
||||
├── config.php # Config loader + migration
|
||||
├── config.php # Config loader, migration, locale detection
|
||||
├── tpl/ # HTML templates
|
||||
│ ├── head.php # DOCTYPE, <head>, CSS
|
||||
│ ├── topbar.php # Topbar (nav, source switcher, search, theme)
|
||||
│ ├── grid.php # Grid + mobile + PiP + overlays
|
||||
│ ├── modals.php # Personal EPG modal
|
||||
│ ├── modals.php # Program info modal + Personal EPG modal
|
||||
│ └── footer.php # JS modules loader, </body></html>
|
||||
└── js/ # JavaScript modules
|
||||
├── config.js # Constants + PHP-injected vars
|
||||
├── config.js # Constants + PHP-injected vars (incl. locale)
|
||||
├── utils.js # Helpers, clock, EPG fetch
|
||||
├── epg.js # Grid rendering
|
||||
├── mobile.js # Mobile list view
|
||||
@@ -232,6 +240,7 @@ gridtv/
|
||||
├── player.js # HLS PiP player
|
||||
├── themes.js # Theme switcher
|
||||
├── search.js # Search + filter (debounced)
|
||||
├── program.js # Program info modal + IMDb link
|
||||
└── live.js # Live updates + responsive
|
||||
```
|
||||
|
||||
@@ -296,6 +305,22 @@ GridTV parses the standard **XMLTV format**. Tested with:
|
||||
- ✅ [Jellyfin](https://jellyfin.org/)
|
||||
- ✅ Any XMLTV-compliant source
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 🌍 Internationalization
|
||||
|
||||
GridTV auto-detects the visitor's browser language and serves the matching locale. Supported out of the box: **English**, **French**, **Spanish**.
|
||||
|
||||
To add a new language, create a file in `locales/` based on an existing one:
|
||||
|
||||
```bash
|
||||
cp locales/en.json locales/de.json
|
||||
# then translate the values
|
||||
```
|
||||
|
||||
GridTV will automatically pick it up for browsers with that language set — no code changes needed.
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Contributing
|
||||
@@ -322,7 +347,10 @@ GNU Affero General Public License v3.0 (AGPLv3)
|
||||
- Personal EPG (localStorage)
|
||||
- Modular codebase (src/tpl + src/js)
|
||||
- Docker support
|
||||
- **Search** — filter grid by channel name or program title/synopsis
|
||||
- **Search** — filter grid by channel name or program title/synopsis (debounced)
|
||||
- **Date in timebar** — midnight markers with day/date in the ruler
|
||||
- **Program popup** — full details + IMDb search link on any program click
|
||||
- **i18n** — EN / FR / ES with browser auto-detection, extensible via locales/
|
||||
|
||||
### 🔜 Coming soon
|
||||
- **Favorites** — pin channels to the top of the grid (localStorage)
|
||||
|
||||
Reference in New Issue
Block a user