Module ircddb

Module ircddb 

Source
Expand description

ircDDB last-heard HTML scraper.

Scrapes https://status.ircddb.net/cgi-bin/ircddb-log?30 0 — an HTML page listing recent D-STAR activity across the global ircDDB network. Each table row represents one heard transmission, including the operator callsign, repeater routing fields, and timestamp.

Unlike the Pi-Star and XLX API fetchers which primarily discover reflectors, the ircDDB scraper discovers activity: which callsigns are transmitting through which reflectors. This activity data drives Tier 2 monitoring decisions — reflectors with recent ircDDB activity are prioritised for live monitoring.

Poll interval: every 60 seconds (default). The ircDDB last-heard page refreshes frequently, and activity data is time-sensitive — stale observations lose value quickly for prioritisation.

§HTML Structure

The page contains an HTML <table> where each <tr> after the header row has columns:

IndexColumnExample
0Date/time (UTC)2024-01-15 14:30:00
1CallsignW1AW
2ID (suffix)D75
3Rptr1W1AW B
4Rptr2REF001 B
5UrCallCQCQCQ
6Dest RptrREF001 B
7TX-MessageHello

The Rptr2 and Dest Rptr fields contain the reflector callsign (first 6-7 characters) and module letter. We extract the reflector callsign from the Dest Rptr field (column 6) which indicates the intended destination.

Structs§

Observation 🔒
A parsed activity observation extracted from one HTML table row.

Constants§

IRCDDB_URL 🔒
ircDDB last-heard page URL.
MIN_COLUMNS 🔒
Minimum number of columns expected in each data row.

Functions§

fetch_and_store 🔒
Fetches the ircDDB last-heard page and inserts activity observations.
infer_protocol 🔒
Infers the D-STAR protocol from a reflector callsign prefix.
parse_observations 🔒
Parses the HTML body into a vector of owned Observation values.
parse_rptr_field 🔒
Parses an RPT field (e.g. "REF001 B") into a reflector callsign and optional module letter.