Builds on the idea in #1145 (a checker that maps failures back to a channel
and list, and tells a geo-blocked channel from a dead one) with a few
additions:
check_channels.py
- Standard library only, same as #1145's version.
- Adds a `disputed` state: an optional --confirm-dead pass gives ffprobe a
second opinion on anything that looks dead over HTTP, before it gets
reported as dead. This is one-directional (can only pull a verdict out
of `dead`, never push one into it) because ffprobe itself is not
reliable enough to trust in the other direction - a known-good DASH
channel needed longer than any sane per-channel budget to open while
testing this, and a header check alone had already been fooled by an
isolated media fragment sitting at a URL that looked like a live channel
(a mistake made and caught while triaging #1149/#1151 - see the
docstring for the details).
- Restructured to share one worker pool across every list in a run
instead of a fresh pool per list, which stopped small lists from paying
the same wall-clock floor as large ones; a full run across all lists
dropped from not finishing in 15 minutes to about 10.
- --json writes one record per channel per run, for building a history.
generate_dashboard.py
- Turns that history into a single self-contained docs/index.html: current
state breakdown, an alive-share trend across every run kept, a per-list
breakdown, and a searchable/filterable table of everything that is not
currently alive.
Two new scheduled workflows
- check_channels_fast.yml: every 6 hours, HTTP checks only.
- check_channels_deep.yml: every 2 days, with --confirm-dead (needs ffmpeg).
Both append to .github/checker-history/history.jsonl (pruned to 90 days),
then build and deploy the dashboard to GitHub Pages.
Follow-up to #1144.
- ERT World was renamed to ERT Cosmos. Added back under the new name,
pointed at the same ERT CDN host used by the other ERT channels
(verified HTTP 200 with a valid DASH manifest).
- Star Central Greece was returning 404 when #1144 was tested (Aug 26)
but is back up now - verified 3x with a real MP4/DASH payload, not
an error page. Restored with its original link.
Added to the existing Rチャンネル/Rakuten section: NTV News (日テレNEWS),
FNN Prime Online (FNNプライムオンライン), and MBS News (MBSニュース),
via Rakuten's official Amagi CDN (cdn-apne1/cdn-uw2-prod.tsv2.amagi.tv),
same source already used for the existing Tokyo MX channel.
Verified HTTP 200 for all three, not geo-blocked.
ERT moved its streams from ert-live.siliconweb.com to
ert-ucdn.broadpeak-aas.com. ERT News still runs on the new host, so it is
repointed rather than removed.
The other five answered 404 on three separate attempts, and I could not
find a working replacement for any of them. Removing the only radio
channel left that section empty, so the heading goes with it.
Channels that merely refused the connection are left alone, since that is
what a channel served only inside Greece looks like from outside it.
Sourced current logos for Space TV, Səhiyyə TV, ATV, MTV Azerbaijan,
5Star, Pixel TV and Virgin Media Four from iptv-org's public logo
database (imgur-hosted, cross-referenced against their channel list)
and verified each one visually before swapping it in.
Found current Commons/Wikipedia file names for logos whose old files
were renamed or superseded (TF1, 6ter, RMC Découverte, Chérie 25,
TVP1-3, İctimai TV, CStar, UTV, MBC, UBC TV, Chamber TV, Venevisión,
Sky News Australia, KVF Sjónvarp, Telenorba, ReTV), reused an
already-working duplicate row for NRJ 12 and TaiwanPlus, and verified
every replacement resolves and shows the right logo.
ITV2, ITV3, and Challenge logos were pointing at Wikimedia files that
no longer exist; restored the imgur-hosted logos these rows used
before they were switched over.
Wikimedia now rejects direct thumbnail requests for widths outside the
fixed set 20/40/60/120/250/330/500/960/1280/1920/3840px. Rounded all
remaining off-size occurrences to the nearest allowed width.
Wikimedia only serves fixed thumbnail widths (20/40/60/120/250/330/
500/960/1280/1920/3840px); 640px returns a 400 error. Switched all
occurrences to the nearest allowed size, 500px.
Fixes#1135
Chile: fix broken NTV link (403), keep existing working T13/Mega links.
Argentina: fix broken El Trece/El Nueve links, switch Canal 26 and
América to direct streams, rename IP Noticias to Argentina/12
(channel rebranded 2025-11-12, Grupo Octubre).
Cherry-picked from #1139 and #1138.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ATV, Hír TV, and Izaura TV logos moved to Wikimedia Commons; Fix TV
(YouTube-only channel, no working website) uses its YouTube channel
avatar. M3's onlinestream.live logo left as-is — no Wikipedia page
exists for it and the channel itself is already marked dead.
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.