mirror of
https://github.com/thegeneralist01/archivr
synced 2026-07-21 18:55:36 +02:00
fix(core): ignore per_item_quality for YTM playlist items
YouTube Music playlists force child_quality = Some("audio") because
yt-dlp can't download DRM-free audio-only tracks any other way. The
previous per_item_quality lookup could override this with e.g. "best",
defeating the invariant. Guard the lookup behind !is_audio so YTM items
are always downloaded as audio regardless of what the caller sends.
This commit is contained in:
parent
7499deeab0
commit
0ea61a29a1
1 changed files with 13 additions and 6 deletions
|
|
@ -1176,12 +1176,19 @@ pub fn perform_capture(
|
||||||
None => playlist_item.title.clone(),
|
None => playlist_item.title.clone(),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Per-item quality override keyed by yt-dlp video ID; fall back to playlist-level.
|
// Per-item quality override keyed by yt-dlp video ID; fall back to
|
||||||
let effective_child_quality: Option<&str> = config
|
// playlist-level quality. YTM playlists are always audio-only —
|
||||||
.per_item_quality
|
// per_item_quality overrides are ignored so the audio-only guarantee
|
||||||
.get(&playlist_item.id)
|
// cannot be bypassed by a caller sending e.g. "best".
|
||||||
.map(String::as_str)
|
let effective_child_quality: Option<&str> = if is_audio {
|
||||||
.or(child_quality);
|
Some("audio")
|
||||||
|
} else {
|
||||||
|
config
|
||||||
|
.per_item_quality
|
||||||
|
.get(&playlist_item.id)
|
||||||
|
.map(String::as_str)
|
||||||
|
.or(child_quality)
|
||||||
|
};
|
||||||
|
|
||||||
// Download the media.
|
// Download the media.
|
||||||
match downloader::ytdlp::download(
|
match downloader::ytdlp::download(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue