bilateral

This commit is contained in:
Jesse Bannon 2024-03-29 00:23:39 -07:00
parent 1f08b0ebe1
commit fe83266e44
6 changed files with 483 additions and 618 deletions

View file

@ -232,9 +232,12 @@ class MultiUrlDownloader(SourcePlugin[MultiUrlValidator]):
)
self._downloaded_entries: Set[str] = set()
self._url_state: Optional[URLDownloadState] = None
self._collection_url_mapping: Dict[str, UrlValidator] = {
self.overrides.apply_formatter(collection_url.url): collection_url
for collection_url in options.urls.list
}
@property
def download_ytdl_options(self) -> Dict:
def download_ytdl_options(self, url: Optional[str] = None) -> Dict:
"""
Returns
-------
@ -243,24 +246,26 @@ class MultiUrlDownloader(SourcePlugin[MultiUrlValidator]):
return (
self._download_ytdl_options_builder.clone()
.add(self.ytdl_option_defaults(), before=True)
.add(self._collection_url_mapping[url].ytdl_options.dict if url else None, before=True)
.to_dict()
)
def metadata_ytdl_options(self, scrape_reverse: bool) -> Dict:
def metadata_ytdl_options(self, url: Optional[str] = None) -> Dict:
"""
Parameters
----------
scrape_reverse
Whether to scrape in reverse order
url
To fetch the URL specific ytdl_options
Returns
-------
YTDL options dict for fetching metadata
"""
return (
self._metadata_ytdl_options_builder.clone()
.add(self.ytdl_option_defaults(), before=True)
.add({"playlistreverse": scrape_reverse} if scrape_reverse else None, before=True)
.add(self._collection_url_mapping[url].ytdl_options.dict if url else None, before=True)
.to_dict()
)
@ -271,7 +276,7 @@ class MultiUrlDownloader(SourcePlugin[MultiUrlValidator]):
-------
True if dry-run is enabled. False otherwise.
"""
return self.download_ytdl_options.get("skip_download", False)
return self.download_ytdl_options().get("skip_download", False)
@property
def is_entry_thumbnails_enabled(self) -> bool:
@ -280,7 +285,12 @@ class MultiUrlDownloader(SourcePlugin[MultiUrlValidator]):
-------
True if entry thumbnails should be downloaded. False otherwise.
"""
return self.download_ytdl_options.get("writethumbnail", False)
return self.download_ytdl_options().get("writethumbnail", False)
def _get_url_options(self, url: Optional[str]) -> Dict:
if url:
return self._collection_url_mapping[url].ytdl_options.dict
return {}
###############################################################################################
# DOWNLOAD FUNCTIONS
@ -307,7 +317,7 @@ class MultiUrlDownloader(SourcePlugin[MultiUrlValidator]):
clear_info_json_files
Whether to delete info.json files after yield
"""
archive_path = self.download_ytdl_options.get("download_archive", "")
archive_path = self.download_ytdl_options().get("download_archive", "")
backup_archive_path = f"{archive_path}.backup"
# If archive path exists, maintain download archive is enable
@ -342,7 +352,9 @@ class MultiUrlDownloader(SourcePlugin[MultiUrlValidator]):
def _extract_entry_info_with_retry(self, entry: Entry) -> Entry:
download_entry_dict = YTDLP.extract_info_with_retry(
ytdl_options_overrides=self.download_ytdl_options,
ytdl_options_overrides=self.download_ytdl_options(
url=entry.get(v.ytdl_sub_input_url, str)
),
is_downloaded_fn=None if self.is_dry_run else entry.is_downloaded,
is_thumbnail_downloaded_fn=None
if (self.is_dry_run or not self.is_entry_thumbnails_enabled)
@ -358,27 +370,29 @@ class MultiUrlDownloader(SourcePlugin[MultiUrlValidator]):
self, entries: List[Entry], download_reversed: bool
) -> Iterator[Entry]:
# Iterate a list of entries, and delete the entries after yielding
indices = list(range(len(entries)))
entries_to_iter: List[Optional[Entry]] = entries
indices = list(range(len(entries_to_iter)))
if download_reversed:
indices = reversed(indices)
for idx in indices:
self._url_state.entries_downloaded += 1
if self._is_downloaded(entries[idx]):
if self._is_downloaded(entries_to_iter[idx]):
download_logger.info(
"Already downloaded entry %d/%d: %s",
self._url_state.entries_downloaded,
self._url_state.entries_total,
entries[idx].title,
entries_to_iter[idx].title,
)
del entries[idx]
entries_to_iter[idx] = None
continue
yield entries[idx]
self._mark_downloaded(entries[idx])
yield entries_to_iter[idx]
self._mark_downloaded(entries_to_iter[idx])
del entries[idx]
del entries_to_iter[idx]
def _iterate_parent_entry(
self, parent: EntryParent, download_reversed: bool
@ -396,16 +410,15 @@ class MultiUrlDownloader(SourcePlugin[MultiUrlValidator]):
yield entry_child
def _download_url_metadata(
self, url: str, include_sibling_metadata: bool, scrape_reverse: bool
self, url: str, include_sibling_metadata: bool, ytdl_options_overrides: Dict
) -> Tuple[List[EntryParent], List[Entry]]:
"""
Downloads only info.json files and forms EntryParent trees
"""
with self._separate_download_archives():
entry_dicts = YTDLP.extract_info_via_info_json(
working_directory=self.working_directory,
ytdl_options_overrides=self.metadata_ytdl_options(scrape_reverse=scrape_reverse),
ytdl_options_overrides=ytdl_options_overrides,
log_prefix_on_info_json_dl="Downloading metadata for",
url=url,
)
@ -446,6 +459,43 @@ class MultiUrlDownloader(SourcePlugin[MultiUrlValidator]):
):
yield orphan
def _download_metadata(self, url: str, is_bilateral: bool) -> Iterable[Entry]:
metadata_ytdl_options = self.metadata_ytdl_options(url=url)
download_reversed = ScriptUtils.bool_formatter_output(
self.overrides.apply_formatter(self._collection_url_mapping[url].download_reverse)
)
if is_bilateral:
# If bilateral metadata scrape, inverse to download the other side
metadata_ytdl_options = dict(
metadata_ytdl_options,
**{"playlistreverse": not metadata_ytdl_options.get("playlistreverse", False)},
)
download_reversed = not download_reversed
parents, orphan_entries = self._download_url_metadata(
url=url,
include_sibling_metadata=self._collection_url_mapping[url].include_sibling_metadata,
ytdl_options_overrides=metadata_ytdl_options,
)
# TODO: Encapsulate this logic into its own class
self._url_state = URLDownloadState(
entries_total=sum(parent.num_children() for parent in parents) + len(orphan_entries)
)
if is_bilateral:
download_logger.info("Beginning downloads for %s in the opposite direction", url)
else:
download_logger.info("Beginning downloads for %s", url)
for entry in self._iterate_entries(
parents=parents,
orphans=orphan_entries,
download_reversed=download_reversed,
):
entry.initialize_script(self.overrides).add({v.ytdl_sub_input_url: url})
yield entry
def download_metadata(self) -> Iterable[Entry]:
"""The function to perform the download of all media entries"""
# download the bottom-most urls first since they are top-priority
@ -454,34 +504,15 @@ class MultiUrlDownloader(SourcePlugin[MultiUrlValidator]):
if not (url := self.overrides.apply_formatter(collection_url.url)):
continue
parents, orphan_entries = self._download_url_metadata(
url=url,
include_sibling_metadata=collection_url.include_sibling_metadata,
scrape_reverse=ScriptUtils.bool_formatter_output(
self.overrides.apply_formatter(collection_url.scrape_reverse)
),
)
# TODO: Encapsulate this logic into its own class
self._url_state = URLDownloadState(
entries_total=sum(parent.num_children() for parent in parents) + len(orphan_entries)
)
download_logger.info(
"Beginning downloads for %s", self.overrides.apply_formatter(collection_url.url)
)
for entry in self._iterate_entries(
parents=parents,
orphans=orphan_entries,
download_reversed=ScriptUtils.bool_formatter_output(
self.overrides.apply_formatter(collection_url.download_reverse)
),
):
entry.initialize_script(self.overrides).add(
{v.ytdl_sub_input_url: self.overrides.apply_formatter(collection_url.url)}
)
for entry in self._download_metadata(url=url, is_bilateral=False):
yield entry
if ScriptUtils.bool_formatter_output(
self.overrides.apply_formatter(collection_url.extract_bilaterally)
):
for entry in self._download_metadata(url=url, is_bilateral=True):
yield entry
def download(self, entry: Entry) -> Optional[Entry]:
"""
Parameters

View file

@ -4,6 +4,7 @@ from typing import Optional
from typing import Set
from ytdl_sub.config.plugin.plugin_operation import PluginOperation
from ytdl_sub.config.preset_options import YTDLOptions
from ytdl_sub.config.validators.options import OptionsValidator
from ytdl_sub.script.parser import parse
from ytdl_sub.validators.strict_dict_validator import StrictDictValidator
@ -50,7 +51,8 @@ class UrlValidator(StrictDictValidator):
"source_thumbnails",
"playlist_thumbnails",
"download_reverse",
"scrape_reverse",
"extract_bilaterally",
"ytdl_options",
"include_sibling_metadata",
}
@ -81,8 +83,11 @@ class UrlValidator(StrictDictValidator):
self._download_reverse = self._validate_key(
key="download_reverse", validator=OverridesBooleanFormatterValidator, default="True"
)
self._scrape_reverse = self._validate_key(
key="scrape_reverse", validator=OverridesBooleanFormatterValidator, default="False"
self._extract_bilaterally = self._validate_key(
key="extract_bilaterally", validator=OverridesBooleanFormatterValidator, default="False"
)
self._ytdl_options = self._validate_key(
key="ytdl_options", validator=YTDLOptions, default={}
)
self._include_sibling_metadata = self._validate_key(
key="include_sibling_metadata", validator=BoolValidator, default=False
@ -161,12 +166,21 @@ class UrlValidator(StrictDictValidator):
return self._download_reverse
@property
def scrape_reverse(self) -> OverridesBooleanFormatterValidator:
def extract_bilaterally(self) -> OverridesBooleanFormatterValidator:
"""
Optional. Whether to scrape entry metadata in the reverse order.
Defaults to False.
Optional. If True, will extract metadata from both the beginning and end of the playlist.
This is for incrementally fetching new entries that may be added at either the beginning
or the end of a playlist. Defaults to False.
"""
return self._scrape_reverse
return self._extract_bilaterally
@property
def ytdl_options(self) -> YTDLOptions:
"""
Optional. ``ytdl_options`` that only apply to this URL. These take precedence
over the plugin ``ytdl_options``.
"""
return self._ytdl_options
@property
def include_sibling_metadata(self) -> bool:

View file

@ -1,10 +1,8 @@
import os
import posixpath
from typing import List
from yt_dlp.utils import sanitize_filename
from ytdl_sub.downloaders.ytdlp import YTDLP
from ytdl_sub.script.functions import Functions
from ytdl_sub.script.types.map import Map
from ytdl_sub.script.types.resolvable import AnyArgument
@ -25,54 +23,16 @@ _days_in_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
class CustomFunctions:
@staticmethod
def is_playlist_ordered_by_newest(url: String) -> Boolean:
def is_bilateral_playlist_url(url: String) -> Boolean:
"""
Queries a playlist-based URL using yt-dlp to see if it is ordered from newest
(lower playlist number) to oldest.
Heuristic that returns True if the URL is known to be bilateral, meaning that entries can
be added to the beginning or end.
"""
# Top-level allow-list of notorious URLs that can be
# ordered in either direction
if "youtube.com/playlist" not in url.value:
return Boolean(True)
info_only_kwargs = {
"skip_download": True,
"writethumbnail": False,
"writeinfojson": False,
"ignoreerrors": True,
"extract_flat": "discard",
"playlist_items": "0:5",
}
try:
url_info = YTDLP.extract_info(
ytdl_options_overrides=info_only_kwargs,
url=url.value,
)
if (
not isinstance(url_info, dict)
or not isinstance(url_info.get("entries"), list)
or len(url_info["entries"]) == 0
):
return Boolean(True)
upload_dates: List[str] = []
for entry in url_info["entries"]:
if entry.get("uploader_id") and entry.get("url"):
full_entry = YTDLP.extract_info(
ytdl_options_overrides=info_only_kwargs, url=entry.get("url")
)
if isinstance(full_entry.get("upload_date"), str):
upload_dates.append(full_entry["upload_date"])
for idx in range(1, len(upload_dates)):
if upload_dates[idx - 1] < upload_dates[idx]:
return Boolean(False)
return Boolean(True)
except Exception: # pylint: disable=broad-except
return Boolean(True)
return Boolean(False)
@staticmethod
def legacy_bracket_safety(value: ReturnableArgument) -> ReturnableArgument:
@ -223,7 +183,7 @@ class CustomFunctions:
Register Custom functions once and only once
"""
if not Functions.is_built_in("sanitize"):
Functions.register_function(CustomFunctions.is_playlist_ordered_by_newest)
Functions.register_function(CustomFunctions.is_bilateral_playlist_url)
Functions.register_function(CustomFunctions.legacy_bracket_safety)
Functions.register_function(CustomFunctions.truncate_filepath_if_too_long)
Functions.register_function(CustomFunctions.to_native_filepath)

