Found via each station's own official "diretta/streaming" page, following
embedded iframes (several use a shared white-label player at
player.streamshow.it/hosted/*.php) one level deeper to the real .m3u8.
No hosting infrastructure was brute-forced. Verified 3x each with
check_channels.py, all consistently alive:
- TVL (TV Libera Pistoia): new mariatvcdn.it host (old one dead)
- Teatro Tv: teatrotv.iostream.it (old m.iostream.it path dead)
- Tele Belluno: new mariatvcdn.it host + path
- Tele Cupole: azotosolutions.com load-balancer (old newradio.it dead)
- Tele Ischia: new streamlock.net host
- Tele Radio Ercolano: same saiuzwebnetwork.it provider, working path
- Teleiblea: same streamlock.net provider, working host
- Vera Tv: streamshow.it CDN (old shared streamshow.it host dead)
TG Norba 24 was listed twice under two different EPG rows with the same
tgv-id (TGNorba24.it) - one already pointed at a working
live-telenorba.cdn.netrw.it URL, the other (router.xdevel.com) was dead.
Removed the dead duplicate rather than adding a third entry.
29 other Italian local stations were also researched but had no
findable working replacement (site down, JS-injected player with no
static URL, or official embed itself already dead) - left unchanged.
mediapolis.rai.it's relinker service is now Italy-IP-gated: with
forceUserAgent it 302s to a "video not available" placeholder MP4
(the "raw binary" symptom this repo's checker was seeing), without it
Akamai returns a plain 403. RAI's own official pages (raiplay.it) still
embed the same dead relinker pattern, and no working parameter/domain
variant was found - this isn't a broken link, it's a geo-restriction
that happens to also break for the CI runner's non-Italian IP.
Found a third-party CDN mirror (d3k8wzt41aflvx.cloudfront.net) already
re-serving RAI's linear feeds unrestricted, in the same vein as the
existing Rai4K/UniNettuno akamaized.net mirrors already in this list.
Verified each with curl (multi-quality master playlist, real segment
references) and with check_channels.py (3x each): Rai 2/3/Premium/
Storia/Scuola came back consistently alive, Rai 1 flaky (2/3 ok, real
content each time) - consistent with general CDN flakiness elsewhere
in this list, not a sign the URL is wrong.
Dropped the Ⓖ marker on these 6 since the mirror isn't geo-blocked.
Rai 4, Rai 5, Rai Movie, Rai Gulp, Rai YoYo, Rai Sport, and Rai Radio 2
Visual Radio are not on this mirror and were left unchanged (still
pointing at the geo-gated relinker, since that's genuinely the current
official source and may still work for viewers with an Italian IP).
Issue #483: these circled-letter suffixes are in-list markers for
human readers (subscription-required, geo-blocked, YouTube-sourced,
etc.), but were leaking into the generated tvg-name verbatim (e.g.
tvg-name="Rai 1 Ⓖ"), breaking EPG matching for any provider keying
off channel name. Now stripped from tvg-name only; the display name
after the comma still shows the marker as before.
- Telenorba was added via YouTube live (issue #1015 asked for the
play.telenorba.it site). That site is a JS SPA; traced its player
bundle to play.norbaonline.it, which resolves to the same
live-telenorba.cdn.netrw.it CDN already used by Antenna Sicilia.
Swapped in the direct HLS master playlist.
- Added TG Norba 24 as a separate channel (same CDN, different path),
with its Wikimedia Commons logo.
- Antenna Sud / Antenna Sud Extra (live.antennasudwebtv.it:9443) now
time out; replaced with working URLs from the sibling
live-antennasud.cdn.netrw.it CDN.
- New lists/turkmenistan.md: all 8 national channels from issue #1023,
verified working.
- Italy: added Telenorba (Puglia regional) via its YouTube live
channel, the given URL was an HTML embed page not a stream. #1015
- France: added Handicap TV, verified working. #1049
- North Macedonia: the MRT public broadcaster channels use Windows
Media auth tokens with validminutes=30 baked into the URL - they
expire 30 minutes after being generated regardless of viewer
location, so no static URL can fix them. Moved 10 other dead
channels (timeout/404, no replacement found) to Invalid. #1025
* Add channel number to M3U line formatting
Add tvg-chno support using channel number from markdown lists
- Extract channel number from md lists
- Add tvg-chno attribute to M3U output
- Skip invalid values (e.g. 0)
Improves channel ordering in IPTV clients like Jellyfin
* Update make_playlist.py
Add tvg-chno support using channel number from markdown lists
- Extract channel number from md lists
- Add tvg-chno attribute to M3U output
- Skip invalid values (e.g. 0)
Improves channel ordering in IPTV clients like Jellyfin
* Delete playlists/playlist_italy.m3u8
delete italy playlist for updating with channel number
* Italy playlist updated with channel number
Add ISO 3166-1 alpha-2 country codes via tvg-country attribute
to all #EXTINF lines, enabling IPTV players to filter and display
channels by country.
Co-authored-by: Kálmán „KAMI” Szalai <kami911gmail.com>