Patch 2025.12.3
The playlist:test script with the --fix option enabled will now skip streams marked as "Geo-blocked" or "Not 24/7" to avoid removing potentially working links (https://github.com/iptv-org/iptv/pull/30011).
For example, this command:
npm run playlist:test streams/hr.m3u --- --fix
streams/hr.m3u
┌─────┬───────────────────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────┬───────────────┬──────────────────────────────┐
│ │ tvg-id │ url │ label │ status │
├─────┼───────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────┼───────────────┼──────────────────────────────┤
│ 0 │ BravoKidsTV.hr@SD │ https://streaming.social3.hr/play/r3CK_tdsFIFL3bN7w4NW1plrwsCToUBsRFjhxM68sZY/m3u8 │ │ OK │
│ 1 │ BravoTV.hr@SD │ https://streaming.social3.hr/bravoTVkdjd7djd/XAbSERW5p3/2.m3u8 │ │ OK │
│ 2 │ CMCTV.hr@SD │ https://stream.cmctv.hr:49998/cmc/live.m3u8 │ │ OK │
│ 3 │ DiadoraTV.hr@SD │ https://diadoratv.stream/live/diadora/playlist.m3u8 │ │ OK │
│ 4 │ ExtraTV.hr@SD │ https://streaming.social3.hr/ExtraTVudzdhr5/uUankWqpXD/1.m3u8 │ │ OK │
│ 5 │ HRT1.hr@SD │ https://webtvstream.bhtelecom.ba/hrt1.m3u8 │ │ OK │
│ 6 │ HRT1.hr@HD │ https://bpcdnmanprod.nexttv.ht.hr/bpk-tv/HRT1/default/index.mpd │ Geo-blocked │ HTTP_404_NOT_FOUND │
│ 7 │ HRT2.hr@SD │ https://webtvstream.bhtelecom.ba/hrt2.m3u8 │ │ OK │
│ 8 │ HRT2.hr@HD │ https://bpcdnmanprod.nexttv.ht.hr/bpk-tv/HRT2/default/index.mpd │ Geo-blocked │ HTTP_404_NOT_FOUND │
│ 9 │ HRT3.hr@SD │ https://webtvstream.bhtelecom.ba/hrt3.m3u8 │ │ OK │
│ 10 │ HRT3.hr@HD │ https://bpcdnmanprod.nexttv.ht.hr/bpk-tv/HRT3/default/index.mpd │ Geo-blocked │ HTTP_404_NOT_FOUND │
│ 11 │ HRT4.hr@HD │ https://bpcdnmanprod.nexttv.ht.hr/bpk-tv/HRT4/default/index.mpd │ Geo-blocked │ HTTP_404_NOT_FOUND │
│ 12 │ KlapeiTambureTV.hr@SD │ https://stream.cmctv.hr:49998/kit/live.m3u8 │ │ OK │
│ 13 │ Klasik.hr@SD │ https://178.253.194.105/klasiktv/playlist.m3u8 │ Not 24/7 │ ERR_TLS_CERT_ALTNAME_INVALID │
│ 14 │ LibertasTV.hr@SD │ https://stream.luci.xyz/hls/LTV.m3u8 │ │ OK │
│ 15 │ OTV.hr@SD │ https://stream.agatin.hr:3559/live/otvlive.m3u8 │ Not 24/7 │ ECONNREFUSED │
│ 16 │ RadioTelevizijaBanovin... │ https://pool.alter-media.hr:1936/live/myStream/playlist.m3u8?DVR= │ Not 24/7 │ OK │
│ 17 │ SBTV.hr@SD │ https://live.leveex.hr/hls/live.m3u8 │ Not 24/7 │ OK │
│ 18 │ STV.hr@SD │ http://89.201.163.244:8080/hls/hdmi.m3u8 │ │ OK │
│ 19 │ TrendTV.hr@SD │ http://185.62.75.22:1935/trend/myStream/playlist.m3u8 │ │ TIMEOUT │
│ 20 │ TVJadran.hr@SD │ https://tvjadran.stream.agatin.hr:3412/live/tvjadranlive.m3u8 │ Not 24/7 │ OK │
│ 21 │ TVNova.hr@SD │ https://stream.agatin.hr:3727/live/tvnovalive.m3u8 │ │ OK │
│ 22 │ TVZapad.hr@SD │ http://85.94.67.158/TVZAPAD/index.fmp4.m3u8 │ Not 24/7 │ HTTP_404_NOT_FOUND │
└─────┴───────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────┴───────────────┴──────────────────────────────┘
8 problems (0 errors, 8 warnings)
will not delete any links.
Test results:
npm test
> test
> jest --runInBand
PASS tests/commands/playlist/validate.test.ts (5.04 s)
PASS tests/commands/playlist/test.test.ts
PASS tests/commands/playlist/generate.test.ts
PASS tests/commands/playlist/edit.test.ts
PASS tests/commands/readme/update.test.ts
PASS tests/commands/playlist/update.test.ts
PASS tests/commands/playlist/format.test.ts
PASS tests/commands/report/create.test.ts
PASS tests/commands/playlist/export.test.ts
Test Suites: 9 passed, 9 total
Tests: 12 passed, 12 total
Snapshots: 0 total
Time: 21.543 s
Ran all test suites.
From my side mpd streams works
5 HRT1.hr@SD https://webtvstream.bhtelecom.ba/hrt1.m3u8
6 HRT1.hr@HD https://bpcdnmanprod.nexttv.ht.hr/bpk-tv/HRT1/default/index.mpd
7 HRT2.hr@SD https://webtvstream.bhtelecom.ba/hrt2.m3u8
8 HRT2.hr@HD https://bpcdnmanprod.nexttv.ht.hr/bpk-tv/HRT2/default/index.mpd
9 HRT3.hr@SD https://webtvstream.bhtelecom.ba/hrt3.m3u8
10 HRT3.hr@HD https://bpcdnmanprod.nexttv.ht.hr/bpk-tv/HRT3/default/index.mpd
11 HRT4.hr@HD https://bpcdnmanprod.nexttv.ht.hr/bpk-tv/HRT4/default/index.mpd
streamlink https://bpcdnmanprod.nexttv.ht.hr/bpk-tv/HRT1/default/index.mpd
[cli][info] Found matching plugin dash for URL https://bpcdnmanprod.nexttv.ht.hr/bpk-tv/HRT1/default/index.mpd
Available streams: 270p (worst), 360p, 576p, 720p_alt, 720p, 1080p (best)
Well, there's nothing I can do about that. On my end, the links are definitely not accessible and return a 404 (Not Found) error. Plus, according to this report (https://check-host.net/check-report/3489472dkc0d), they don't work in most countries.
The only solution I can think of is to add a "Geo-blocked" label to these links, and then the script will skip them as well.
Example updated.
For now, I've decided to just skip links with a 403 code (https://github.com/iptv-org/iptv/pull/30294), but if someone can hook up the check-host.net API without significantly increasing the verification time and staying within the request limits, that would be great.