Compare commits
3 commits
master
...
j/music-vi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2d08320bed | ||
|
|
c00031b84c | ||
|
|
7a646c0f76 |
1 changed files with 69 additions and 0 deletions
69
src/ytdl_sub/prebuilt_presets/helpers/url_categorized.yaml
Normal file
69
src/ytdl_sub/prebuilt_presets/helpers/url_categorized.yaml
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
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:
|
||||
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": >-
|
||||
{
|
||||
%if(
|
||||
%is_map($0),
|
||||
%map_extend( $0, { "category": $1 } ),
|
||||
{ "url": $0, "category": $1 }
|
||||
}
|
||||
|
||||
# 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( $1, $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: >-
|
||||
{ %map_apply( subscription_dict, %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_array, %flat_array__url_keyed_map_format ),
|
||||
%map_extend
|
||||
)
|
||||
}
|
||||
|
||||
# Parameters:
|
||||
# $0: metadata field to fetch for the current url
|
||||
#
|
||||
# Output:
|
||||
# Metadata field value. Empty string/null if it does not exist
|
||||
"%get_url_field": >-
|
||||
{ %map_get( %map_get( category_url_map, ytdl_sub_input_url, {} ), $0, null ) }
|
||||
Loading…
Reference in a new issue