Allows for the `download` plugin to take in a script-based array of URLs. Prebuilt presets are now greatly reduced in size by constructing urls as an array versus 100+ separate URL variables. Eventually, we can completely remove the limit of the number of URLs in a subscription.
111 lines
No EOL
3.3 KiB
YAML
111 lines
No EOL
3.3 KiB
YAML
presets:
|
|
# Preset for categorizing URls like so
|
|
#
|
|
# subscription_name:
|
|
# category_1:
|
|
# - https://...1
|
|
# - https://...2
|
|
# category_2:
|
|
# - url: https://...1
|
|
# metadata_field_1: 2011
|
|
# metadata_field_2: 'abc"
|
|
# ...
|
|
#
|
|
# Metadata field of `url` must exist, other ones can be anything.
|
|
# Only supports a single level of nesting.
|
|
_url_categorized:
|
|
preset:
|
|
- "_multi_url_bilateral"
|
|
|
|
overrides:
|
|
# Parameters:
|
|
# $0: url string or map containing url + metadata fields
|
|
# $1: category key
|
|
#
|
|
# Output:
|
|
# Map containing { url: ..., category: ..., metadata_field_1: ... }
|
|
"%flat_array__url_to_map_format": >-
|
|
{
|
|
%elif(
|
|
%is_map($0),
|
|
%map_extend( $0, { "category": $1 } ),
|
|
%is_string($0),
|
|
{ "url": $0, "category": $1 },
|
|
%throw("If using album categories, each URL must be either a string or map with metadata fields")
|
|
)
|
|
}
|
|
|
|
# Parameters:
|
|
# $0: category key
|
|
# $1: array of URLs in either string or map form
|
|
#
|
|
# Output:
|
|
# Array containing [{ url: ..., category: ... }, ... ]
|
|
"%flat_array__category_to_map_format": >-
|
|
{
|
|
%array_apply_fixed(
|
|
%assert_then(
|
|
%is_array( $1 ),
|
|
$1,
|
|
"If using album categories, each category must map to an array"
|
|
),
|
|
$0,
|
|
%flat_array__url_to_map_format
|
|
)
|
|
}
|
|
|
|
# Parameters:
|
|
# $0: map containing fields { url: <url_value>, category: ... }
|
|
#
|
|
# Output:
|
|
# Nested map containing { <url_value>: { url: <url_value>, category: ... } }
|
|
"%flat_array__url_keyed_map_format": >-
|
|
{ { %map_get($0, "url"): $0 } }
|
|
|
|
# Creates an array in the form of [ { url: ..., category: ..., metadata_field_1: ... }, ... ]
|
|
category_url_array: >-
|
|
{ %array_flatten( %map_apply( subscription_map, %flat_array__category_to_map_format ) ) }
|
|
|
|
# Creates a map in the form of { <url value>: { category: ..., metadata_field_1: ... }, ... }
|
|
category_url_map: >-
|
|
{
|
|
%array_reduce(
|
|
%array_apply( category_url_array, %flat_array__url_keyed_map_format ),
|
|
%map_extend
|
|
)
|
|
}
|
|
|
|
# Parameters:
|
|
# $0: metadata field to fetch for the current url
|
|
# $1: default value
|
|
#
|
|
# Output:
|
|
# Metadata field value if it exists. Otherwise, return default value
|
|
"%get_url_field": >-
|
|
{ %map_get( %map( %map_get( category_url_map, ytdl_sub_input_url, {} ) ), $0, $1 ) }
|
|
|
|
# Parameters:
|
|
# $0: metadata field to fetch for the current url
|
|
#
|
|
# Output:
|
|
# True if field is specified. False otherwise.
|
|
"%contains_url_field": >-
|
|
{ %not( %is_null( %get_url_field( $0, null ) ) ) }
|
|
|
|
|
|
# Parameters:
|
|
# $0: integer to fetch the i'th url using 1-based indexing
|
|
#
|
|
# Output:
|
|
# i'th url in the category map
|
|
"%get_url_i": >-
|
|
{
|
|
%map_get(
|
|
%map( %array_at( category_url_array, %int( %sub($0, 1) ), {} ) ),
|
|
"url",
|
|
%array_at(subscription_array, %int( %sub($0, 1) ), null)
|
|
)
|
|
}
|
|
|
|
subscription_map: "{ {} }"
|
|
urls: "{ %array_apply(%range(100, 1), %get_url_i) }" |