adityanandanx / adityanandanx/heimdall
Map: media capture v3 — trustworthy MPRIS sessions, extension URLs, YouTube-only subtitles
- Lingua principale
- Python
- Stelle
- 0
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
## Destination
Decide the **v2 media-capture pipeline** (replaces the MPRIS+CDP clause of #13/#20): MPRIS stays the capture source, but the tracker must be rebuilt on a researched understanding of what players actually emit — with sessions whose wall-duration is accurate per track, sidra stops compressing songs into 0–1s rows, and the day timeline stops showing played minutes as 1-second blips. **CDP is removed**; media URLs come from our browser extension. Subtitles stay **YouTube-only, for the watched range**. The output of the map is the locked spec of this pipeline (decision + evidence), implementation being a follow-up effort.
## Notes
- Domain: heimdall media watch-sessions (MPRIS). Existing: `SessionTracker`/`parse_mpris_line`/`_update_watch_session` in `src/heimdall/capture/`, `tracks` table (no position column), `watch_sessions` (+ FTS), daemon `_mpris` follow loop + poll loop, CDPR enrichment (`_enrich_chromium_media`), yt-dlp subtitles.
- **Live evidence captured 2026-08-09**, logged in `docs/research/mpris-events.notes.md` (draft): sidra emits per-second lines **in bursts** (4 lines then 60s+ silence while `status=Playing` stays true); transitions are theatrical (`Playing ` ticks → `Playing ""` empty metadata → `Stopped ""` → `Stopped ` → `Playing ` at positions≈1s); sidra momentarily deregisters from `playerctl -l` mid-transition → poll closes the session with `pos_end=0`, making every sidra track ~1s ("Last Nite" = 0s). Chromium instances multiplex the same follow stream with throttles.
- Skills: `/research` (AFK) for fingerprint tickets, `/grilling` + `/domain-modeling` (HITL), `/prototype` for repro harnesses. Domain terms unresolved: "session", "track", "watched range", "gap". Resolve in CONTEXT.md as you go.
- Repo convention: map children are "Part of " + optional "Blocked by: [title](url)" lines; tickets labelled `wayfinder:research|grilling|prototype|task`.; every reference in narration/map uses ticket names, never bare ids.
- Do not disturb the running `serve`/`capture`; fingerprints reproduce against the live follow stream; session-defect repros use fake-line harnesses in tests.
## Decisions so far
## Not yet specified
- Position fidelity: `tracks` currently stores **no position column**, so the burst/silence cadence can only be judged from session rows; a "position log" to support session-accuracy audits may graduate as a ticket.
- Whether other players (vlc/mpv) emit the same empty-metadata/stopped sequence at queue transitions, or only sidra.
- A cheap "session sanity" metric (e.g. rows <2s = suspect) — tooling or just tests?
- Chromium throttled-burst exemption: keep, despite the new session model?
## Out of scope
- Subtitles/transcripts for **any** non-YouTube media (VLC ffmpeg/ASR path is dead per user) — transcription exists only for the watched range of YouTube videos.
- Anything cloud; anything beyond MPRIS + extension as sources.
- CDP ("remove CDP — we are using our extension to get urls for pages" — user).
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Valutazione
Questa issue non è ancora stata valutata.