2.5 KiB
2.5 KiB
Plan: youtube-provider
Ordered tasks; each names its verification (tests in ytdy/src/lib.rs
and/or gates in quality/youtube-provider.md). The crate skeleton,
stubs, workspace/devenv wiring, and all tests exist; the tests fail on
todo!() at plan time.
- T1 — Engine.
run(argv-only,--no-warnings, cookie flag, timeout withkill_on_drop, stdout cap, typed errors),probe,flat_listing,video_entry,stream_urls. Verifies:engine_failures_are_typed_never_panics, parts of every other test; gates "Engine". - T2 — Path parsing.
parse_pathfor allYtPathshapes; reject everything else. Verifies:foreign_and_malformed_paths_are_rejected,tracks_resolve_streams_and_metadata(is_track_path). - T3 — Init. Settings parse (defaults on broken TOML like the
other providers), engine construction,
--versionprobe, cookies readability check (degrade to logged out with a warning). Verifies:init_probes_the_binary,root_lists_playlists_only_when_logged_in. - T4 — Search. Term registry (snapshot/register),
search_term_node(ytsearchN:),create/rename/delete_lib_node,get_lib_nodearms for Root/Search/SearchTerm, central downloadable rule. Verifies:search_terms_are_created_listed_and_searched,search_terms_rename_and_delete. - T5 — Playlists + tracks.
playlists_node(feed URL, login gate),playlist_node,get_urls_for_track(-g),get_metadata_for_track(single-video-J). Verifies:playlists_list_and_resolve_when_logged_in,tracks_resolve_streams_and_metadata. - T6 — Orchestrator wiring.
youtube_client: Option<Arc<_>>, non-fatal init fromytdy.toml(written back), routing arms in every method, root child;extension_forgainsaudio/webm. Verifies: existing orchestrator patterns by inspection; gates "Orchestrator wiring";extension_prefers_content_type_then_url_then_binextended. - T7 — Full verification. Workspace suite green; clippy/fmt/
taplo/markdownlint clean; every gate ticked; no
todo!(). - T8 — Live smoke test. With the devenv
yt-dlp: search a term through the provider, fetch a stream URL for one result, and download a small capture through the capture store — remove the probe afterwards. Validate the playlists feed invocation if cookies are available; otherwise record it as unvalidated in the summary. - T9 — Docs.
plan/summary.mdsection incl. deviations; reconcilearchitecture/youtube-provider.md.