A directory is only worth trusting if you can see what it refuses to include. Every rule that removes something is below, with the number it removed, and the rows that say the count is not recorded are the honest answer rather than a rounded one.
The stream is not https
Stage 02Not recorded separately
A browser blocks an http stream on an https page as mixed content, so it is a station the listener cannot actually hear. Counting those would be a directory that lies about its own size.
The stream is already listed
Stage 02Not recorded separately
The upstream directory carries the same stream under several entries. One stream is one station, so the first one keeps the row and the rest are dropped, which is why a small country stops showing the same station three times.
The country has too few playable stations
Stage 0331 countries
Fewer than 3 and the page would be a one row table, which is the thin page our own publishing rules exist to refuse. This count also carries the few country codes in the snapshot that resolve to no country at all, because the data layer records the two together and not separately. Either way the stations stay in the product; they just do not get a hub of their own here.
The language cannot be matched to a code
Stage 03Not recorded separately
A shelf is keyed on an ISO 639 code, never on the typed string, so "american english", "english uk" and "English" are one shelf instead of three near identical pages. A station whose language field matches no code is left out of the language axis entirely, and it is not counted on the way out. Its country page still carries it.
The language is outside the largest shelves
Stage 0397 languages
These resolve to a code perfectly well. The shelves are capped at the 30 largest languages in the directory, because below that a shelf holds too few stations to be worth opening, and a page nobody can use is worse than an absence. Every one of those stations is still reachable from its country.
The station has no country hub
Stage 04125 entries
A station page hangs off its country hub for its breadcrumb and its related list. Under a URL whose parent does not exist it would be an orphan pointing at nothing, so it is not built.
The station shares a stream with a page already built
Stage 041,358 entries
The same dedupe as stage 02, applied to pages. Two URLs for one stream would be two pages saying the same thing, and the first one built keeps it.
The station has never been seen
Stage 04317 entries
In the ledger, absent from this snapshot, and never built before, so there is nothing to keep and nothing to write. This is the only skip that could resolve itself: if the station reappears upstream, its page is built on the next run.
Ledger entries refused a page1,800of 16,225 in the page budget
Refusing a page is a decision, so it is counted like one. Every skipped entry falls into one of the three stage 04 rows above, and the arithmetic closes: what the ledger holds, minus what these rules refuse, is what this site publishes.