Official atv.hu/streamservers.atv.hu endpoints are currently down;
the 88.212.15.19 mirror (already used for several other Hungarian
channels) serves a working direct stream instead of relying on
YouTube.
M1, M2, M5 and Duna TV had expired connectmedia.hu session tokens
(404) — replaced with the working 88.212.15.19 mirror already used
for other Hungarian channels. M4 Sport's connectmedia.hu link is
also dead but no working replacement was found (marked dead).
Hír TV's onlinestream.live link returned HTTP 200 but with an empty
stream URL in the manifest (functionally broken); no alternative
public stream was found, so marked dead rather than left silently
non-functional.
Also re-verified all regional stations: fixed Gyöngyös TV and
Kecskemét TV with working alternates, and marked AlföldTV, Kapos TV,
Lóverseny közvetítés, Zugló TV, Bajai TV and Tisza TV dead after
confirming their current links are unreachable with no replacement
found.
Stores the failed-channel snapshot as a workflow artifact (90-day
retention) and downloads the previous run's artifact for comparison,
instead of committing a state file back to the repo.
Weekly trend workflow: runs the full iptv-checker weekly, keeps a
snapshot of failed URLs in .github/checker-history/failed.txt, and
reports newly-broken vs newly-recovered channels since the last run
in the job summary.
PR check workflow: on any PR touching lists/*.md, extracts only the
added/changed stream links from the diff and checks just those (not
the whole 2000+ channel playlist), reporting online/failed results
directly in the PR's Checks summary.
Follow-up pass on remaining dead small local TV stations, using
alternate CDN paths, Wayback Machine clues, and Twitch/YouTube live
fallbacks where the repo's naming convention supports it. Verified
every replacement URL with curl before applying. Reverted one
agent-reported fix (Switzerland SRF Zwei) that no longer resolved
on independent re-check.
Italy: 9, Hungary: 2, Croatia: 1, North Macedonia: 1, Greece: 1
New country page sourced from a community-submitted playlist, with
every entry re-checked against its current live stream before
inclusion. 13 working channels (MTV Lebanon, Tele Liban, Al Manar,
Al Mayadeen, Voice of Lebanon, Noursat family, etc.), 9 more kept in
an Invalid section for channels that no longer resolve.
Sourced from the actively-maintained i.mjh.nz/.r/ resolver (Matt
Huisman's AU Freeview mirror project), which redirects to fresh,
tokenized CDN URLs on each request. Confirmed live for Seven, 7two,
7mate, 7flix, Nine, 10, 10 Peach, 10 Shake. SBS/NITV are no longer
carried by this mirror (still invalid).
Final round of the country-by-country pass against the CI
failed-channel report. Verified every replacement URL with curl
before applying. Spain VOD (all HQM Radio, provider backend down)
and USA VOD (all Bumblebee TV, CDN provider discontinued) had zero
fixable entries — confirmed the entire underlying providers are
gone, not just individual links.
Andorra, Dominican Republic, Estonia, Faroe Islands, Latvia,
Lithuania, Moldova, Netherlands, North Korea (KCTV), Peru,
San Marino: 1-2 each. VOD Italy: 10. News/Business/Weather: 4.
Continued the country-by-country pass against the CI failed-channel
report. Verified every replacement URL with curl before applying.
Denmark, Turkey, Trinidad, Norway, Macau, Bulgaria, Switzerland,
Nigeria, Hong Kong, Romania, Montenegro yielded no confident fixes
this round (mostly geo-blocked broadcasters, confirmed-dead hosts
with no findable replacement, or false-positive checker failures)
and were left untouched.
Israel: 5, Egypt: 4, Venezuela: 4, Georgia: 2, Belgium: 1 (+1 dup
removed in azerbaijan.md), Somalia: 4, Ireland: 4, Austria: 2,
Serbia: 1, Saudi Arabia: 1, Ukraine: 2, Slovenia: 1, Mexico: 3,
Kenya: 1, Costa Rica: 1, Brazil: 2, Iran: 1
Both domains are now fully unreachable (DNS failure / connection
refused), confirmed on repeated checks. 27 USA VOD and 18 Spain VOD
entries were still marked valid despite the backing CDN being gone.
Continued the country-by-country pass against the CI failed-channel
report. Verified every replacement URL with curl before applying.
Also fixed a malformed nested-bracket markdown link in belarus.md.
China: 10, Portugal: 5 (+2 duplicates removed), Poland: 6,
Korea: 2, Albania: 3, Australia: 4, Belarus: 3,
Bosnia and Herzegovina: 1, Iraq: 3, North Macedonia: 2,
Canada: 3, India: 1, Taiwan: 3, Chile: 1, Sweden: 1
The whole www.tvkaista.net/stream-forwarder/get.php proxy is now
returning 502 Bad Gateway, so several Poland/Slovenia rows that were
still marked valid were actually broken. Replaced TVP1, TVP Polonia,
TVP Info, TVP World with working alternatives; the rest are marked
invalid pending a working replacement (TV SLO 1/2/3 candidates found
but not yet verified due to a fetch rate limit).
Continued the country-by-country pass against the CI failed-channel
report. Verified every replacement URL with curl (including retrying
with player-style user agents where a host blocked generic UAs)
before applying. Japan, UK, and Croatia batches from this round
yielded no confident fixes (mostly geo-blocked national broadcasters
or no findable replacement) and were left untouched.
Argentina: 6 fixed
Czech Republic: 13 fixed
Germany: 1 fixed
Greece: 6 fixed
News: 14 fixed
Cross-referenced the CI iptv-checker's failed-channel report against
each country list, verified every replacement URL with curl before
applying, and removed one genuine duplicate (Telecolor International).
Real geo-blocked national-broadcaster 403s and CI-runner false
positives (esp. HTTP 408 timeouts, which turned out unreliable) were
left untouched rather than guessed at.
Italy: 6 fixed, 1 duplicate removed
Spain: 16 fixed
Russia: 3 fixed
UAE: 13 fixed
USA: 10 fixed
The config's files list still referenced the README's placeholder
filenames (playlist1.m3u, playlist2.m3u), which don't exist in this
repo, so the linter was silently checking nothing. Point it at the
real playlist.m3u8, drop the noisy full-file cat dump, and surface
its output in the job summary like the iptv-checker step.
Add a job summary listing the failed channels and upload the full
online.m3u/failed.m3u results as a build artifact, instead of running
the checker and discarding its output.