[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( download_reversed = ScriptUtils.bool_formatter_output(
self.overrides.apply_formatter(validator.download_reverse) 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( parents, orphan_entries = self._download_url_metadata(
url=url, url=url,
include_sibling_metadata=validator.include_sibling_metadata, include_sibling_metadata=include_sibling_metadata,
ytdl_options_overrides=metadata_ytdl_options, ytdl_options_overrides=metadata_ytdl_options,
) )

View file

@ -86,7 +86,7 @@ class UrlValidator(StrictDictValidator):
key="ytdl_options", validator=YTDLOptions, default={} key="ytdl_options", validator=YTDLOptions, default={}
) )
self._include_sibling_metadata = self._validate_key( self._include_sibling_metadata = self._validate_key(
key="include_sibling_metadata", validator=BoolValidator, default=False key="include_sibling_metadata", validator=OverridesBooleanFormatterValidator, default="False"
) )
@property @property
@ -170,14 +170,14 @@ class UrlValidator(StrictDictValidator):
return self._ytdl_options return self._ytdl_options
@property @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 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 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 channels or large playlists, this becomes memory-intensive since you are storing
``n^2`` metadata. Defaults to False. ``n^2`` metadata. Defaults to False.
""" """
return self._include_sibling_metadata.value return self._include_sibling_metadata
class UrlStringOrDictValidator(UrlValidator): class UrlStringOrDictValidator(UrlValidator):

View file

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

View file

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

View file

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