View file

@ -15,8 +15,7 @@ presets:
_multi_url:
download:
- url: "{url}"
scrape_reverse: "{%not( url_ordered_by_newest )}"
download_reverse: "url_ordered_by_newest"
extract_bilaterally: "url_extract_bilaterally"
playlist_thumbnails:
- name: "{avatar_uncropped_thumbnail_file_name}"
uid: "avatar_uncropped"
@ -28,302 +27,203 @@ presets:
- name: "{banner_uncropped_thumbnail_file_name}"
uid: "banner_uncropped"
- url: "{url2}"
scrape_reverse: "{%not( url2_ordered_by_newest )}"
download_reverse: "url2_ordered_by_newest"
extract_bilaterally: "url2_extract_bilaterally"
- url: "{url3}"
scrape_reverse: "{%not( url3_ordered_by_newest )}"
download_reverse: "url3_ordered_by_newest"
extract_bilaterally: "url3_extract_bilaterally"
- url: "{url4}"
scrape_reverse: "{%not( url4_ordered_by_newest )}"
download_reverse: "url4_ordered_by_newest"
extract_bilaterally: "url4_extract_bilaterally"
- url: "{url5}"
scrape_reverse: "{%not( url5_ordered_by_newest )}"
download_reverse: "url5_ordered_by_newest"
extract_bilaterally: "url5_extract_bilaterally"
- url: "{url6}"
scrape_reverse: "{%not( url6_ordered_by_newest )}"
download_reverse: "url6_ordered_by_newest"
extract_bilaterally: "url6_extract_bilaterally"
- url: "{url7}"
scrape_reverse: "{%not( url7_ordered_by_newest )}"
download_reverse: "url7_ordered_by_newest"
extract_bilaterally: "url7_extract_bilaterally"
- url: "{url8}"
scrape_reverse: "{%not( url8_ordered_by_newest )}"
download_reverse: "url8_ordered_by_newest"
extract_bilaterally: "url8_extract_bilaterally"
- url: "{url9}"
scrape_reverse: "{%not( url9_ordered_by_newest )}"
download_reverse: "url9_ordered_by_newest"
extract_bilaterally: "url9_extract_bilaterally"
- url: "{url10}"
scrape_reverse: "{%not( url10_ordered_by_newest )}"
download_reverse: "url10_ordered_by_newest"
extract_bilaterally: "url10_extract_bilaterally"
- url: "{url11}"
scrape_reverse: "{%not( url11_ordered_by_newest )}"
download_reverse: "url11_ordered_by_newest"
extract_bilaterally: "url11_extract_bilaterally"
- url: "{url12}"
scrape_reverse: "{%not( url12_ordered_by_newest )}"
download_reverse: "url12_ordered_by_newest"
extract_bilaterally: "url12_extract_bilaterally"
- url: "{url13}"
scrape_reverse: "{%not( url13_ordered_by_newest )}"
download_reverse: "url13_ordered_by_newest"
extract_bilaterally: "url13_extract_bilaterally"
- url: "{url14}"
scrape_reverse: "{%not( url14_ordered_by_newest )}"
download_reverse: "url14_ordered_by_newest"
extract_bilaterally: "url14_extract_bilaterally"
- url: "{url15}"
scrape_reverse: "{%not( url15_ordered_by_newest )}"
download_reverse: "url15_ordered_by_newest"
extract_bilaterally: "url15_extract_bilaterally"
- url: "{url16}"
scrape_reverse: "{%not( url16_ordered_by_newest )}"
download_reverse: "url16_ordered_by_newest"
extract_bilaterally: "url16_extract_bilaterally"
- url: "{url17}"
scrape_reverse: "{%not( url17_ordered_by_newest )}"
download_reverse: "url17_ordered_by_newest"
extract_bilaterally: "url17_extract_bilaterally"
- url: "{url18}"
scrape_reverse: "{%not( url18_ordered_by_newest )}"
download_reverse: "url18_ordered_by_newest"
extract_bilaterally: "url18_extract_bilaterally"
- url: "{url19}"
scrape_reverse: "{%not( url19_ordered_by_newest )}"
download_reverse: "url19_ordered_by_newest"
extract_bilaterally: "url19_extract_bilaterally"
- url: "{url20}"
scrape_reverse: "{%not( url20_ordered_by_newest )}"
download_reverse: "url20_ordered_by_newest"
extract_bilaterally: "url20_extract_bilaterally"
- url: "{url21}"
scrape_reverse: "{%not( url21_ordered_by_newest )}"
download_reverse: "url21_ordered_by_newest"
extract_bilaterally: "url21_extract_bilaterally"
- url: "{url22}"
scrape_reverse: "{%not( url22_ordered_by_newest )}"
download_reverse: "url22_ordered_by_newest"
extract_bilaterally: "url22_extract_bilaterally"
- url: "{url23}"
scrape_reverse: "{%not( url23_ordered_by_newest )}"
download_reverse: "url23_ordered_by_newest"
extract_bilaterally: "url23_extract_bilaterally"
- url: "{url24}"
scrape_reverse: "{%not( url24_ordered_by_newest )}"
download_reverse: "url24_ordered_by_newest"
extract_bilaterally: "url24_extract_bilaterally"
- url: "{url25}"
scrape_reverse: "{%not( url25_ordered_by_newest )}"
download_reverse: "url25_ordered_by_newest"
extract_bilaterally: "url25_extract_bilaterally"
- url: "{url26}"
scrape_reverse: "{%not( url26_ordered_by_newest )}"
download_reverse: "url26_ordered_by_newest"
extract_bilaterally: "url26_extract_bilaterally"
- url: "{url27}"
scrape_reverse: "{%not( url27_ordered_by_newest )}"
download_reverse: "url27_ordered_by_newest"
extract_bilaterally: "url27_extract_bilaterally"
- url: "{url28}"
scrape_reverse: "{%not( url28_ordered_by_newest )}"
download_reverse: "url28_ordered_by_newest"
extract_bilaterally: "url28_extract_bilaterally"
- url: "{url29}"
scrape_reverse: "{%not( url29_ordered_by_newest )}"
download_reverse: "url29_ordered_by_newest"
extract_bilaterally: "url29_extract_bilaterally"
- url: "{url30}"
scrape_reverse: "{%not( url30_ordered_by_newest )}"
download_reverse: "url30_ordered_by_newest"
extract_bilaterally: "url30_extract_bilaterally"
- url: "{url31}"
scrape_reverse: "{%not( url31_ordered_by_newest )}"
download_reverse: "url31_ordered_by_newest"
extract_bilaterally: "url31_extract_bilaterally"
- url: "{url32}"
scrape_reverse: "{%not( url32_ordered_by_newest )}"
download_reverse: "url32_ordered_by_newest"
extract_bilaterally: "url32_extract_bilaterally"
- url: "{url33}"
scrape_reverse: "{%not( url33_ordered_by_newest )}"
download_reverse: "url33_ordered_by_newest"
extract_bilaterally: "url33_extract_bilaterally"
- url: "{url34}"
scrape_reverse: "{%not( url34_ordered_by_newest )}"
download_reverse: "url34_ordered_by_newest"
extract_bilaterally: "url34_extract_bilaterally"
- url: "{url35}"
scrape_reverse: "{%not( url35_ordered_by_newest )}"
download_reverse: "url35_ordered_by_newest"
extract_bilaterally: "url35_extract_bilaterally"
- url: "{url36}"
scrape_reverse: "{%not( url36_ordered_by_newest )}"
download_reverse: "url36_ordered_by_newest"
extract_bilaterally: "url36_extract_bilaterally"
- url: "{url37}"
scrape_reverse: "{%not( url37_ordered_by_newest )}"
download_reverse: "url37_ordered_by_newest"
extract_bilaterally: "url37_extract_bilaterally"
- url: "{url38}"
scrape_reverse: "{%not( url38_ordered_by_newest )}"
download_reverse: "url38_ordered_by_newest"
extract_bilaterally: "url38_extract_bilaterally"
- url: "{url39}"
scrape_reverse: "{%not( url39_ordered_by_newest )}"
download_reverse: "url39_ordered_by_newest"
extract_bilaterally: "url39_extract_bilaterally"
- url: "{url40}"
scrape_reverse: "{%not( url40_ordered_by_newest )}"
download_reverse: "url40_ordered_by_newest"
extract_bilaterally: "url40_extract_bilaterally"
- url: "{url41}"
scrape_reverse: "{%not( url41_ordered_by_newest )}"
download_reverse: "url41_ordered_by_newest"
extract_bilaterally: "url41_extract_bilaterally"
- url: "{url42}"
scrape_reverse: "{%not( url42_ordered_by_newest )}"
download_reverse: "url42_ordered_by_newest"
extract_bilaterally: "url42_extract_bilaterally"
- url: "{url43}"
scrape_reverse: "{%not( url43_ordered_by_newest )}"
download_reverse: "url43_ordered_by_newest"
extract_bilaterally: "url43_extract_bilaterally"
- url: "{url44}"
scrape_reverse: "{%not( url44_ordered_by_newest )}"
download_reverse: "url44_ordered_by_newest"
extract_bilaterally: "url44_extract_bilaterally"
- url: "{url45}"
scrape_reverse: "{%not( url45_ordered_by_newest )}"
download_reverse: "url45_ordered_by_newest"
extract_bilaterally: "url45_extract_bilaterally"
- url: "{url46}"
scrape_reverse: "{%not( url46_ordered_by_newest )}"
download_reverse: "url46_ordered_by_newest"
extract_bilaterally: "url46_extract_bilaterally"
- url: "{url47}"
scrape_reverse: "{%not( url47_ordered_by_newest )}"
download_reverse: "url47_ordered_by_newest"
extract_bilaterally: "url47_extract_bilaterally"
- url: "{url48}"
scrape_reverse: "{%not( url48_ordered_by_newest )}"
download_reverse: "url48_ordered_by_newest"
extract_bilaterally: "url48_extract_bilaterally"
- url: "{url49}"
scrape_reverse: "{%not( url49_ordered_by_newest )}"
download_reverse: "url49_ordered_by_newest"
extract_bilaterally: "url49_extract_bilaterally"
- url: "{url50}"
scrape_reverse: "{%not( url50_ordered_by_newest )}"
download_reverse: "url50_ordered_by_newest"
extract_bilaterally: "url50_extract_bilaterally"
- url: "{url51}"
scrape_reverse: "{%not( url51_ordered_by_newest )}"
download_reverse: "url51_ordered_by_newest"
extract_bilaterally: "url51_extract_bilaterally"
- url: "{url52}"
scrape_reverse: "{%not( url52_ordered_by_newest )}"
download_reverse: "url52_ordered_by_newest"
extract_bilaterally: "url52_extract_bilaterally"
- url: "{url53}"
scrape_reverse: "{%not( url53_ordered_by_newest )}"
download_reverse: "url53_ordered_by_newest"
extract_bilaterally: "url53_extract_bilaterally"
- url: "{url54}"
scrape_reverse: "{%not( url54_ordered_by_newest )}"
download_reverse: "url54_ordered_by_newest"
extract_bilaterally: "url54_extract_bilaterally"
- url: "{url55}"
scrape_reverse: "{%not( url55_ordered_by_newest )}"
download_reverse: "url55_ordered_by_newest"
extract_bilaterally: "url55_extract_bilaterally"
- url: "{url56}"
scrape_reverse: "{%not( url56_ordered_by_newest )}"
download_reverse: "url56_ordered_by_newest"
extract_bilaterally: "url56_extract_bilaterally"
- url: "{url57}"
scrape_reverse: "{%not( url57_ordered_by_newest )}"
download_reverse: "url57_ordered_by_newest"
extract_bilaterally: "url57_extract_bilaterally"
- url: "{url58}"
scrape_reverse: "{%not( url58_ordered_by_newest )}"
download_reverse: "url58_ordered_by_newest"
extract_bilaterally: "url58_extract_bilaterally"
- url: "{url59}"
scrape_reverse: "{%not( url59_ordered_by_newest )}"
download_reverse: "url59_ordered_by_newest"
extract_bilaterally: "url59_extract_bilaterally"
- url: "{url60}"
scrape_reverse: "{%not( url60_ordered_by_newest )}"
download_reverse: "url60_ordered_by_newest"
extract_bilaterally: "url60_extract_bilaterally"
- url: "{url61}"
scrape_reverse: "{%not( url61_ordered_by_newest )}"
download_reverse: "url61_ordered_by_newest"
extract_bilaterally: "url61_extract_bilaterally"
- url: "{url62}"
scrape_reverse: "{%not( url62_ordered_by_newest )}"
download_reverse: "url62_ordered_by_newest"
extract_bilaterally: "url62_extract_bilaterally"
- url: "{url63}"
scrape_reverse: "{%not( url63_ordered_by_newest )}"
download_reverse: "url63_ordered_by_newest"
extract_bilaterally: "url63_extract_bilaterally"
- url: "{url64}"
scrape_reverse: "{%not( url64_ordered_by_newest )}"
download_reverse: "url64_ordered_by_newest"
extract_bilaterally: "url64_extract_bilaterally"
- url: "{url65}"
scrape_reverse: "{%not( url65_ordered_by_newest )}"
download_reverse: "url65_ordered_by_newest"
extract_bilaterally: "url65_extract_bilaterally"
- url: "{url66}"
scrape_reverse: "{%not( url66_ordered_by_newest )}"
download_reverse: "url66_ordered_by_newest"
extract_bilaterally: "url66_extract_bilaterally"
- url: "{url67}"
scrape_reverse: "{%not( url67_ordered_by_newest )}"
download_reverse: "url67_ordered_by_newest"
extract_bilaterally: "url67_extract_bilaterally"
- url: "{url68}"
scrape_reverse: "{%not( url68_ordered_by_newest )}"
download_reverse: "url68_ordered_by_newest"
extract_bilaterally: "url68_extract_bilaterally"
- url: "{url69}"
scrape_reverse: "{%not( url69_ordered_by_newest )}"
download_reverse: "url69_ordered_by_newest"
extract_bilaterally: "url69_extract_bilaterally"
- url: "{url70}"
scrape_reverse: "{%not( url70_ordered_by_newest )}"
download_reverse: "url70_ordered_by_newest"
extract_bilaterally: "url70_extract_bilaterally"
- url: "{url71}"
scrape_reverse: "{%not( url71_ordered_by_newest )}"
download_reverse: "url71_ordered_by_newest"
extract_bilaterally: "url71_extract_bilaterally"
- url: "{url72}"
scrape_reverse: "{%not( url72_ordered_by_newest )}"
download_reverse: "url72_ordered_by_newest"
extract_bilaterally: "url72_extract_bilaterally"
- url: "{url73}"
scrape_reverse: "{%not( url73_ordered_by_newest )}"
download_reverse: "url73_ordered_by_newest"
extract_bilaterally: "url73_extract_bilaterally"
- url: "{url74}"
scrape_reverse: "{%not( url74_ordered_by_newest )}"
download_reverse: "url74_ordered_by_newest"
extract_bilaterally: "url74_extract_bilaterally"
- url: "{url75}"
scrape_reverse: "{%not( url75_ordered_by_newest )}"
download_reverse: "url75_ordered_by_newest"
extract_bilaterally: "url75_extract_bilaterally"
- url: "{url76}"
scrape_reverse: "{%not( url76_ordered_by_newest )}"
download_reverse: "url76_ordered_by_newest"
extract_bilaterally: "url76_extract_bilaterally"
- url: "{url77}"
scrape_reverse: "{%not( url77_ordered_by_newest )}"
download_reverse: "url77_ordered_by_newest"
extract_bilaterally: "url77_extract_bilaterally"
- url: "{url78}"
scrape_reverse: "{%not( url78_ordered_by_newest )}"
download_reverse: "url78_ordered_by_newest"
extract_bilaterally: "url78_extract_bilaterally"
- url: "{url79}"
scrape_reverse: "{%not( url79_ordered_by_newest )}"
download_reverse: "url79_ordered_by_newest"
extract_bilaterally: "url79_extract_bilaterally"
- url: "{url80}"
scrape_reverse: "{%not( url80_ordered_by_newest )}"
download_reverse: "url80_ordered_by_newest"
extract_bilaterally: "url80_extract_bilaterally"
- url: "{url81}"
scrape_reverse: "{%not( url81_ordered_by_newest )}"
download_reverse: "url81_ordered_by_newest"
extract_bilaterally: "url81_extract_bilaterally"
- url: "{url82}"
scrape_reverse: "{%not( url82_ordered_by_newest )}"
download_reverse: "url82_ordered_by_newest"
extract_bilaterally: "url82_extract_bilaterally"
- url: "{url83}"
scrape_reverse: "{%not( url83_ordered_by_newest )}"
download_reverse: "url83_ordered_by_newest"
extract_bilaterally: "url83_extract_bilaterally"
- url: "{url84}"
scrape_reverse: "{%not( url84_ordered_by_newest )}"
download_reverse: "url84_ordered_by_newest"
extract_bilaterally: "url84_extract_bilaterally"
- url: "{url85}"
scrape_reverse: "{%not( url85_ordered_by_newest )}"
download_reverse: "url85_ordered_by_newest"
extract_bilaterally: "url85_extract_bilaterally"
- url: "{url86}"
scrape_reverse: "{%not( url86_ordered_by_newest )}"
download_reverse: "url86_ordered_by_newest"
extract_bilaterally: "url86_extract_bilaterally"
- url: "{url87}"
scrape_reverse: "{%not( url87_ordered_by_newest )}"
download_reverse: "url87_ordered_by_newest"
extract_bilaterally: "url87_extract_bilaterally"
- url: "{url88}"
scrape_reverse: "{%not( url88_ordered_by_newest )}"
download_reverse: "url88_ordered_by_newest"
extract_bilaterally: "url88_extract_bilaterally"
- url: "{url89}"
scrape_reverse: "{%not( url89_ordered_by_newest )}"
download_reverse: "url89_ordered_by_newest"
extract_bilaterally: "url89_extract_bilaterally"
- url: "{url90}"
scrape_reverse: "{%not( url90_ordered_by_newest )}"
download_reverse: "url90_ordered_by_newest"
extract_bilaterally: "url90_extract_bilaterally"
- url: "{url91}"
scrape_reverse: "{%not( url91_ordered_by_newest )}"
download_reverse: "url91_ordered_by_newest"
extract_bilaterally: "url91_extract_bilaterally"
- url: "{url92}"
scrape_reverse: "{%not( url92_ordered_by_newest )}"
download_reverse: "url92_ordered_by_newest"
extract_bilaterally: "url92_extract_bilaterally"
- url: "{url93}"
scrape_reverse: "{%not( url93_ordered_by_newest )}"
download_reverse: "url93_ordered_by_newest"
extract_bilaterally: "url93_extract_bilaterally"
- url: "{url94}"
scrape_reverse: "{%not( url94_ordered_by_newest )}"
download_reverse: "url94_ordered_by_newest"
extract_bilaterally: "url94_extract_bilaterally"
- url: "{url95}"
scrape_reverse: "{%not( url95_ordered_by_newest )}"
download_reverse: "url95_ordered_by_newest"
extract_bilaterally: "url95_extract_bilaterally"
- url: "{url96}"
scrape_reverse: "{%not( url96_ordered_by_newest )}"
download_reverse: "url96_ordered_by_newest"
extract_bilaterally: "url96_extract_bilaterally"
- url: "{url97}"
scrape_reverse: "{%not( url97_ordered_by_newest )}"
download_reverse: "url97_ordered_by_newest"
extract_bilaterally: "url97_extract_bilaterally"
- url: "{url98}"
scrape_reverse: "{%not( url98_ordered_by_newest )}"
download_reverse: "url98_ordered_by_newest"
extract_bilaterally: "url98_extract_bilaterally"
- url: "{url99}"
scrape_reverse: "{%not( url99_ordered_by_newest )}"
download_reverse: "url99_ordered_by_newest"
extract_bilaterally: "url99_extract_bilaterally"
- url: "{url100}"
scrape_reverse: "{%not( url100_ordered_by_newest )}"
download_reverse: "url100_ordered_by_newest"
extract_bilaterally: "url100_extract_bilaterally"
overrides:
avatar_uncropped_thumbnail_file_name: ""
@ -532,104 +432,104 @@ presets:
url100: "{subscription_value_100}"
# Default behavior is to assume all URLs are ordered by newest
url_ordered_by_newest: "{ %bool(True) }"
url2_ordered_by_newest: "{ %bool(True) }"
url3_ordered_by_newest: "{ %bool(True) }"
url4_ordered_by_newest: "{ %bool(True) }"
url5_ordered_by_newest: "{ %bool(True) }"
url6_ordered_by_newest: "{ %bool(True) }"
url7_ordered_by_newest: "{ %bool(True) }"
url8_ordered_by_newest: "{ %bool(True) }"
url9_ordered_by_newest: "{ %bool(True) }"
url10_ordered_by_newest: "{ %bool(True) }"
url11_ordered_by_newest: "{ %bool(True) }"
url12_ordered_by_newest: "{ %bool(True) }"
url13_ordered_by_newest: "{ %bool(True) }"
url14_ordered_by_newest: "{ %bool(True) }"
url15_ordered_by_newest: "{ %bool(True) }"
url16_ordered_by_newest: "{ %bool(True) }"
url17_ordered_by_newest: "{ %bool(True) }"
url18_ordered_by_newest: "{ %bool(True) }"
url19_ordered_by_newest: "{ %bool(True) }"
url20_ordered_by_newest: "{ %bool(True) }"
url21_ordered_by_newest: "{ %bool(True) }"
url22_ordered_by_newest: "{ %bool(True) }"
url23_ordered_by_newest: "{ %bool(True) }"
url24_ordered_by_newest: "{ %bool(True) }"
url25_ordered_by_newest: "{ %bool(True) }"
url26_ordered_by_newest: "{ %bool(True) }"
url27_ordered_by_newest: "{ %bool(True) }"
url28_ordered_by_newest: "{ %bool(True) }"
url29_ordered_by_newest: "{ %bool(True) }"
url30_ordered_by_newest: "{ %bool(True) }"
url31_ordered_by_newest: "{ %bool(True) }"
url32_ordered_by_newest: "{ %bool(True) }"
url33_ordered_by_newest: "{ %bool(True) }"
url34_ordered_by_newest: "{ %bool(True) }"
url35_ordered_by_newest: "{ %bool(True) }"
url36_ordered_by_newest: "{ %bool(True) }"
url37_ordered_by_newest: "{ %bool(True) }"
url38_ordered_by_newest: "{ %bool(True) }"
url39_ordered_by_newest: "{ %bool(True) }"
url40_ordered_by_newest: "{ %bool(True) }"
url41_ordered_by_newest: "{ %bool(True) }"
url42_ordered_by_newest: "{ %bool(True) }"
url43_ordered_by_newest: "{ %bool(True) }"
url44_ordered_by_newest: "{ %bool(True) }"
url45_ordered_by_newest: "{ %bool(True) }"
url46_ordered_by_newest: "{ %bool(True) }"
url47_ordered_by_newest: "{ %bool(True) }"
url48_ordered_by_newest: "{ %bool(True) }"
url49_ordered_by_newest: "{ %bool(True) }"
url50_ordered_by_newest: "{ %bool(True) }"
url51_ordered_by_newest: "{ %bool(True) }"
url52_ordered_by_newest: "{ %bool(True) }"
url53_ordered_by_newest: "{ %bool(True) }"
url54_ordered_by_newest: "{ %bool(True) }"
url55_ordered_by_newest: "{ %bool(True) }"
url56_ordered_by_newest: "{ %bool(True) }"
url57_ordered_by_newest: "{ %bool(True) }"
url58_ordered_by_newest: "{ %bool(True) }"
url59_ordered_by_newest: "{ %bool(True) }"
url60_ordered_by_newest: "{ %bool(True) }"
url61_ordered_by_newest: "{ %bool(True) }"
url62_ordered_by_newest: "{ %bool(True) }"
url63_ordered_by_newest: "{ %bool(True) }"
url64_ordered_by_newest: "{ %bool(True) }"
url65_ordered_by_newest: "{ %bool(True) }"
url66_ordered_by_newest: "{ %bool(True) }"
url67_ordered_by_newest: "{ %bool(True) }"
url68_ordered_by_newest: "{ %bool(True) }"
url69_ordered_by_newest: "{ %bool(True) }"
url70_ordered_by_newest: "{ %bool(True) }"
url71_ordered_by_newest: "{ %bool(True) }"
url72_ordered_by_newest: "{ %bool(True) }"
url73_ordered_by_newest: "{ %bool(True) }"
url74_ordered_by_newest: "{ %bool(True) }"
url75_ordered_by_newest: "{ %bool(True) }"
url76_ordered_by_newest: "{ %bool(True) }"
url77_ordered_by_newest: "{ %bool(True) }"
url78_ordered_by_newest: "{ %bool(True) }"
url79_ordered_by_newest: "{ %bool(True) }"
url80_ordered_by_newest: "{ %bool(True) }"
url81_ordered_by_newest: "{ %bool(True) }"
url82_ordered_by_newest: "{ %bool(True) }"
url83_ordered_by_newest: "{ %bool(True) }"
url84_ordered_by_newest: "{ %bool(True) }"
url85_ordered_by_newest: "{ %bool(True) }"
url86_ordered_by_newest: "{ %bool(True) }"
url87_ordered_by_newest: "{ %bool(True) }"
url88_ordered_by_newest: "{ %bool(True) }"
url89_ordered_by_newest: "{ %bool(True) }"
url90_ordered_by_newest: "{ %bool(True) }"
url91_ordered_by_newest: "{ %bool(True) }"
url92_ordered_by_newest: "{ %bool(True) }"
url93_ordered_by_newest: "{ %bool(True) }"
url94_ordered_by_newest: "{ %bool(True) }"
url95_ordered_by_newest: "{ %bool(True) }"
url96_ordered_by_newest: "{ %bool(True) }"
url97_ordered_by_newest: "{ %bool(True) }"
url98_ordered_by_newest: "{ %bool(True) }"
url99_ordered_by_newest: "{ %bool(True) }"
url100_ordered_by_newest: "{ %bool(True) }"
url_extract_bilaterally: False
url2_extract_bilaterally: False
url3_extract_bilaterally: False
url4_extract_bilaterally: False
url5_extract_bilaterally: False
url6_extract_bilaterally: False
url7_extract_bilaterally: False
url8_extract_bilaterally: False
url9_extract_bilaterally: False
url10_extract_bilaterally: False
url11_extract_bilaterally: False
url12_extract_bilaterally: False
url13_extract_bilaterally: False
url14_extract_bilaterally: False
url15_extract_bilaterally: False
url16_extract_bilaterally: False
url17_extract_bilaterally: False
url18_extract_bilaterally: False
url19_extract_bilaterally: False
url20_extract_bilaterally: False
url21_extract_bilaterally: False
url22_extract_bilaterally: False
url23_extract_bilaterally: False
url24_extract_bilaterally: False
url25_extract_bilaterally: False
url26_extract_bilaterally: False
url27_extract_bilaterally: False
url28_extract_bilaterally: False
url29_extract_bilaterally: False
url30_extract_bilaterally: False
url31_extract_bilaterally: False
url32_extract_bilaterally: False
url33_extract_bilaterally: False
url34_extract_bilaterally: False
url35_extract_bilaterally: False
url36_extract_bilaterally: False
url37_extract_bilaterally: False
url38_extract_bilaterally: False
url39_extract_bilaterally: False
url40_extract_bilaterally: False
url41_extract_bilaterally: False
url42_extract_bilaterally: False
url43_extract_bilaterally: False
url44_extract_bilaterally: False
url45_extract_bilaterally: False
url46_extract_bilaterally: False
url47_extract_bilaterally: False
url48_extract_bilaterally: False
url49_extract_bilaterally: False
url50_extract_bilaterally: False
url51_extract_bilaterally: False
url52_extract_bilaterally: False
url53_extract_bilaterally: False
url54_extract_bilaterally: False
url55_extract_bilaterally: False
url56_extract_bilaterally: False
url57_extract_bilaterally: False
url58_extract_bilaterally: False
url59_extract_bilaterally: False
url60_extract_bilaterally: False
url61_extract_bilaterally: False
url62_extract_bilaterally: False
url63_extract_bilaterally: False
url64_extract_bilaterally: False
url65_extract_bilaterally: False
url66_extract_bilaterally: False
url67_extract_bilaterally: False
url68_extract_bilaterally: False
url69_extract_bilaterally: False
url70_extract_bilaterally: False
url71_extract_bilaterally: False
url72_extract_bilaterally: False
url73_extract_bilaterally: False
url74_extract_bilaterally: False
url75_extract_bilaterally: False
url76_extract_bilaterally: False
url77_extract_bilaterally: False
url78_extract_bilaterally: False
url79_extract_bilaterally: False
url80_extract_bilaterally: False
url81_extract_bilaterally: False
url82_extract_bilaterally: False
url83_extract_bilaterally: False
url84_extract_bilaterally: False
url85_extract_bilaterally: False
url86_extract_bilaterally: False
url87_extract_bilaterally: False
url88_extract_bilaterally: False
url89_extract_bilaterally: False
url90_extract_bilaterally: False
url91_extract_bilaterally: False
url92_extract_bilaterally: False
url93_extract_bilaterally: False
url94_extract_bilaterally: False
url95_extract_bilaterally: False
url96_extract_bilaterally: False
url97_extract_bilaterally: False
url98_extract_bilaterally: False
url99_extract_bilaterally: False
url100_extract_bilaterally: False

