When the user picks 'Best' (or any non-exact preset), the completed-list
quality cell shows only what they requested — but yt-dlp may have
resolved it to anything from 360p to 4K60. Same when they pick a
specific resolution that wasn't available and yt-dlp had to downgrade.
This commit:
- Backend (app/ytdl.py): captures yt-dlp's resolved width / height / fps
/ vcodec / abr in the MoveFiles postprocessor hook and persists them
on DownloadInfo. __setstate__ backfills None for pre-patch persisted
entries so old completed downloads keep loading.
- Interface (ui/src/app/interfaces/download.ts): four new optional
fields on Download.
- UI (ui/src/app/app.ts:formatQualityLabel): when actual differs from
requested, render 'Best · 1080p60' / '1080p · 720p' style. High frame
rates (50+) get appended ('1080p60'); standard rates stay implicit.
Audio shows 'Best · 320 kbps'. Identical actual === requested stays
collapsed to avoid noise.
Backward compatible: old persisted downloads render unchanged since
their new fields stay None and formatActualQuality() returns null.
|
||
|---|---|---|
| .. | ||
| src | ||
| .editorconfig | ||
| angular.json | ||
| eslint.config.js | ||
| ngsw-config.json | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.spec.json | ||