From bf4a27f8686e30134e8c12b857084e7fae77856b Mon Sep 17 00:00:00 2001 From: Qualis Svagtlys <45446348+Svagtlys@users.noreply.github.com> Date: Sat, 30 Dec 2023 13:18:56 -0600 Subject: [PATCH] Splitting files and making presets --- .../prebuilt_presets/helpers/common.yaml | 33 +----------- .../helpers/download_deletion_options.yaml | 52 ++++++++++++++++++ .../helpers/media_quality.yaml | 39 ++++++++++++++ .../helpers/premade_regex.yaml | 18 +++++++ .../prebuilt_presets/helpers/url.yaml | 2 - .../music/albums_from_chapters.yaml | 21 ++++++++ .../music/albums_from_playlists.yaml | 36 +++++++++++++ .../music/{music.yaml => singles.yaml} | 53 +------------------ src/ytdl_sub/prebuilt_presets/plans.txt | 5 ++ 9 files changed, 173 insertions(+), 86 deletions(-) create mode 100644 src/ytdl_sub/prebuilt_presets/helpers/download_deletion_options.yaml create mode 100644 src/ytdl_sub/prebuilt_presets/helpers/media_quality.yaml create mode 100644 src/ytdl_sub/prebuilt_presets/helpers/premade_regex.yaml create mode 100644 src/ytdl_sub/prebuilt_presets/music/albums_from_chapters.yaml create mode 100644 src/ytdl_sub/prebuilt_presets/music/albums_from_playlists.yaml rename src/ytdl_sub/prebuilt_presets/music/{music.yaml => singles.yaml} (70%) diff --git a/src/ytdl_sub/prebuilt_presets/helpers/common.yaml b/src/ytdl_sub/prebuilt_presets/helpers/common.yaml index 461405e5..e3582d21 100644 --- a/src/ytdl_sub/prebuilt_presets/helpers/common.yaml +++ b/src/ytdl_sub/prebuilt_presets/helpers/common.yaml @@ -1,34 +1,3 @@ presets: - best_video_quality: - format: "bestvideo+bestaudio/best" - ytdl_options: - merge_output_format: "mp4" - - max_1080p: - format: "(bv*[height<=1080]+bestaudio/best[height<=1080])" - ytdl_options: - merge_output_format: "mp4" - - chunk_initial_download: - ytdl_options: - max_downloads: 20 - playlistreverse: True - 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 \ No newline at end of file + \ No newline at end of file diff --git a/src/ytdl_sub/prebuilt_presets/helpers/download_deletion_options.yaml b/src/ytdl_sub/prebuilt_presets/helpers/download_deletion_options.yaml new file mode 100644 index 00000000..512aa8dc --- /dev/null +++ b/src/ytdl_sub/prebuilt_presets/helpers/download_deletion_options.yaml @@ -0,0 +1,52 @@ +presets: + + "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 + + + "Fetch Newest": + # 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}" + + + "Delete Oldest": + # 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 + + chunk_initial_download: + ytdl_options: + max_downloads: 20 + playlistreverse: True + break_on_existing: False + break_on_reject: True + + "Download in Chunks": + preset: + - chunk_initial_download \ No newline at end of file diff --git a/src/ytdl_sub/prebuilt_presets/helpers/media_quality.yaml b/src/ytdl_sub/prebuilt_presets/helpers/media_quality.yaml new file mode 100644 index 00000000..296b9c72 --- /dev/null +++ b/src/ytdl_sub/prebuilt_presets/helpers/media_quality.yaml @@ -0,0 +1,39 @@ +presets: + + best_video_quality: + format: "bestvideo+bestaudio/best" + ytdl_options: + merge_output_format: "mp4" + + max_1080p: + format: "(bv*[height<=1080]+bestaudio/best[height<=1080])" + ytdl_options: + merge_output_format: "mp4" + + "Best AV 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": + 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" \ No newline at end of file diff --git a/src/ytdl_sub/prebuilt_presets/helpers/premade_regex.yaml b/src/ytdl_sub/prebuilt_presets/helpers/premade_regex.yaml new file mode 100644 index 00000000..a6b03e79 --- /dev/null +++ b/src/ytdl_sub/prebuilt_presets/helpers/premade_regex.yaml @@ -0,0 +1,18 @@ +presets: + + # Use with "YouTube Releases" to parse out each videos album and title and save accordingly + + "YouTube Music Releases": + regex: + skip_if_match_fails: True + from: + title: + match: '^(?:(?:.+?)(?= - | \/{2} )(?: - | \/{2} ))*([^\[\{\(\|]*?)\s*(?=\{|\(|\||\[|$).*' + capture_group_names: + - "captured_track_title" + capture_group_defaults: + - "{title}" + description: + match: "^(?:Provided)(?:.*\\n){4}([^\\[\\{\\(\\|]*?)\\s*(?=\\{|\\(|\\||\\[|$|\\n).*" + capture_group_names: "captured_track_album" + capture_group_defaults: "Singles" diff --git a/src/ytdl_sub/prebuilt_presets/helpers/url.yaml b/src/ytdl_sub/prebuilt_presets/helpers/url.yaml index 06f0ec45..02dd385c 100644 --- a/src/ytdl_sub/prebuilt_presets/helpers/url.yaml +++ b/src/ytdl_sub/prebuilt_presets/helpers/url.yaml @@ -1,5 +1,3 @@ - - presets: ################################################################################## diff --git a/src/ytdl_sub/prebuilt_presets/music/albums_from_chapters.yaml b/src/ytdl_sub/prebuilt_presets/music/albums_from_chapters.yaml new file mode 100644 index 00000000..0c629516 --- /dev/null +++ b/src/ytdl_sub/prebuilt_presets/music/albums_from_chapters.yaml @@ -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" \ No newline at end of file diff --git a/src/ytdl_sub/prebuilt_presets/music/albums_from_playlists.yaml b/src/ytdl_sub/prebuilt_presets/music/albums_from_playlists.yaml new file mode 100644 index 00000000..ab0955a0 --- /dev/null +++ b/src/ytdl_sub/prebuilt_presets/music/albums_from_playlists.yaml @@ -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}" \ No newline at end of file diff --git a/src/ytdl_sub/prebuilt_presets/music/music.yaml b/src/ytdl_sub/prebuilt_presets/music/singles.yaml similarity index 70% rename from src/ytdl_sub/prebuilt_presets/music/music.yaml rename to src/ytdl_sub/prebuilt_presets/music/singles.yaml index 7c2f23a3..45fd32fd 100644 --- a/src/ytdl_sub/prebuilt_presets/music/music.yaml +++ b/src/ytdl_sub/prebuilt_presets/music/singles.yaml @@ -1,5 +1,6 @@ presets: + _music_base: output_options: output_directory: "{music_directory}" @@ -71,36 +72,6 @@ presets: 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" @@ -139,25 +110,3 @@ presets: 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}" diff --git a/src/ytdl_sub/prebuilt_presets/plans.txt b/src/ytdl_sub/prebuilt_presets/plans.txt index 001398aa..f4458b95 100644 --- a/src/ytdl_sub/prebuilt_presets/plans.txt +++ b/src/ytdl_sub/prebuilt_presets/plans.txt @@ -1,2 +1,7 @@ Rename presets to "Name Here" Have new name for presets inheret the old ones + +Each preset type, i.e. TV Show by Date should have one (which includes Kodi/Plex/Jellyfin), TV Show Collection separate, music ones separated + +for helpers, Maybe grouped, like 'video quality' for those +bulk_initial_download probably needs its own page \ No newline at end of file