View file

@ -40,106 +40,106 @@ presets:
# Check each URL to ensure ordering matches ytdl-sub's expectations
# of being ordered by newest
url_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url) }"
url2_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url2) }"
url3_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url3) }"
url4_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url4) }"
url5_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url5) }"
url6_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url6) }"
url7_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url7) }"
url8_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url8) }"
url9_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url9) }"
url10_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url10) }"
url11_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url11) }"
url12_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url12) }"
url13_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url13) }"
url14_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url14) }"
url15_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url15) }"
url16_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url16) }"
url17_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url17) }"
url18_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url18) }"
url19_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url19) }"
url20_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url20) }"
url21_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url21) }"
url22_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url22) }"
url23_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url23) }"
url24_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url24) }"
url25_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url25) }"
url26_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url26) }"
url27_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url27) }"
url28_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url28) }"
url29_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url29) }"
url30_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url30) }"
url31_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url31) }"
url32_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url32) }"
url33_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url33) }"
url34_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url34) }"
url35_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url35) }"
url36_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url36) }"
url37_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url37) }"
url38_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url38) }"
url39_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url39) }"
url40_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url40) }"
url41_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url41) }"
url42_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url42) }"
url43_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url43) }"
url44_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url44) }"
url45_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url45) }"
url46_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url46) }"
url47_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url47) }"
url48_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url48) }"
url49_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url49) }"
url50_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url50) }"
url51_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url51) }"
url52_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url52) }"
url53_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url53) }"
url54_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url54) }"
url55_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url55) }"
url56_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url56) }"
url57_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url57) }"
url58_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url58) }"
url59_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url59) }"
url60_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url60) }"
url61_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url61) }"
url62_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url62) }"
url63_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url63) }"
url64_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url64) }"
url65_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url65) }"
url66_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url66) }"
url67_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url67) }"
url68_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url68) }"
url69_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url69) }"
url70_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url70) }"
url71_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url71) }"
url72_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url72) }"
url73_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url73) }"
url74_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url74) }"
url75_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url75) }"
url76_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url76) }"
url77_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url77) }"
url78_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url78) }"
url79_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url79) }"
url80_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url80) }"
url81_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url81) }"
url82_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url82) }"
url83_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url83) }"
url84_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url84) }"
url85_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url85) }"
url86_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url86) }"
url87_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url87) }"
url88_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url88) }"
url89_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url89) }"
url90_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url90) }"
url91_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url91) }"
url92_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url92) }"
url93_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url93) }"
url94_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url94) }"
url95_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url95) }"
url96_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url96) }"
url97_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url97) }"
url98_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url98) }"
url99_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url99) }"
url100_ordered_by_newest: "{ %is_playlist_ordered_by_newest(url100) }"
url_extract_bilaterally: "{ %is_bilateral_playlist_url(url) }"
url2_extract_bilaterally: "{ %is_bilateral_playlist_url(url2) }"
url3_extract_bilaterally: "{ %is_bilateral_playlist_url(url3) }"
url4_extract_bilaterally: "{ %is_bilateral_playlist_url(url4) }"
url5_extract_bilaterally: "{ %is_bilateral_playlist_url(url5) }"
url6_extract_bilaterally: "{ %is_bilateral_playlist_url(url6) }"
url7_extract_bilaterally: "{ %is_bilateral_playlist_url(url7) }"
url8_extract_bilaterally: "{ %is_bilateral_playlist_url(url8) }"
url9_extract_bilaterally: "{ %is_bilateral_playlist_url(url9) }"
url10_extract_bilaterally: "{ %is_bilateral_playlist_url(url10) }"
url11_extract_bilaterally: "{ %is_bilateral_playlist_url(url11) }"
url12_extract_bilaterally: "{ %is_bilateral_playlist_url(url12) }"
url13_extract_bilaterally: "{ %is_bilateral_playlist_url(url13) }"
url14_extract_bilaterally: "{ %is_bilateral_playlist_url(url14) }"
url15_extract_bilaterally: "{ %is_bilateral_playlist_url(url15) }"
url16_extract_bilaterally: "{ %is_bilateral_playlist_url(url16) }"
url17_extract_bilaterally: "{ %is_bilateral_playlist_url(url17) }"
url18_extract_bilaterally: "{ %is_bilateral_playlist_url(url18) }"
url19_extract_bilaterally: "{ %is_bilateral_playlist_url(url19) }"
url20_extract_bilaterally: "{ %is_bilateral_playlist_url(url20) }"
url21_extract_bilaterally: "{ %is_bilateral_playlist_url(url21) }"
url22_extract_bilaterally: "{ %is_bilateral_playlist_url(url22) }"
url23_extract_bilaterally: "{ %is_bilateral_playlist_url(url23) }"
url24_extract_bilaterally: "{ %is_bilateral_playlist_url(url24) }"
url25_extract_bilaterally: "{ %is_bilateral_playlist_url(url25) }"
url26_extract_bilaterally: "{ %is_bilateral_playlist_url(url26) }"
url27_extract_bilaterally: "{ %is_bilateral_playlist_url(url27) }"
url28_extract_bilaterally: "{ %is_bilateral_playlist_url(url28) }"
url29_extract_bilaterally: "{ %is_bilateral_playlist_url(url29) }"
url30_extract_bilaterally: "{ %is_bilateral_playlist_url(url30) }"
url31_extract_bilaterally: "{ %is_bilateral_playlist_url(url31) }"
url32_extract_bilaterally: "{ %is_bilateral_playlist_url(url32) }"
url33_extract_bilaterally: "{ %is_bilateral_playlist_url(url33) }"
url34_extract_bilaterally: "{ %is_bilateral_playlist_url(url34) }"
url35_extract_bilaterally: "{ %is_bilateral_playlist_url(url35) }"
url36_extract_bilaterally: "{ %is_bilateral_playlist_url(url36) }"
url37_extract_bilaterally: "{ %is_bilateral_playlist_url(url37) }"
url38_extract_bilaterally: "{ %is_bilateral_playlist_url(url38) }"
url39_extract_bilaterally: "{ %is_bilateral_playlist_url(url39) }"
url40_extract_bilaterally: "{ %is_bilateral_playlist_url(url40) }"
url41_extract_bilaterally: "{ %is_bilateral_playlist_url(url41) }"
url42_extract_bilaterally: "{ %is_bilateral_playlist_url(url42) }"
url43_extract_bilaterally: "{ %is_bilateral_playlist_url(url43) }"
url44_extract_bilaterally: "{ %is_bilateral_playlist_url(url44) }"
url45_extract_bilaterally: "{ %is_bilateral_playlist_url(url45) }"
url46_extract_bilaterally: "{ %is_bilateral_playlist_url(url46) }"
url47_extract_bilaterally: "{ %is_bilateral_playlist_url(url47) }"
url48_extract_bilaterally: "{ %is_bilateral_playlist_url(url48) }"
url49_extract_bilaterally: "{ %is_bilateral_playlist_url(url49) }"
url50_extract_bilaterally: "{ %is_bilateral_playlist_url(url50) }"
url51_extract_bilaterally: "{ %is_bilateral_playlist_url(url51) }"
url52_extract_bilaterally: "{ %is_bilateral_playlist_url(url52) }"
url53_extract_bilaterally: "{ %is_bilateral_playlist_url(url53) }"
url54_extract_bilaterally: "{ %is_bilateral_playlist_url(url54) }"
url55_extract_bilaterally: "{ %is_bilateral_playlist_url(url55) }"
url56_extract_bilaterally: "{ %is_bilateral_playlist_url(url56) }"
url57_extract_bilaterally: "{ %is_bilateral_playlist_url(url57) }"
url58_extract_bilaterally: "{ %is_bilateral_playlist_url(url58) }"
url59_extract_bilaterally: "{ %is_bilateral_playlist_url(url59) }"
url60_extract_bilaterally: "{ %is_bilateral_playlist_url(url60) }"
url61_extract_bilaterally: "{ %is_bilateral_playlist_url(url61) }"
url62_extract_bilaterally: "{ %is_bilateral_playlist_url(url62) }"
url63_extract_bilaterally: "{ %is_bilateral_playlist_url(url63) }"
url64_extract_bilaterally: "{ %is_bilateral_playlist_url(url64) }"
url65_extract_bilaterally: "{ %is_bilateral_playlist_url(url65) }"
url66_extract_bilaterally: "{ %is_bilateral_playlist_url(url66) }"
url67_extract_bilaterally: "{ %is_bilateral_playlist_url(url67) }"
url68_extract_bilaterally: "{ %is_bilateral_playlist_url(url68) }"
url69_extract_bilaterally: "{ %is_bilateral_playlist_url(url69) }"
url70_extract_bilaterally: "{ %is_bilateral_playlist_url(url70) }"
url71_extract_bilaterally: "{ %is_bilateral_playlist_url(url71) }"
url72_extract_bilaterally: "{ %is_bilateral_playlist_url(url72) }"
url73_extract_bilaterally: "{ %is_bilateral_playlist_url(url73) }"
url74_extract_bilaterally: "{ %is_bilateral_playlist_url(url74) }"
url75_extract_bilaterally: "{ %is_bilateral_playlist_url(url75) }"
url76_extract_bilaterally: "{ %is_bilateral_playlist_url(url76) }"
url77_extract_bilaterally: "{ %is_bilateral_playlist_url(url77) }"
url78_extract_bilaterally: "{ %is_bilateral_playlist_url(url78) }"
url79_extract_bilaterally: "{ %is_bilateral_playlist_url(url79) }"
url80_extract_bilaterally: "{ %is_bilateral_playlist_url(url80) }"
url81_extract_bilaterally: "{ %is_bilateral_playlist_url(url81) }"
url82_extract_bilaterally: "{ %is_bilateral_playlist_url(url82) }"
url83_extract_bilaterally: "{ %is_bilateral_playlist_url(url83) }"
url84_extract_bilaterally: "{ %is_bilateral_playlist_url(url84) }"
url85_extract_bilaterally: "{ %is_bilateral_playlist_url(url85) }"
url86_extract_bilaterally: "{ %is_bilateral_playlist_url(url86) }"
url87_extract_bilaterally: "{ %is_bilateral_playlist_url(url87) }"
url88_extract_bilaterally: "{ %is_bilateral_playlist_url(url88) }"
url89_extract_bilaterally: "{ %is_bilateral_playlist_url(url89) }"
url90_extract_bilaterally: "{ %is_bilateral_playlist_url(url90) }"
url91_extract_bilaterally: "{ %is_bilateral_playlist_url(url91) }"
url92_extract_bilaterally: "{ %is_bilateral_playlist_url(url92) }"
url93_extract_bilaterally: "{ %is_bilateral_playlist_url(url93) }"
url94_extract_bilaterally: "{ %is_bilateral_playlist_url(url94) }"
url95_extract_bilaterally: "{ %is_bilateral_playlist_url(url95) }"
url96_extract_bilaterally: "{ %is_bilateral_playlist_url(url96) }"
url97_extract_bilaterally: "{ %is_bilateral_playlist_url(url97) }"
url98_extract_bilaterally: "{ %is_bilateral_playlist_url(url98) }"
url99_extract_bilaterally: "{ %is_bilateral_playlist_url(url99) }"
url100_extract_bilaterally: "{ %is_bilateral_playlist_url(url100) }"
####################################################################################################

