๐ Stream-based EPG refresh for VU+ receivers
- ๐ Same CLI for both versions โ arguments and options are identical, if Python 2 or 3.
- ๐ฎ Now runnning natively on VU+ / Enigma2 receivers
- ๐ฅ No Live-TV Interruption - Stream fetching instead of zapping
- ๐บ Unlimited Channels - Processes ALL channels in bouquet
- ๐ซ Smart Channel Skipping - Skip unwanted channels via string matching
- ๐ HTTP Basic Auth - Optional username/password authentication
- โก Configurable Sweet Spot - Tune duration (0.5s - 30s)
- ๐ค Zero Dependencies - Pure Python standard library
- โฐ Automation Ready - Perfect for cron jobs
- ๐ฎ VU+ Compatible - All VU+ models with web interface
- ๐ Custom Streaming Port - Configurable streaming port (default: 8001)
# Standard refresh (4s sweet spot)
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "My Channels"
# Fast refresh (2s sweet spot)
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "Sky" --duration=2.0
# Refresh only channels with less than 5 EPG events
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "Sky" --max-events=5
# Skip specific channels (string matching)
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --skip="Sky Sport,Sky Bundesliga"
# With HTTP Basic Authentication
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --username=admin --password=secret
# Automated (for cron jobs)
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --duration=4.0 --force
# Combined: Fast refresh for channels with less than 3 EPG events, skip Sky channels
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --duration=2.0 --max-events=3 --skip="Sky" --force
# Custom streaming port (if not using default 8001)
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --streaming-port=8002
# Full featured: Auth + Skip + Duration + Force
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --username=admin --password=secret --duration=3.0 --skip="Adult,Test" --force- Python 3.6+ or 2.7+ (no external packages needed!)
- VU+ Receiver with web interface enabled
- Network connection to VU+ receiver
- Analyzes bouquet - Finds all TV/Radio services
- Checks EPG status - Identifies services without EPG data
- Fetches streams - Downloads transport stream for X seconds
- Triggers EPG update - VU+ automatically updates EPG data
- Live TV continues - No interruption to current viewing
| Duration | Use Case | Reliability | Speed |
|---|---|---|---|
| 2.0s | Quick refresh | โญโญโญ | ๐๐๐ |
| 4.0s | Standard โ | โญโญโญโญ | ๐๐ |
| 6.0s | Conservative | โญโญโญโญโญ | ๐ |
| 8.0s | Maximum | โญโญโญโญโญ | ๐ |
The --skip parameter allows skipping specific channels based on string matching:
How it works:
- Comma-separated list of search strings:
--skip="String1,String2,String3" - Case-insensitive substring matching in channel names
- Channel is skipped if any of the skip strings is contained in the name
- Perfect for excluding problematic or unwanted channels
Examples:
# Skip Sky Sport channels
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --skip="Sky Sport"
# Skip multiple categories
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --skip="Sky Sport,Sky Bundesliga,Adult"
# Exclude test and demo channels
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --skip="Test,Demo,Preview"String-Matching Examples:
--skip="Sky Sport"skips: "Sky Sport 1 HD", "Sky Sport 2", "Sky Sport News"--skip="HD"skips all HD channels--skip="Radio"skips all radio stations
For VU+/Dreambox devices with enabled web interface password protection:
Parameters:
--username=USER- HTTP Basic Auth username--password=PASS- HTTP Basic Auth password- Both parameters are optional and only needed when auth is enabled
Examples:
# Standard auth (common combinations)
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --username=admin --password=admin
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --username=root --password=dreambox
# Custom auth with other parameters
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "Sky" --username=myuser --password=mypass --duration=3.0
# Auth + Skip combined
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --username=admin --password=secret --skip="Adult,Test"Notes:
- Works with standard HTTP Basic Authentication (RFC 7617)
- Automatic URL encoding:
http://user:pass@host:port - Without auth parameters, the script works as usual
- Secure password transmission only with HTTPS (usually not available on VU+)
The --streaming-port parameter allows overriding the default streaming port:
How it works:
- Default value:
8001(standard VU+ streaming port) - Only needed if your receiver uses a non-standard streaming port
- Affects only the stream URL (
http://host:<port>/...), not the web interface port
Examples:
# Default streaming port (8001) - no parameter needed
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All"
# Custom streaming port
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --streaming-port=8002
# Combined with other options
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "Sky" --streaming-port=9001 --duration=3.0 --forceThe --max-events parameter enables intelligent EPG filtering:
How it works:
- Default value:
0= All channels without EPG will be refreshed - Value > 0: Only channels with fewer than X EPG events will be refreshed
- Prevents unnecessary refreshes on channels with existing EPG data
| max-events | Behavior | Use Case |
|---|---|---|
| 0 | All without EPG โ | Standard mode |
| 1-5 | Only with very little EPG | Fine tuning |
| 10-20 | Only with incomplete EPG | Performance optimization |
| 50+ | Almost all channels | Maintenance mode |
Examples:
# Only completely empty channels (default)
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "Sky" --max-events=0
# Refresh channels with fewer than 5 EPG events
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "Sky" --max-events=5
# Performance: Only refresh when fewer than 20 events
python vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --max-events=20 --duration=2.0# Daily at 3:00 AM
0 3 * * * cd /path/to/script && python3 vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --force
# With HTTP Auth (recommended: credentials in separate config)
0 3 * * * cd /path/to/script && python3 vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --username=admin --password=secret --forcepython C:\\path\\to\\vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --force
REM With HTTP Auth
python C:\\path\\to\\vu_stream_epgrefresh.py 192.168.1.100 bouquet "All" --username=admin --password=secret --force๐ Suche Services ohne EPG in 'Sky'...
๐บ Bouquet gefunden: Sky Deutschland HD
๐ Lade alle Services aus Bouquet...
๐บ BOUQUET 'Sky' ENTHรLT 156 SERVICES TOTAL
๐ป TV/Radio Services: 134
๐ Andere (Ordner/etc): 22
โ
Mit EPG: 89
๐ Ohne EPG: 45 โ Stream-Refresh nรถtig
๐ STREAM-BASIERTES EPG-REFRESH
Services: 45
Sweet Spot: 4.0s pro Service
โ
Live-TV wird NICHT unterbrochen!
[01/45] Sky Cinema Premiere HD ๐ก1 ๐512KB โ
24 events
[02/45] Sky Cinema Action HD ๐ก1 ๐487KB โ
18 events
...
๐ ERGEBNIS: 43/45 erfolgreich
๐ฏ Live-TV blieb ungestรถrt! 127 neue EPG-Events
๐ซ Skip Strings: ['Sky Sport']
๐ Suche Services ohne EPG in 'All'...
๐บ Bouquet gefunden: Alle Kanรคle
๐ Lade alle Services aus Bouquet...
๐บ BOUQUET 'All' ENTHรLT 200 SERVICES TOTAL
๐ซ รbersprungen: Sky Sport 1 HD (enthรคlt 'Sky Sport')
๐ซ รbersprungen: Sky Sport 2 HD (enthรคlt 'Sky Sport')
๐ซ รbersprungen: Sky Sport News HD (enthรคlt 'Sky Sport')
๐ Braucht Refresh: ARD HD ( 0 Events )
๐ Braucht Refresh: ZDF HD ( 0 Events )
โ
15 Services mit EPG analysiert...
๐ Suche Services ohne EPG in 'Sky'...
๐บ Bouquet gefunden: Sky Deutschland HD
๐ Lade alle Services aus Bouquet...
๐บ BOUQUET 'Sky' ENTHรLT 156 SERVICES TOTAL
๐ Braucht Refresh: Sky Cinema Premiere HD ( 2 Events )
๐ Braucht Refresh: Sky Cinema Action HD ( 0 Events )
๐ Braucht Refresh: Sky Sport News HD ( 4 Events )
โ
20 Services mit EPG analysiert...
๐ BOUQUET-ANALYSE:
๐บ TOTAL Services: 156
๐ป TV/Radio Services: 134
๐ Andere (Ordner/etc): 22
โ
Mit EPG: 119 (> 5 Events)
๐ Ohne EPG: 15 (โค 5 Events) โ Stream-Refresh nรถtig
๐ STREAM-BASIERTES EPG-REFRESH
Services: 15
Sweet Spot: 4.0s pro Service
โ
Live-TV wird NICHT unterbrochen!
[01/15] Sky Cinema Premiere HD ๐ก1 ๐512KB โ
24 events
[02/15] Sky Cinema Action HD ๐ก1 ๐487KB โ
18 events
...
๐ ERGEBNIS: 14/15 erfolgreich
๐ฏ Live-TV blieb ungestรถrt! 89 neue EPG-Events
The script uses these VU+ web interface endpoints:
/web/getservices- Get bouquet services/web/ts?sRef=...- Transport stream (primary)/web/stream.m3u8?ref=...- HLS stream (fallback)/web/epgservice?sRef=...- Check EPG data
Contributions welcome! This script has been tested with:
- VU+ Duoยฒ, Soloยฒ, Ultimo, Zero
- OpenATV, OpenPLi, VTi images
- Various satellite/cable/terrestrial setups
MIT License - Use freely for personal and commercial projects.
Developed by wakdo - Inspired by the need for non-disruptive EPG updates in headless VU+ setups.