Repository navigation
feat(playlist): curate members with --limit, --skip, --only, and --skip-only - #49
Merged
Merged
Conversation
…ip-only Four flags on the extract command, playlist URLs only, over original 1-based member positions: - --only / --skip-only take positions and inclusive ranges (1,3,5-8) and are mutually exclusive. - --skip and --limit paginate the filtered selection, in that order. Positions never renumber: NN- folder prefixes and the playlist record keep original positions, while the [k/n] stderr counter runs over the selection. Malformed specs fail before any network work; curation flags on a single-video URL fail with INPUT_UNRECOGNIZED; a selection that matches no members fails with PLAYLIST_EMPTY after listing. Selection parsing and application live in the pure domain module src/domain/playlist/member-selection.ts. README and roadmap updated in the same change; the README also drops the stale versioned Status section and documents the cover download and stderr progress.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
veta <playlist-url>can now extract a subset of the playlist:--only/--skip-onlypick or exclude 1-based positions and ranges (1,3,5-8), and--skip/--limitpaginate the filtered selection, in that order. Positions never renumber —NN-folder prefixes keep the member's original playlist position, and the[k/n]stderr counter runs over the selection.Why
Long playlists forced all-or-nothing extraction. Curating members (resume a course from lesson 6, extract just the talks you care about) needed pagination and position filters. The flags were on the roadmap as the last pending piece of playlist support.
How to verify
Validation is fail-fast: malformed specs (
5-3, position 0),--only+--skip-onlytogether, and curation flags on a single-video URL all error before any network work (INPUT_UNRECOGNIZED, exit 2). An empty selection fails after listing withPLAYLIST_EMPTY(exit 6). No new error codes.Selection parsing/application is a pure domain module (
src/domain/playlist/member-selection.ts, 31 unit tests); pipeline/CLI wiring adds 13 more tests on the existing fake-yt-dlp fixtures — zero mocks. The README also drops the stale versioned Status section and documents the cover download and stderr progress.Checklist
pnpm typecheckandpnpm testpass