Skip to content

feat(playlist): identify playlists and list members via yt-dlp - #41

Merged
cmglezpdev merged 1 commit into
feat/playlist-supportfrom
feat/playlist-support-01-listing
Aug 20, 2026
Merged

cmglezpdev merged 1 commit into
feat/playlist-supportfrom
feat/playlist-support-01-listing

Conversation

@cmglezpdev

Copy link
Copy Markdown
Owner

What this changes

veta can now recognize a playlist?list= URL and list its members via yt-dlp --flat-playlist -J, with domain helpers for playlist directory naming (pl-<slug>-<id>) and stable NN- position prefixes. Nothing user-visible yet.

Why

Foundation slice of playlist support: identity + listing, isolated behind a new PlaylistSourcePort so the single-video pipeline stays untouched. Watch URLs with &list= remain single-video by design.

How to verify

pnpm typecheck
pnpm vitest run src/adapters/ytdlp src/domain/playlist --exclude '**/.claude/**'

The sanitized real listing sample this is based on lives at docs/examples/yt-dlp-flat-playlist.json.

Checklist

  • pnpm typecheck and pnpm test pass
  • Commits follow Conventional Commits

Scope

  • Includes: URL identification, member listing (position = array index + 1), unavailable-entry detection (defensive, see docs), explicit maxBuffer, fixtures.
  • Excludes: store records, orchestration, CLI. Unavailable-member shape unverified against a real payload (flagged in docs/03-data-sources.md).

Line count note: 630 authored lines; the rest of the diff is fixture JSON (docs/examples/, __fixtures__/).

Chain Context

Field Value
Chain playlist-support
Tracker PR #40
Position 1 of 6
Base feat/playlist-support
Depends on None
Follow-up PR 2 (store records)
Review budget 630 authored (+616 fixture JSON) / 400

Chain Overview

main
 └── #40 tracker: feat/playlist-support
      └── 01 listing → 02 store → 03a packageName → 03b prompt → 04 orchestrator → 05 CLI
          (this PR: 📍 1)

Add PlaylistSourcePort with a yt-dlp adapter that recognizes
playlist?list= URLs and lists members using --flat-playlist -J,
deriving the original 1-based position from array order. Add domain
helpers for playlist directory naming and NN- position prefixes, an
explicit maxBuffer for large listings, real-derived fixtures, and a
data-sources doc section.
@cmglezpdev
cmglezpdev force-pushed the feat/playlist-support-01-listing branch from 29618d4 to 51caf9f Compare August 20, 2026 00:23
@cmglezpdev
cmglezpdev merged commit b40eaa9 into main Aug 20, 2026
3 checks passed
@cmglezpdev
cmglezpdev deleted the feat/playlist-support-01-listing branch August 25, 2026 17:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant