diff --git a/apps/web/src/views/pages.jsx b/apps/web/src/views/pages.jsx index 674d7a0..b3e6787 100644 --- a/apps/web/src/views/pages.jsx +++ b/apps/web/src/views/pages.jsx @@ -393,6 +393,45 @@ export const ItemPage = ({ )} /> {item.data?.exit ? : null} + {item.kind === 'scanner-stream' ? ( +
+

Listen live

+

{item.data?.location_label ?? item.data?.jurisdiction ?? ''}

+ {item.data?.directory_present === false ? ( +

This scanner is no longer listed.

+ ) : ( +

+ + Open scanner player ↗ + + {item.data?.stream_url ? ( + <> + {' '} + ·{' '} + + Open audio stream ↗ + + + ) : null} + {item.data?.playlist_url ? ( + <> + {' '} + ·{' '} + + Media-player playlist ↗ + + + ) : null} +

+ )} + {item.data?.directory_url ? ( +

+ Source: ProScan public directory. Audio comes + directly from the scanner operator. +

+ ) : null} +
+ ) : null} {nearby !== null ? (

Reported incidents in scanner coverage

diff --git a/docs/geographic-queries.md b/docs/geographic-queries.md index 0f722c1..2c83d4c 100644 --- a/docs/geographic-queries.md +++ b/docs/geographic-queries.md @@ -93,6 +93,41 @@ geographic flags. The corresponding MCP tools expose the same fields; a snapshot: concurrent arrivals or location changes can shift pages. Use the existing ID/update cursors for synchronization with the default ordering. +## Default public scanner directory + +`proscan-scanners` seeds the enabled `scanners-proscan` source on startup. It +indexes the public [ProScan server directory](https://www.proscan.org/web_servers/list) +every 15 minutes, keeping player URLs, location labels, scanner models and source +attribution. No API key or manually supplied JSON catalog is needed. + +Each run visits up to 12 player pages, least recently checked first, within the +worker deadline. It extracts explicitly advertised `