[DEV] Prebuilt Presets Revamp (#864)

Modifies some of the prebuilt preset logic in the backend
This commit is contained in:
Qualis Svagtlys 2024-01-18 17:01:29 -06:00 committed by GitHub
parent d2e733f2e7
commit c7823a40ad
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 391 additions and 341 deletions

View file

@ -1,16 +1,29 @@
presets:
best_video_quality:
format: "bestvideo+bestaudio/best"
ytdl_options:
merge_output_format: "mp4"
"Only Recent":
preset:
- "Only Recent Archive"
# Only fetch videos after today minus date_range
max_1080p:
format: "(bv*[height<=1080]+bestaudio/best[height<=1080])"
ytdl_options:
merge_output_format: "mp4"
# Only keep files uploaded after date_range
output_options:
keep_files_after: "today-{only_recent_date_range}"
keep_max_files: "{only_recent_max_files}"
overrides:
only_recent_max_files: 0
"Only Recent Archive":
# Only fetch videos after today minus date_range
date_range:
after: "today-{only_recent_date_range}"
# Set the default date_range to 2 months
overrides:
date_range: "2months" # keep for legacy-reasons
only_recent_date_range: "{date_range}"
chunk_initial_download:
ytdl_options:
@ -19,18 +32,6 @@ presets:
break_on_existing: False
break_on_reject: True
"Only Recent":
# Only fetch videos after today minus date_range
date_range:
after: "today-{only_recent_date_range}"
# Only keep files uploaded after date_range
output_options:
keep_files_after: "today-{only_recent_date_range}"
keep_max_files: "{only_recent_max_files}"
# Set the default date_range to 2 months
overrides:
date_range: "2months" # keep for legacy-reasons
only_recent_date_range: "{date_range}"
only_recent_max_files: 0
"Download in Chunks":
preset:
- chunk_initial_download

View file

@ -0,0 +1,40 @@
presets:
best_video_quality:
format: "bestvideo+bestaudio/best"
ytdl_options:
merge_output_format: "mp4"
"Best Video Quality":
preset:
- best_video_quality
"Max 2160p":
format: "(bv*[height<=2160]+bestaudio/best[height<=2160])"
ytdl_options:
merge_output_format: "mp4"
"Max 1440p":
format: "(bv*[height<=1440]+bestaudio/best[height<=1440])"
ytdl_options:
merge_output_format: "mp4"
max_1080p:
format: "(bv*[height<=1080]+bestaudio/best[height<=1080])"
ytdl_options:
merge_output_format: "mp4"
"Max 1080p":
preset:
- max_1080p
"Max 720p":
format: "(bv*[height<=720]+bestaudio/best[height<=720])"
ytdl_options:
merge_output_format: "mp4"
"Max 480p":
format: "(bv*[height<=480]+bestaudio/best[height<=480])"
ytdl_options:
merge_output_format: "mp4"

View file

@ -0,0 +1,21 @@
presets:
# assumes that each chapter in an entry is a song
_albums_from_chapters:
preset: "Single"
chapters:
embed_chapters: True
split_by_chapters:
when_no_chapters: "pass"
overrides:
track_title: "{chapter_title}" # Chapter title is the track title
track_album: "{title}" # Video's title is the album title
track_number: "{chapter_index}"
track_number_padded: "{chapter_index_padded}"
track_total: "{chapter_count}"
"YouTube Full Albums":
preset:
- "_albums_from_chapters"

View file

@ -0,0 +1,36 @@
presets:
# assumes that each entry is a song in one album
_albums_from_playlists:
preset:
- "_music_base"
download:
- url: "{url}"
include_sibling_metadata: True
overrides:
track_album: "{playlist_title}"
track_number: "{playlist_index}"
track_number_padded: "{playlist_index_padded}"
track_total: "{playlist_count}"
track_year: "{playlist_max_upload_year}"
"YouTube Releases":
preset:
- "_albums_from_playlists"
"Bandcamp":
preset:
- "_albums_from_playlists"
regex:
from:
title:
match:
- ".*? - (.*)" # Captures 'Some - Song' from 'Emily Hopkins - Some - Song'
capture_group_names:
- "captured_track_title"
capture_group_defaults:
- "{title}"
overrides:
track_title: "{captured_track_title}"

View file

@ -1,163 +0,0 @@
presets:
_music_base:
output_options:
output_directory: "{music_directory}"
file_name: "{track_full_path}"
thumbnail_name: "{album_cover_path}"
maintain_download_archive: True
ytdl_options:
break_on_existing: True
format: "ba[ext=webm]/ba"
audio_extract:
codec: "best"
music_tags:
artist: "{track_artist}"
albumartist: "{track_album_artist}"
title: "{track_title}"
album: "{track_album}"
track: "{track_number}"
tracktotal: "{track_total}"
year: "{track_year}"
# multi-tags
artists:
- "{track_artist}"
albumartists:
- "{track_album_artist}"
genres:
- "{track_genre}"
overrides:
# MUST DEFINE:
# music_directory
# Defaults
track_genre_default: "Unset"
# Subscription overrides
subscription_indent_1: "{track_genre_default}"
subscription_value: ""
url: "{subscription_value}"
# Track Overrides
track_title: "{title}"
track_album: "{title}"
track_artist: "{subscription_name}"
track_album_artist: "{track_artist}"
track_number: "1"
track_number_padded: "01"
track_total: "1"
track_year: "{upload_year}"
track_genre: "{subscription_indent_1}"
# Directory Overrides
artist_dir: "{track_artist_sanitized}"
album_dir: "[{track_year}] {track_album_sanitized}"
track_file_name: "{track_number_padded} - {track_title_sanitized}.{ext}"
track_full_path: "{artist_dir}/{album_dir}/{track_file_name}"
album_cover_path: "{artist_dir}/{album_dir}/folder.{thumbnail_ext}"
"Single":
preset:
- "_music_base"
download:
- url: "{url}"
include_sibling_metadata: False
_albums_from_playlists:
preset:
- "_music_base"
download:
- url: "{url}"
include_sibling_metadata: True
overrides:
track_album: "{playlist_title}"
track_number: "{playlist_index}"
track_number_padded: "{playlist_index_padded}"
track_total: "{playlist_count}"
track_year: "{playlist_max_upload_year}"
_albums_from_chapters:
preset: "Single"
chapters:
embed_chapters: True
split_by_chapters:
when_no_chapters: "pass"
overrides:
track_title: "{chapter_title}" # Chapter title is the track title
track_album: "{title}" # Video's title is the album title
track_number: "{chapter_index}"
track_number_padded: "{chapter_index_padded}"
track_total: "{chapter_count}"
"SoundCloud Discography":
preset: "_music_base"
# Download using the multi_url strategy
download:
download_strategy: "multi_url"
urls:
# The first URL will be all the artist's tracks.
# Treat these as singles - an album with a single track
- url: "{url}/tracks"
include_sibling_metadata: False
variables:
sc_track_album: "{title}"
sc_track_number: "1"
sc_track_number_padded: "01"
sc_track_total: "1"
sc_track_year: "{upload_year}"
# Set the second URL to the artist's albums. If a track belongs to both
# to an album and tracks (in the URL above), it will resolve to this
# URL and include the album metadata we set below.
- url: "{url}/albums"
include_sibling_metadata: True
variables:
sc_track_album: "{playlist_title}"
sc_track_number: "{playlist_index}"
sc_track_number_padded: "{playlist_index_padded}"
sc_track_total: "{playlist_count}"
sc_track_year: "{playlist_max_upload_year}"
# Override various track properties using playlist variables.
overrides:
track_album: "{sc_track_album}"
track_number: "{sc_track_number}"
track_number_padded: "{sc_track_number_padded}"
track_total: "{sc_track_total}"
track_year: "{sc_track_year}"
"YouTube Releases":
preset:
- "_albums_from_playlists"
"YouTube Full Albums":
preset:
- "_albums_from_chapters"
"Bandcamp":
preset:
- "_albums_from_playlists"
regex:
from:
title:
match:
- ".*? - (.*)" # Captures 'Some - Song' from 'Emily Hopkins - Some - Song'
capture_group_names:
- "captured_track_title"
capture_group_defaults:
- "{title}"
overrides:
track_title: "{captured_track_title}"

View file

@ -0,0 +1,38 @@
presets:
"SoundCloud Discography":
preset: "_music_base"
# Download using the multi_url strategy
download:
download_strategy: "multi_url"
urls:
# The first URL will be all the artist's tracks.
# Treat these as singles - an album with a single track
- url: "{url}/tracks"
include_sibling_metadata: False
variables:
sc_track_album: "{title}"
sc_track_number: "1"
sc_track_number_padded: "01"
sc_track_total: "1"
sc_track_year: "{upload_year}"
# Set the second URL to the artist's albums. If a track belongs to both
# to an album and tracks (in the URL above), it will resolve to this
# URL and include the album metadata we set below.
- url: "{url}/albums"
include_sibling_metadata: True
variables:
sc_track_album: "{playlist_title}"
sc_track_number: "{playlist_index}"
sc_track_number_padded: "{playlist_index_padded}"
sc_track_total: "{playlist_count}"
sc_track_year: "{playlist_max_upload_year}"
# Override various track properties using playlist variables.
overrides:
track_album: "{sc_track_album}"
track_number: "{sc_track_number}"
track_number_padded: "{sc_track_number_padded}"
track_total: "{sc_track_total}"
track_year: "{sc_track_year}"

View file

@ -0,0 +1,72 @@
presets:
_music_base:
output_options:
output_directory: "{music_directory}"
file_name: "{track_full_path}"
thumbnail_name: "{album_cover_path}"
maintain_download_archive: True
ytdl_options:
break_on_existing: True
format: "ba[ext=webm]/ba"
audio_extract:
codec: "best"
music_tags:
artist: "{track_artist}"
albumartist: "{track_album_artist}"
title: "{track_title}"
album: "{track_album}"
track: "{track_number}"
tracktotal: "{track_total}"
year: "{track_year}"
# multi-tags
artists:
- "{track_artist}"
albumartists:
- "{track_album_artist}"
genres:
- "{track_genre}"
overrides:
# MUST DEFINE:
# music_directory
# Defaults
track_genre_default: "Unset"
# Subscription overrides
subscription_indent_1: "{track_genre_default}"
subscription_value: ""
url: "{subscription_value}"
# Track Overrides
track_title: "{title}"
track_album: "{title}"
track_artist: "{subscription_name}"
track_album_artist: "{track_artist}"
track_number: "1"
track_number_padded: "01"
track_total: "1"
track_year: "{upload_year}"
track_genre: "{subscription_indent_1}"
# Directory Overrides
artist_dir: "{track_artist_sanitized}"
album_dir: "[{track_year}] {track_album_sanitized}"
track_file_name: "{track_number_padded} - {track_title_sanitized}.{ext}"
track_full_path: "{artist_dir}/{album_dir}/{track_file_name}"
album_cover_path: "{artist_dir}/{album_dir}/folder.{thumbnail_ext}"
"Single":
preset:
- "_music_base"
download:
- url: "{url}"
include_sibling_metadata: False

View file

@ -0,0 +1,35 @@
presets:
_music_video_base:
preset:
- "_multi_url"
output_options:
output_directory: "{music_video_directory}"
file_name: "{music_video_file_name}.{ext}"
thumbnail_name: "{music_video_file_name}.jpg"
maintain_download_archive: True
ytdl_options:
break_on_existing: True
overrides:
# MUST DEFINE:
# music_video_directory
# Defaults
music_video_genre_default: "ytdl-sub"
music_video_album_default: "Music Videos"
# Subscription overrides
subscription_indent_1: "{music_video_genre_default}"
# Music Video Overrides
music_video_title: "{title}"
music_video_album: "{music_video_album_default}"
music_video_artist: "{subscription_name}"
music_video_year: "{upload_year}"
music_video_date: "{upload_date_standardized}"
music_video_genre: "{subscription_indent_1}"
# Directory Overrides
music_video_file_name: "{music_video_artist_sanitized}/{music_video_title_sanitized}"

View file

@ -1,38 +1,24 @@
presets:
_music_video_base:
"Jellyfin Music Videos":
preset:
- "_multi_url"
- "_base"
- "_music_video_base"
- "_music_video_nfo"
- "_music_video_tags"
output_options:
output_directory: "{music_video_directory}"
file_name: "{music_video_file_name}.{ext}"
thumbnail_name: "{music_video_file_name}.jpg"
maintain_download_archive: True
"Kodi Music Videos":
preset:
- "_kodi_base"
- "_music_video_base"
- "_music_video_nfo"
- "_music_video_tags"
ytdl_options:
break_on_existing: True
overrides:
# MUST DEFINE:
# music_video_directory
# Defaults
music_video_genre_default: "ytdl-sub"
music_video_album_default: "Music Videos"
# Subscription overrides
subscription_indent_1: "{music_video_genre_default}"
# Music Video Overrides
music_video_title: "{title}"
music_video_album: "{music_video_album_default}"
music_video_artist: "{subscription_name}"
music_video_year: "{upload_year}"
music_video_date: "{upload_date_standardized}"
music_video_genre: "{subscription_indent_1}"
# Directory Overrides
music_video_file_name: "{music_video_artist_sanitized}/{music_video_title_sanitized}"
"Plex Music Videos":
preset:
- "_plex_video_base"
- "_music_video_base"
- "_music_video_tags"
_music_video_nfo:
nfo_tags:
@ -54,24 +40,4 @@ presets:
album: "{music_video_album}"
genre: "{music_video_genre}"
year: "{music_video_year}"
premiered: "{music_video_date}"
"Jellyfin Music Videos":
preset:
- "_base"
- "_music_video_base"
- "_music_video_nfo"
- "_music_video_tags"
"Kodi Music Videos":
preset:
- "_kodi_base"
- "_music_video_base"
- "_music_video_nfo"
- "_music_video_tags"
"Plex Music Videos":
preset:
- "_plex_video_base"
- "_music_video_base"
- "_music_video_tags"
premiered: "{music_video_date}"

View file

@ -6,7 +6,7 @@ presets:
output_options:
output_directory: "{tv_show_directory}/{tv_show_name_sanitized}"
file_name: "{episode_file_path}.{ext}"
thumbnail_name: "{episode_file_path}-thumb.jpg"
thumbnail_name: "{thumbnail_file_name}"
info_json_name: "{episode_file_path}.{info_json_ext}"
maintain_download_archive: True
@ -43,102 +43,7 @@ presets:
episode_date_standardized: "{upload_date_standardized}"
episode_file_name: "s{season_number_padded}.e{episode_number_padded} - {file_title}"
episode_file_path: "{season_directory_name_sanitized}/{episode_file_name_sanitized}"
thumbnail_file_name: "{episode_file_path}-thumb.jpg"
_episode_video_tags:
video_tags:
show: "{tv_show_name}"
genre: "{tv_show_genre}"
episode_id: "{episode_number}"
title: "{episode_title}"
synopsis: "{episode_plot}"
year: "{episode_year}"
date: "{episode_date_standardized}"
contentRating: "{episode_content_rating}"
_episode_nfo_tags:
nfo_tags:
nfo_name: "{episode_file_path}.nfo"
nfo_root: "episodedetails"
tags:
genre:
- "{tv_show_genre}"
season: "{season_number}"
episode: "{episode_number}"
title: "{episode_title}"
plot: "{episode_plot}"
year: "{episode_year}"
aired: "{episode_date_standardized}"
mpaa: "{episode_content_rating}"
output_directory_nfo_tags:
nfo_name: "tvshow.nfo"
nfo_root: "tvshow"
tags:
title: "{tv_show_name}"
genre:
- "{tv_show_genre}"
mpaa: "{tv_show_content_rating}"
####################################################################################################
_season_by_year:
overrides:
season_number: "{upload_year}"
season_number_padded: "{season_number}"
_season_by_year_month:
overrides:
season_number: "{upload_year}{upload_month_padded}"
season_number_padded: "{season_number}"
####################################################################################################
season_by_year_month__episode_by_day:
preset:
- "_season_by_year_month"
overrides:
episode_number: "{upload_day}{upload_date_index_padded}"
episode_number_padded: "{upload_day_padded}{upload_date_index_padded}"
season_by_year__episode_by_month_day:
preset:
- "_season_by_year"
overrides:
episode_number: "{upload_month}{upload_day_padded}{upload_date_index_padded}"
episode_number_padded: "{upload_month_padded}{upload_day_padded}{upload_date_index_padded}"
season_by_year__episode_by_month_day_reversed:
preset:
- "_season_by_year"
overrides:
episode_number: "{upload_day_of_year_reversed}{upload_date_index_reversed_padded}"
episode_number_padded: "{upload_day_of_year_reversed_padded}{upload_date_index_reversed_padded}"
season_by_year__episode_by_download_index:
preset:
- "_season_by_year"
overrides:
episode_number: "{download_index}"
episode_number_padded: "{download_index_padded6}"
###############
season_by_collection__episode_by_year_month_day:
overrides:
episode_number: "{upload_year_truncated}{upload_month_padded}{upload_day_padded}{upload_date_index_padded}"
episode_number_padded: "{episode_number}"
season_by_collection__episode_by_year_month_day_reversed:
overrides:
episode_number: "{upload_year_truncated_reversed}{upload_month_reversed_padded}{upload_day_reversed_padded}{upload_date_index_reversed_padded}"
episode_number_padded: "{episode_number}"
season_by_collection__episode_by_playlist_index:
overrides:
episode_number: "{playlist_index}"
episode_number_padded: "{playlist_index_padded6}"
season_by_collection__episode_by_playlist_index_reversed:
overrides:
episode_number: "{playlist_index_reversed}"
episode_number_padded: "{playlist_index_reversed_padded6}"

View file

@ -46,4 +46,39 @@ presets:
overrides:
collection_season_number_padded: "{ %pad_zero(%int(collection_season_number), 2) }"
season_number: "{collection_season_number}"
season_number_padded: "{collection_season_number_padded}"
season_number_padded: "{collection_season_number_padded}"
_episode_video_tags:
video_tags:
show: "{tv_show_name}"
genre: "{tv_show_genre}"
episode_id: "{episode_number}"
title: "{episode_title}"
synopsis: "{episode_plot}"
year: "{episode_year}"
date: "{episode_date_standardized}"
contentRating: "{episode_content_rating}"
_episode_nfo_tags:
nfo_tags:
nfo_name: "{episode_file_path}.nfo"
nfo_root: "episodedetails"
tags:
genre:
- "{tv_show_genre}"
season: "{season_number}"
episode: "{episode_number}"
title: "{episode_title}"
plot: "{episode_plot}"
year: "{episode_year}"
aired: "{episode_date_standardized}"
mpaa: "{episode_content_rating}"
output_directory_nfo_tags:
nfo_name: "tvshow.nfo"
nfo_root: "tvshow"
tags:
title: "{tv_show_name}"
genre:
- "{tv_show_genre}"
mpaa: "{tv_show_content_rating}"

View file

@ -29,4 +29,46 @@ presets:
"Plex TV Show by Date":
preset:
- "plex_tv_show_by_date"
- "season_by_year__episode_by_month_day"
- "season_by_year__episode_by_month_day"
####################################################################################################
_season_by_year:
overrides:
season_number: "{upload_year}"
season_number_padded: "{season_number}"
_season_by_year_month:
overrides:
season_number: "{upload_year}{upload_month_padded}"
season_number_padded: "{season_number}"
####################################################################################################
season_by_year_month__episode_by_day:
preset:
- "_season_by_year_month"
overrides:
episode_number: "{upload_day}{upload_date_index_padded}"
episode_number_padded: "{upload_day_padded}{upload_date_index_padded}"
season_by_year__episode_by_month_day:
preset:
- "_season_by_year"
overrides:
episode_number: "{upload_month}{upload_day_padded}{upload_date_index_padded}"
episode_number_padded: "{upload_month_padded}{upload_day_padded}{upload_date_index_padded}"
season_by_year__episode_by_month_day_reversed:
preset:
- "_season_by_year"
overrides:
episode_number: "{upload_day_of_year_reversed}{upload_date_index_reversed_padded}"
episode_number_padded: "{upload_day_of_year_reversed_padded}{upload_date_index_reversed_padded}"
season_by_year__episode_by_download_index:
preset:
- "_season_by_year"
overrides:
episode_number: "{download_index}"
episode_number_padded: "{download_index_padded6}"

View file

@ -1,6 +1,5 @@
presets:
kodi_tv_show_collection:
preset:
- "_kodi_tv_show"
@ -708,4 +707,27 @@ presets:
namedseason:
- tag: "{collection_season_40_name}"
attributes:
number: "40"
number: "40"
###############
season_by_collection__episode_by_year_month_day:
overrides:
episode_number: "{upload_year_truncated}{upload_month_padded}{upload_day_padded}{upload_date_index_padded}"
episode_number_padded: "{episode_number}"
season_by_collection__episode_by_year_month_day_reversed:
overrides:
episode_number: "{upload_year_truncated_reversed}{upload_month_reversed_padded}{upload_day_reversed_padded}{upload_date_index_reversed_padded}"
episode_number_padded: "{episode_number}"
season_by_collection__episode_by_playlist_index:
overrides:
episode_number: "{playlist_index}"
episode_number_padded: "{playlist_index_padded6}"
season_by_collection__episode_by_playlist_index_reversed:
overrides:
episode_number: "{playlist_index_reversed}"
episode_number_padded: "{playlist_index_reversed_padded6}"