[FEATURE] Multi-url support for YouTube music presets

This commit is contained in:
Jesse Bannon 2024-10-30 13:02:00 -07:00
parent 6a756cfecf
commit fb70fbdd9c
5 changed files with 116 additions and 10 deletions

View file

@ -462,10 +462,13 @@ class MultiUrlDownloader(SourcePlugin[MultiUrlValidator]):
download_reversed = ScriptUtils.bool_formatter_output(
self.overrides.apply_formatter(validator.download_reverse)
)
include_sibling_metadata = ScriptUtils.bool_formatter_output(
self.overrides.apply_formatter(validator.include_sibling_metadata)
)
parents, orphan_entries = self._download_url_metadata(
url=url,
include_sibling_metadata=validator.include_sibling_metadata,
include_sibling_metadata=include_sibling_metadata,
ytdl_options_overrides=metadata_ytdl_options,
)

View file

@ -86,7 +86,7 @@ class UrlValidator(StrictDictValidator):
key="ytdl_options", validator=YTDLOptions, default={}
)
self._include_sibling_metadata = self._validate_key(
key="include_sibling_metadata", validator=BoolValidator, default=False
key="include_sibling_metadata", validator=OverridesBooleanFormatterValidator, default="False"
)
@property
@ -170,14 +170,14 @@ class UrlValidator(StrictDictValidator):
return self._ytdl_options
@property
def include_sibling_metadata(self) -> bool:
def include_sibling_metadata(self) -> OverridesBooleanFormatterValidator:
"""
Optional. Whether to include sibling metadata as an entry variable, which comprises basic
metadata from all other entries (including itself) that belong to the same playlist. For
channels or large playlists, this becomes memory-intensive since you are storing
``n^2`` metadata. Defaults to False.
"""
return self._include_sibling_metadata.value
return self._include_sibling_metadata
class UrlStringOrDictValidator(UrlValidator):

View file

@ -25,109 +25,209 @@ presets:
uid: "avatar_uncropped"
- name: "{banner_uncropped_thumbnail_file_name}"
uid: "banner_uncropped"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url2}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url3}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url4}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url5}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url6}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url7}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url8}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url9}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url10}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url11}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url12}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url13}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url14}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url15}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url16}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url17}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url18}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url19}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url20}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url21}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url22}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url23}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url24}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url25}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url26}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url27}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url28}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url29}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url30}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url31}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url32}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url33}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url34}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url35}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url36}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url37}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url38}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url39}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url40}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url41}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url42}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url43}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url44}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url45}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url46}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url47}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url48}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url49}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url50}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url51}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url52}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url53}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url54}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url55}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url56}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url57}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url58}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url59}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url60}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url61}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url62}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url63}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url64}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url65}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url66}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url67}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url68}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url69}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url70}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url71}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url72}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url73}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url74}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url75}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url76}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url77}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url78}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url79}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url80}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url81}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url82}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url83}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url84}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url85}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url86}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url87}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url88}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url89}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url90}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url91}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url92}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url93}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url94}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url95}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url96}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url97}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url98}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url99}"
include_sibling_metadata: "{include_sibling_metadata}"
- url: "{url100}"
include_sibling_metadata: "{include_sibling_metadata}"
overrides:
avatar_uncropped_thumbnail_file_name: ""
banner_uncropped_thumbnail_file_name: ""
include_sibling_metadata: False
subscription_array: "{ [] }"
subscription_value: ""

View file

@ -2,7 +2,9 @@ presets:
# assumes that each chapter in an entry is a song
_albums_from_chapters:
preset: "Single"
preset:
- "_music_base"
- "_multi_url"
chapters:
embed_chapters: True
@ -10,6 +12,8 @@ presets:
when_no_chapters: "pass"
overrides:
include_sibling_metadata: False
track_title: "{chapter_title}" # Chapter title is the track title
track_album: "{title}" # Video's title is the album title
track_number: "{chapter_index}"

View file

@ -4,12 +4,11 @@ presets:
_albums_from_playlists:
preset:
- "_music_base"
download:
- url: "{url}"
include_sibling_metadata: True
- "_multi_url"
overrides:
include_sibling_metadata: True
track_album: "{playlist_title}"
track_number: "{playlist_index}"
track_number_padded: "{playlist_index_padded}"