View file

@ -9,124 +9,124 @@ presets:
season_number_padded: "{collection_season_number_padded}"
collection_season_1_url: ""
collection_season_1_name: "Season 1"
collection_season_1_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_1_url) }"
collection_season_1_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_1_url) }"
collection_season_2_url: ""
collection_season_2_name: "Season 2"
collection_season_2_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_2_url) }"
collection_season_2_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_2_url) }"
collection_season_3_url: ""
collection_season_3_name: "Season 3"
collection_season_3_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_3_url) }"
collection_season_3_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_3_url) }"
collection_season_4_url: ""
collection_season_4_name: "Season 4"
collection_season_4_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_4_url) }"
collection_season_4_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_4_url) }"
collection_season_5_url: ""
collection_season_5_name: "Season 5"
collection_season_5_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_5_url) }"
collection_season_5_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_5_url) }"
collection_season_6_url: ""
collection_season_6_name: "Season 6"
collection_season_6_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_6_url) }"
collection_season_6_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_6_url) }"
collection_season_7_url: ""
collection_season_7_name: "Season 7"
collection_season_7_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_7_url) }"
collection_season_7_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_7_url) }"
collection_season_8_url: ""
collection_season_8_name: "Season 8"
collection_season_8_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_8_url) }"
collection_season_8_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_8_url) }"
collection_season_9_url: ""
collection_season_9_name: "Season 9"
collection_season_9_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_9_url) }"
collection_season_9_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_9_url) }"
collection_season_10_url: ""
collection_season_10_name: "Season 10"
collection_season_10_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_10_url) }"
collection_season_10_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_10_url) }"
collection_season_11_url: ""
collection_season_11_name: "Season 11"
collection_season_11_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_11_url) }"
collection_season_11_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_11_url) }"
collection_season_12_url: ""
collection_season_12_name: "Season 12"
collection_season_12_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_12_url) }"
collection_season_12_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_12_url) }"
collection_season_13_url: ""
collection_season_13_name: "Season 13"
collection_season_13_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_13_url) }"
collection_season_13_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_13_url) }"
collection_season_14_url: ""
collection_season_14_name: "Season 14"
collection_season_14_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_14_url) }"
collection_season_14_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_14_url) }"
collection_season_15_url: ""
collection_season_15_name: "Season 15"
collection_season_15_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_15_url) }"
collection_season_15_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_15_url) }"
collection_season_16_url: ""
collection_season_16_name: "Season 16"
collection_season_16_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_16_url) }"
collection_season_16_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_16_url) }"
collection_season_17_url: ""
collection_season_17_name: "Season 17"
collection_season_17_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_17_url) }"
collection_season_17_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_17_url) }"
collection_season_18_url: ""
collection_season_18_name: "Season 18"
collection_season_18_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_18_url) }"
collection_season_18_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_18_url) }"
collection_season_19_url: ""
collection_season_19_name: "Season 19"
collection_season_19_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_19_url) }"
collection_season_19_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_19_url) }"
collection_season_20_url: ""
collection_season_20_name: "Season 20"
collection_season_20_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_20_url) }"
collection_season_20_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_20_url) }"
collection_season_21_url: ""
collection_season_21_name: "Season 21"
collection_season_21_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_21_url) }"
collection_season_21_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_21_url) }"
collection_season_22_url: ""
collection_season_22_name: "Season 22"
collection_season_22_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_22_url) }"
collection_season_22_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_22_url) }"
collection_season_23_url: ""
collection_season_23_name: "Season 23"
collection_season_23_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_23_url) }"
collection_season_23_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_23_url) }"
collection_season_24_url: ""
collection_season_24_name: "Season 24"
collection_season_24_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_24_url) }"
collection_season_24_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_24_url) }"
collection_season_25_url: ""
collection_season_25_name: "Season 25"
collection_season_25_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_25_url) }"
collection_season_25_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_25_url) }"
collection_season_26_url: ""
collection_season_26_name: "Season 26"
collection_season_26_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_26_url) }"
collection_season_26_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_26_url) }"
collection_season_27_url: ""
collection_season_27_name: "Season 27"
collection_season_27_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_27_url) }"
collection_season_27_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_27_url) }"
collection_season_28_url: ""
collection_season_28_name: "Season 28"
collection_season_28_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_28_url) }"
collection_season_28_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_28_url) }"
collection_season_29_url: ""
collection_season_29_name: "Season 29"
collection_season_29_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_29_url) }"
collection_season_29_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_29_url) }"
collection_season_30_url: ""
collection_season_30_name: "Season 30"
collection_season_30_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_30_url) }"
collection_season_30_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_30_url) }"
collection_season_31_url: ""
collection_season_31_name: "Season 31"
collection_season_31_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_31_url) }"
collection_season_31_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_31_url) }"
collection_season_32_url: ""
collection_season_32_name: "Season 32"
collection_season_32_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_32_url) }"
collection_season_32_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_32_url) }"
collection_season_33_url: ""
collection_season_33_name: "Season 33"
collection_season_33_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_33_url) }"
collection_season_33_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_33_url) }"
collection_season_34_url: ""
collection_season_34_name: "Season 34"
collection_season_34_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_34_url) }"
collection_season_34_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_34_url) }"
collection_season_35_url: ""
collection_season_35_name: "Season 35"
collection_season_35_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_35_url) }"
collection_season_35_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_35_url) }"
collection_season_36_url: ""
collection_season_36_name: "Season 36"
collection_season_36_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_36_url) }"
collection_season_36_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_36_url) }"
collection_season_37_url: ""
collection_season_37_name: "Season 37"
collection_season_37_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_37_url) }"
collection_season_37_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_37_url) }"
collection_season_38_url: ""
collection_season_38_name: "Season 38"
collection_season_38_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_38_url) }"
collection_season_38_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_38_url) }"
collection_season_39_url: ""
collection_season_39_name: "Season 39"
collection_season_39_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_39_url) }"
collection_season_39_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_39_url) }"
collection_season_40_url: ""
collection_season_40_name: "Season 40"
collection_season_40_ordered_by_newest: "{ %is_playlist_ordered_by_newest(collection_season_40_url) }"
collection_season_40_extract_bilaterally: "{ %is_bilateral_playlist_url(collection_season_40_url) }"
kodi_tv_show_collection:
preset:
@ -166,8 +166,7 @@ presets:
uid: "avatar_uncropped"
- name: "{tv_show_fanart_file_name}"
uid: "banner_uncropped"
scrape_reverse: "{%not( collection_season_1_ordered_by_newest )}"
download_reverse: "collection_season_1_ordered_by_newest"
extract_bilaterally: "collection_season_1_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -185,8 +184,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_2_ordered_by_newest )}"
download_reverse: "collection_season_2_ordered_by_newest"
extract_bilaterally: "collection_season_2_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -204,8 +202,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_3_ordered_by_newest )}"
download_reverse: "collection_season_3_ordered_by_newest"
extract_bilaterally: "collection_season_3_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -223,8 +220,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_4_ordered_by_newest )}"
download_reverse: "collection_season_4_ordered_by_newest"
extract_bilaterally: "collection_season_4_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -242,8 +238,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_5_ordered_by_newest )}"
download_reverse: "collection_season_5_ordered_by_newest"
extract_bilaterally: "collection_season_5_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -261,8 +256,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_6_ordered_by_newest )}"
download_reverse: "collection_season_6_ordered_by_newest"
extract_bilaterally: "collection_season_6_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -280,8 +274,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_7_ordered_by_newest )}"
download_reverse: "collection_season_7_ordered_by_newest"
extract_bilaterally: "collection_season_7_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -299,8 +292,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_8_ordered_by_newest )}"
download_reverse: "collection_season_8_ordered_by_newest"
extract_bilaterally: "collection_season_8_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -318,8 +310,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_9_ordered_by_newest )}"
download_reverse: "collection_season_9_ordered_by_newest"
extract_bilaterally: "collection_season_9_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -337,8 +328,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_10_ordered_by_newest )}"
download_reverse: "collection_season_10_ordered_by_newest"
extract_bilaterally: "collection_season_10_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -356,8 +346,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_11_ordered_by_newest )}"
download_reverse: "collection_season_11_ordered_by_newest"
extract_bilaterally: "collection_season_11_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -375,8 +364,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_12_ordered_by_newest )}"
download_reverse: "collection_season_12_ordered_by_newest"
extract_bilaterally: "collection_season_12_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -394,8 +382,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_13_ordered_by_newest )}"
download_reverse: "collection_season_13_ordered_by_newest"
extract_bilaterally: "collection_season_13_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -413,8 +400,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_14_ordered_by_newest )}"
download_reverse: "collection_season_14_ordered_by_newest"
extract_bilaterally: "collection_season_14_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -432,8 +418,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_15_ordered_by_newest )}"
download_reverse: "collection_season_15_ordered_by_newest"
extract_bilaterally: "collection_season_15_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -451,8 +436,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_16_ordered_by_newest )}"
download_reverse: "collection_season_16_ordered_by_newest"
extract_bilaterally: "collection_season_16_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -470,8 +454,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_17_ordered_by_newest )}"
download_reverse: "collection_season_17_ordered_by_newest"
extract_bilaterally: "collection_season_17_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -489,8 +472,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_18_ordered_by_newest )}"
download_reverse: "collection_season_18_ordered_by_newest"
extract_bilaterally: "collection_season_18_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -508,8 +490,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_19_ordered_by_newest )}"
download_reverse: "collection_season_19_ordered_by_newest"
extract_bilaterally: "collection_season_19_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -527,8 +508,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_20_ordered_by_newest )}"
download_reverse: "collection_season_20_ordered_by_newest"
extract_bilaterally: "collection_season_20_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -546,8 +526,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_21_ordered_by_newest )}"
download_reverse: "collection_season_21_ordered_by_newest"
extract_bilaterally: "collection_season_21_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -565,8 +544,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_22_ordered_by_newest )}"
download_reverse: "collection_season_22_ordered_by_newest"
extract_bilaterally: "collection_season_22_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -584,8 +562,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_23_ordered_by_newest )}"
download_reverse: "collection_season_23_ordered_by_newest"
extract_bilaterally: "collection_season_23_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -603,8 +580,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_24_ordered_by_newest )}"
download_reverse: "collection_season_24_ordered_by_newest"
extract_bilaterally: "collection_season_24_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -622,8 +598,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_25_ordered_by_newest )}"
download_reverse: "collection_season_25_ordered_by_newest"
extract_bilaterally: "collection_season_25_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -641,8 +616,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_26_ordered_by_newest )}"
download_reverse: "collection_season_26_ordered_by_newest"
extract_bilaterally: "collection_season_26_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -660,8 +634,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_27_ordered_by_newest )}"
download_reverse: "collection_season_27_ordered_by_newest"
extract_bilaterally: "collection_season_27_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -679,8 +652,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_28_ordered_by_newest )}"
download_reverse: "collection_season_28_ordered_by_newest"
extract_bilaterally: "collection_season_28_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -698,8 +670,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_29_ordered_by_newest )}"
download_reverse: "collection_season_29_ordered_by_newest"
extract_bilaterally: "collection_season_29_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -717,8 +688,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_30_ordered_by_newest )}"
download_reverse: "collection_season_30_ordered_by_newest"
extract_bilaterally: "collection_season_30_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -736,8 +706,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_31_ordered_by_newest )}"
download_reverse: "collection_season_31_ordered_by_newest"
extract_bilaterally: "collection_season_31_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -755,8 +724,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_32_ordered_by_newest )}"
download_reverse: "collection_season_32_ordered_by_newest"
extract_bilaterally: "collection_season_32_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -774,8 +742,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_33_ordered_by_newest )}"
download_reverse: "collection_season_33_ordered_by_newest"
extract_bilaterally: "collection_season_33_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -793,8 +760,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_34_ordered_by_newest )}"
download_reverse: "collection_season_34_ordered_by_newest"
extract_bilaterally: "collection_season_34_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -812,8 +778,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_35_ordered_by_newest )}"
download_reverse: "collection_season_35_ordered_by_newest"
extract_bilaterally: "collection_season_35_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -831,8 +796,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_36_ordered_by_newest )}"
download_reverse: "collection_season_36_ordered_by_newest"
extract_bilaterally: "collection_season_36_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -850,8 +814,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_37_ordered_by_newest )}"
download_reverse: "collection_season_37_ordered_by_newest"
extract_bilaterally: "collection_season_37_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -869,8 +832,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_38_ordered_by_newest )}"
download_reverse: "collection_season_38_ordered_by_newest"
extract_bilaterally: "collection_season_38_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -888,8 +850,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_39_ordered_by_newest )}"
download_reverse: "collection_season_39_ordered_by_newest"
extract_bilaterally: "collection_season_39_extract_bilaterally"
output_directory_nfo_tags:
tags:
@ -907,8 +868,7 @@ presets:
playlist_thumbnails:
- name: "{season_poster_file_name}"
uid: "latest_entry"
scrape_reverse: "{%not( collection_season_40_ordered_by_newest )}"
download_reverse: "collection_season_40_ordered_by_newest"
extract_bilaterally: "collection_season_40_extract_bilaterally"
output_directory_nfo_tags:
tags: