2.0 KiB
2.0 KiB
Quality gates: youtube-rustypipe
Criteria beyond the automatic tests (ytdy unit tests run against the fake extractor; live behavior verified by a removed-after-passing probe).
Extractor seam (D1)
- All provider logic (paths, search-term store, node shapes,
capability flags, error mapping) is testable through the
Extractortrait with a fake — no network, no fake shell scripts, no yt-dlp. - The
ProviderClientsurface, path scheme, and search-term semantics (dedup, implicit recreation, rename re-searches, idempotent delete) are unchanged — existing behavioral tests carry over.
Stream selection (D2)
get_urls_for_trackreturns the highest-average-bitrateaudio/mp4stream; a non-mp4 fallback logs a warning naming the chosen mime.- No panic when a video has no audio streams — typed error.
Login (D3)
- A cached valid login wins over re-reading the (stale-prone) cookies file; a missing/unreadable/rejected cookies file degrades to logged-out with a warning — init never fails over login.
- Cookie values, auth headers, and rustypipe cache contents never appear in logs or errors (paths only).
playlistsshows up only when logged in; playlist nodes cap their track count (MAX_PLAYLIST_TRACKS) via bounded pagination.
Environment (D4)
yt-dlpis gone fromdevenv.nix; ytdy no longer depends ontokio/process; thebinarysetting is gone fromytdy.toml(unknown old keys are tolerated).- rustypipe state lives under
<config>/crabidy/rustypipe/; a broken client build disables the provider non-fatally. - rustypipe uses rustls (no openssl build dependency).
Hygiene
- New/changed public items documented, stating error/edge behavior.
clippy -D warnings,fmt,markdownlintclean; all tests green.- Live probe (removed after passing): search + stream URL + download capture through the real provider; stream decodes with the player's decoder stack.