**Bead** `2986ff41-41ea-4629-bc6b-3ce22f55e628` · [canonical URI](https://redfish.acequia.io/guerin/.agents/2986ff41-41ea-4629-bc6b-3ce22f55e628/) · discussion: Talk: Bead This page is the wiki facet of a [bead](https://redfish.acequia.io/guerin/.agents/); the bead is the source of truth.
## Identity - **URI:** https://redfish.acequia.io/guerin/.agents/2986ff41-41ea-4629-bc6b-3ce22f55e628/ - **GUID:** `2986ff41-41ea-4629-bc6b-3ce22f55e628` - **Slug:** `adsb-for-heli-videos` - **Birth-parent:** media-forager bead [`58c0a5e0-c64e-426e-8da2-ac7f5495d18a`](https://redfish.acequia.io/guerin/.agents/58c0a5e0-c64e-426e-8da2-ac7f5495d18a/about.md) - **Mounts (read):** firewatch-camera-grid bead [`65783732-7907-4a36-983a-3b015e75e80b`](https://redfish.acequia.io/guerin/.agents/65783732-7907-4a36-983a-3b015e75e80b/about.md) — built + validated the adsb.lol pipeline this bead reuses. - **Mounted by:** wildfire-forager bead [`5b518c35-2ce7-474a-a5a8-ec83e2fd0e82`](https://redfish.acequia.io/guerin/.agents/5b518c35-2ce7-474a-a5a8-ec83e2fd0e82/about.md) — the forager-pipeline umbrella consumes this bead as the **ADS-B / fire-aircraft forager**: an ignition record's `{lat,lon,time}` is exactly the bbox+window this bead needs to recover orbiting fire/news/firefighting aircraft. (Also: media-forager `58c0a5e0` is the birth-parent above.)
## Motivation (why a GUID) The media-forager parent catalogs LA-wildfire **news-helicopter videos** (STAC items) that carry **no embedded camera telemetry** — for the ABC live feed, audio analysis confirmed reporter voice in the left channel and rotor in the right, with no telemetry track. The only path to a camera-position prior is the **helicopter's own ADS-B track**. This bead is the telemetry-forager: given a news-heli video, it bounds the UTC capture window from `yt-dlp` metadata and pulls the **adsb.lol** open archive (unfiltered → de-blurs news/fire/mil registrations FR24 blanks) over the fire bbox to recover the camera ship's orbit. Those tracks become the **`geometry` / camera-position prior** for the parent's STAC items.
## Mechanism (what this bead does) 1. `yt-dlp -J <url>` → `upload_date / release_timestamp / timestamp / duration` → bound the UTC capture window. 2. Resolve the adsb.lol daily release tag `v<YYYY.MM.DD>-planes-readsb-prod-0` in GitHub `adsblol/globe_history_<YEAR>`. 3. Stream-filter the day's split tar with the **mounted** `pull-adsblol-history.py` (`pull-adsblol-history`) over the fire bbox + window — never unpack the whole globe. 4. Pick out news helis (match the fleet table in `notes/01`), firefighting (squawk 1255), military (`dbFlags & 1`); emit per-aircraft posed-track sidecars + `summary.json`. 5. Per target video, state the corresponding aircraft track + evidence, or "not recovered" + reason.
## Folder layout ``` about.md README.md agent.md agent.json keywords.json names.json ← root (this folder) 2026-06-13/ skills/ recover-heli-adsb-from-video.md (thin adapter; references the mounted parent skill) notes/ 00-method.md 01-heli-fleet-registrations.md 02-results-per-video.md artifacts/ adsb-<event>/ { summary.json, adsb-<icao>.json track sidecars } (filtered keepers) chats/ 2026-06-13-adsb-for-heli-videos.md ``` Multi-GB raw daily tars are **scratch** in `C:\Users\steph\Downloads\adsblol-<date>\` — re-downloadable from the release, deletable.
## Session log - **2026-06-13** — Born as child of media-forager `58c0a5e0`. Built fleet table, ran adsb.lol pulls for the 5 target videos. See `notes/02-results-per-video.md`. - **2026-06-21** — Bead-linked into the [`5b518c35` wildfire-forager](https://redfish.acequia.io/guerin/.agents/5b518c35-2ce7-474a-a5a8-ec83e2fd0e82/) pipeline as the ADS-B / fire-aircraft forager (reciprocal of the forager's mount). No code change; this bead's video-driven window-bounding generalizes to ignition-record-driven window-bounding. - **2026-06-21 (live mode)** — Added [`2026-06-21/skills/grab-adsb-live.mjs`](2026-06-21/skills/grab-adsb-live.mjs): a **LIVE** fire-aircraft forager (sibling to this bead's historical-from-video mode). Hits the adsb.lol live REST API over an area, classifies fire-relevant aircraft (squawk 1255, rotorcraft, tankers by airframe/callsign, low-and-slow orbiters; airliners excluded by alt cap), emits a STAC snapshot. Worked run over the LA fire (center 34.02,-118.2 / 60 nm): 231 aircraft → 12 fire-relevant, incl. **N821LA** (H-60 Firehawk, 150 ft) + **N110LA** (B412) + **N816CE**/**N232LA** (AS350) over the East-LA fire under the College Peak cams, **N43CU** (CH-47 Chinook helitanker), **TKR12/N476NA** (BAe-146 tanker, squawk 1255). Catalog: `simtable.acequia.io/aircraft/adsb-la-fire/collection.json`. Poll to build tracks.
## Modus operandi (how to interact) - Read `README.md` first, then `notes/00-method.md`. Per-video results in `notes/02`. Fleet N→ICAO table in `notes/01`. - To recover telemetry for a **new** heli video: follow `skills/recover-heli-adsb-from-video.md`.
## Capabilities - News-heli video → bounded UTC window → recovered ADS-B camera-ship track (the pose prior). - N-number ↔ ICAO-hex fleet registry for the SoCal news-heli fleet (validated against adsb.lol `r` fields).
## Lifecycle Background research bead. Partial success is acceptable and documented. Raw tars apoptose (scratch); filtered sidecars persist as the keepers.
## Limitations - adsb.lol is community-feeder sourced; very-low-altitude / brief passes can be missed. - `timestamp` from `yt-dlp` is the YouTube **publish** time, not always the **capture** time — for re-uploaded / produced clips the capture day may differ; documented per-video. - A ship flying with ADS-B off is unrecoverable from any archive.
## References (bead cross-links) - Bead: Media Forager · [canonical](https://redfish.acequia.io/guerin/.agents/58c0a5e0-c64e-426e-8da2-ac7f5495d18a/) - Bead: Firewatch Camera Grid · [canonical](https://redfish.acequia.io/guerin/.agents/65783732-7907-4a36-983a-3b015e75e80b/) - Bead: Wildfire Forager · [canonical](https://redfish.acequia.io/guerin/.agents/5b518c35-2ce7-474a-a5a8-ec83e2fd0e82/)
See all: Beads