From a68d5e4539ecab9e253983250843e91b99f52d10 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Sun, 1 Jun 2025 09:56:48 -0700 Subject: [PATCH] [FEATURE] Emby prebuilt presets (#1232) Gives Emby first class support by creating prebuilt presets for each variant, including - `Emby TV Show by Date` - `Emby TV Show Collection` - `Emby Music Videos` Emby is identical to Jellyfin except in TV Show Collection, where it requires a `season.nfo`. A new plugin `StaticNfoTags` has been created to create those. Huge thanks to @Kamaroth92 for the initial code for this feature! --- README.md | 6 +- docs/source/config_reference/plugins.rst | 76 +++++ docs/source/prebuilt_presets/tv_shows.rst | 16 +- examples/tv_show_subscriptions.yaml | 2 + src/ytdl_sub/config/plugin/plugin_mapping.py | 3 + src/ytdl_sub/plugins/static_nfo_tags.py | 70 +++++ .../prebuilt_presets/music_videos/__init__.py | 1 + .../music_videos/music_videos.yaml | 3 + .../prebuilt_presets/tv_show/__init__.py | 10 +- .../tv_show/tv_show_by_date.yaml | 3 + .../tv_show/tv_show_collection.yaml | 13 + .../download-index/is_yt_1_migrated.json | 22 ++ .../upload-year/upload-month-day/is_yt_1.json | 22 ++ .../s_1/is_yt_1_migrated.json | 24 ++ .../s_2/is_yt_1_migrated.json | 42 +++ .../upload-year-month-day/s_1/is_yt_1.json | 24 ++ .../upload-year-month-day/s_2/is_yt_1.json | 42 +++ .../multi_url_False.json | 19 ++ .../multi_url_True.json | 23 ++ .../unit/music_videos/Emby Music Videos.json | 19 ++ .../upload-year/upload-month-day/is_yt_1.txt | 130 ++++++++ .../is_yt_1_reformatted_to_upload-year.txt | 145 +++++++++ .../upload-year-month-day/s_1/is_yt_1.txt | 138 +++++++++ ...reformatted_to_playlist-index-reversed.txt | 143 +++++++++ .../upload-year-month-day/s_2/is_yt_1.txt | 265 +++++++++++++++++ ...reformatted_to_playlist-index-reversed.txt | 277 ++++++++++++++++++ .../multi_url_False.txt | 77 +++++ .../multi_url_True.txt | 95 ++++++ .../unit/music_videos/Emby Music Videos.txt | 77 +++++ 29 files changed, 1772 insertions(+), 15 deletions(-) create mode 100644 src/ytdl_sub/plugins/static_nfo_tags.py create mode 100644 tests/resources/expected_downloads_summaries/integration/by-date/Emby/upload-year/download-index/is_yt_1_migrated.json create mode 100644 tests/resources/expected_downloads_summaries/integration/by-date/Emby/upload-year/upload-month-day/is_yt_1.json create mode 100644 tests/resources/expected_downloads_summaries/integration/collection/Emby/playlist-index-reversed/s_1/is_yt_1_migrated.json create mode 100644 tests/resources/expected_downloads_summaries/integration/collection/Emby/playlist-index-reversed/s_2/is_yt_1_migrated.json create mode 100644 tests/resources/expected_downloads_summaries/integration/collection/Emby/upload-year-month-day/s_1/is_yt_1.json create mode 100644 tests/resources/expected_downloads_summaries/integration/collection/Emby/upload-year-month-day/s_2/is_yt_1.json create mode 100644 tests/resources/expected_downloads_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_False.json create mode 100644 tests/resources/expected_downloads_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_True.json create mode 100644 tests/resources/expected_downloads_summaries/unit/music_videos/Emby Music Videos.json create mode 100644 tests/resources/transaction_log_summaries/integration/by-date/Emby/upload-year/upload-month-day/is_yt_1.txt create mode 100644 tests/resources/transaction_log_summaries/integration/by-date/Emby/upload-year/upload-month-day/is_yt_1_reformatted_to_upload-year.txt create mode 100644 tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_1/is_yt_1.txt create mode 100644 tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_1/is_yt_1_reformatted_to_playlist-index-reversed.txt create mode 100644 tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_2/is_yt_1.txt create mode 100644 tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_2/is_yt_1_reformatted_to_playlist-index-reversed.txt create mode 100644 tests/resources/transaction_log_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_False.txt create mode 100644 tests/resources/transaction_log_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_True.txt create mode 100644 tests/resources/transaction_log_summaries/unit/music_videos/Emby Music Videos.txt diff --git a/README.md b/README.md index 01fd005c..3ba8ab5f 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ __preset__: cookiefile: "/config/cookie.txt" ################################################################### -# TV Show Presets. Can replace Plex with Plex/Jellyfin/Kodi +# TV Show Presets. Can replace Plex with Plex/Jellyfin/Emby/Kodi Plex TV Show by Date: @@ -106,7 +106,7 @@ Plex TV Show Collection: s02_url: "https://www.youtube.com/playlist?list=PLE62gWlWZk5NWVAVuf0Lm9jdv_-_KXs0W" ################################################################### -# Music Presets. Can replace Plex with Plex/Jellyfin/Kodi +# Music Presets. YouTube Releases: = Jazz: # Sets genre tag to "Jazz" @@ -128,7 +128,7 @@ Bandcamp: "Emily Hopkins": "https://emilyharpist.bandcamp.com/" ################################################################### -# Music Video Presets +# Music Video Presets. Can replace Plex with Plex/Jellyfin/Kodi "Plex Music Videos": = Pop: # Sets genre tag to "Pop" "Rick Astley": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc" diff --git a/docs/source/config_reference/plugins.rst b/docs/source/config_reference/plugins.rst index 0eec34ea..7329b171 100644 --- a/docs/source/config_reference/plugins.rst +++ b/docs/source/config_reference/plugins.rst @@ -828,6 +828,82 @@ used with no modifications. set to the entry's title and ``chapter_index``, ``chapter_count`` are both set to 1. +---------------------------------------------------------------------------------------------------- + +static_nfo_tags +--------------- +Adds an NFO file for every entry, but does not link it to an entry in the download archive. +This is intended to produce ``season.nfo``s in each season directory. Each entry within a +season will overwrite this file with its season name. If the entry gets deleted from ytdl-sub, +this file will remain since it's not linked. + +Usage: + +.. code-block:: yaml + + presets: + my_example_preset: + static_nfo_tags: + # required + nfo_name: "season.nfo" + nfo_root: "season" + tags: + title: "My custom season name!" + # optional + kodi_safe: False + +``enable`` + +:expected type: Optional[OverridesFormatter] +:description: + Can typically be left undefined to always default to enable. For preset convenience, + this field can be set using an override variable to easily toggle whether this plugin + is enabled or not via Boolean. + + +``kodi_safe`` + +:expected type: OverridesBooleanFormatterValidator +:description: + Defaults to False. Kodi does not support > 3-byte unicode characters, which include + emojis and some foreign language characters. Setting this to True will replace those + characters with '□'. + + +``nfo_name`` + +:expected type: EntryFormatter +:description: + The NFO file name. + + +``nfo_root`` + +:expected type: EntryFormatter +:description: + The root tag of the NFO's XML. In the usage above, it would look like + + .. code-block:: xml + + + + + + +``tags`` + +:expected type: NfoTags +:description: + Tags within the nfo_root tag. In the usage above, it would look like + + .. code-block:: xml + + + + My custom season name! + + + ---------------------------------------------------------------------------------------------------- subtitles diff --git a/docs/source/prebuilt_presets/tv_shows.rst b/docs/source/prebuilt_presets/tv_shows.rst index 9cf0f92b..c8afe6d9 100644 --- a/docs/source/prebuilt_presets/tv_shows.rst +++ b/docs/source/prebuilt_presets/tv_shows.rst @@ -9,16 +9,22 @@ Player-Specific Presets The following actions are taken based on the indicated player: +Kodi +-------- +* Everything that the Jellyfin version does +* Enables ``kodi_safe`` NFOs, replacing 4-byte unicode characters that break kodi with ``□`` Jellyfin -------- * Places any season-specific poster art in the main show folder * Generates NFO tags -Kodi --------- -* Everything that the Jellyfin version does -* Enables ``kodi_safe`` NFOs, replacing 4-byte unicode characters that break kodi with ``□`` +Emby +---- +* Places any season-specific poster art in the main show folder +* Generates NFO tags + + * For named seasons, creates a ``season.nfo`` file per season Plex -------- @@ -39,6 +45,7 @@ Must define ``tv_show_directory``. Available presets: * ``Kodi TV Show by Date`` * ``Jellyfin TV Show by Date`` +* ``Emby TV Show by Date`` * ``Plex TV Show by Date`` .. code-block:: yaml @@ -147,6 +154,7 @@ Must define ``tv_show_directory``. Available presets: * ``Kodi TV Show Collection`` * ``Jellyfin TV Show Collection`` +* ``Emby TV Show Collection`` * ``Plex TV Show Collection`` .. code-block:: yaml diff --git a/examples/tv_show_subscriptions.yaml b/examples/tv_show_subscriptions.yaml index eb88e4da..9ec60ad2 100644 --- a/examples/tv_show_subscriptions.yaml +++ b/examples/tv_show_subscriptions.yaml @@ -31,6 +31,7 @@ __preset__: # Choose the player you intend to use by setting the top-level key to be either: # - Plex TV Show by Date: # - Jellyfin TV Show by Date: +# - Emby TV Show by Date: # - Kodi TV Show by Date: Plex TV Show by Date: @@ -64,6 +65,7 @@ Plex TV Show by Date: # Choose the player you intend to use by setting the top-level key to be either: # - Plex TV Show Collection: # - Jellyfin TV Show Collection: +# - Emby TV Show Collection: # - Kodi TV Show Collection: Plex TV Show Collection: = Music: diff --git a/src/ytdl_sub/config/plugin/plugin_mapping.py b/src/ytdl_sub/config/plugin/plugin_mapping.py index 316096b2..b52bb776 100644 --- a/src/ytdl_sub/config/plugin/plugin_mapping.py +++ b/src/ytdl_sub/config/plugin/plugin_mapping.py @@ -24,6 +24,7 @@ from ytdl_sub.plugins.music_tags import MusicTagsPlugin from ytdl_sub.plugins.nfo_tags import NfoTagsPlugin from ytdl_sub.plugins.output_directory_nfo_tags import OutputDirectoryNfoTagsPlugin from ytdl_sub.plugins.split_by_chapters import SplitByChaptersPlugin +from ytdl_sub.plugins.static_nfo_tags import StaticNfoTagsPlugin from ytdl_sub.plugins.subtitles import SubtitlesPlugin from ytdl_sub.plugins.throttle_protection import ThrottleProtectionPlugin from ytdl_sub.plugins.video_tags import VideoTagsPlugin @@ -46,6 +47,7 @@ class PluginMapping: "video_tags": VideoTagsPlugin, "nfo_tags": NfoTagsPlugin, "output_directory_nfo_tags": OutputDirectoryNfoTagsPlugin, + "static_nfo_tags": StaticNfoTagsPlugin, "subtitles": SubtitlesPlugin, "chapters": ChaptersPlugin, "split_by_chapters": SplitByChaptersPlugin, @@ -83,6 +85,7 @@ class PluginMapping: MusicTagsPlugin, VideoTagsPlugin, NfoTagsPlugin, + StaticNfoTagsPlugin, EmbedThumbnailPlugin, ] diff --git a/src/ytdl_sub/plugins/static_nfo_tags.py b/src/ytdl_sub/plugins/static_nfo_tags.py new file mode 100644 index 00000000..e4c1dbea --- /dev/null +++ b/src/ytdl_sub/plugins/static_nfo_tags.py @@ -0,0 +1,70 @@ +from ytdl_sub.entries.entry import Entry +from ytdl_sub.plugins.nfo_tags import NfoTagsValidator +from ytdl_sub.plugins.nfo_tags import SharedNfoTagsOptions +from ytdl_sub.plugins.nfo_tags import SharedNfoTagsPlugin +from ytdl_sub.validators.string_formatter_validators import StringFormatterValidator + + +class StaticNfoTagsOptions(SharedNfoTagsOptions): + """ + Adds an NFO file for every entry, but does not link it to an entry in the download archive. + This is intended to produce ``season.nfo``s in each season directory. Each entry within a + season will overwrite this file with its season name. If the entry gets deleted from ytdl-sub, + this file will remain since it's not linked. + + Usage: + + .. code-block:: yaml + + presets: + my_example_preset: + static_nfo_tags: + # required + nfo_name: "season.nfo" + nfo_root: "season" + tags: + title: "My custom season name!" + # optional + kodi_safe: False + """ + + @property + def nfo_root(self) -> StringFormatterValidator: + """ + :expected type: EntryFormatter + :description: + The root tag of the NFO's XML. In the usage above, it would look like + + .. code-block:: xml + + + + + """ + return self._nfo_root + + @property + def tags(self) -> NfoTagsValidator: + """ + :expected type: NfoTags + :description: + Tags within the nfo_root tag. In the usage above, it would look like + + .. code-block:: xml + + + + My custom season name! + + """ + return self._tags + + +class StaticNfoTagsPlugin(SharedNfoTagsPlugin): + plugin_options_type = StaticNfoTagsOptions + + def post_process_entry(self, entry: Entry) -> None: + """ + Creates the NFO from each entry, but does not link/save it to the entry. + """ + self._create_nfo(entry=entry, save_to_entry=False) diff --git a/src/ytdl_sub/prebuilt_presets/music_videos/__init__.py b/src/ytdl_sub/prebuilt_presets/music_videos/__init__.py index ae128998..76b18443 100644 --- a/src/ytdl_sub/prebuilt_presets/music_videos/__init__.py +++ b/src/ytdl_sub/prebuilt_presets/music_videos/__init__.py @@ -8,6 +8,7 @@ class MusicVideoPresets(PrebuiltPresets): preset_names = { "Kodi Music Videos", "Jellyfin Music Videos", + "Emby Music Videos", "Plex Music Videos", } diff --git a/src/ytdl_sub/prebuilt_presets/music_videos/music_videos.yaml b/src/ytdl_sub/prebuilt_presets/music_videos/music_videos.yaml index dcacd330..4860a2b8 100644 --- a/src/ytdl_sub/prebuilt_presets/music_videos/music_videos.yaml +++ b/src/ytdl_sub/prebuilt_presets/music_videos/music_videos.yaml @@ -7,6 +7,9 @@ presets: - "_music_video_nfo" - "_music_video_tags" + "Emby Music Videos": + preset: "Jellyfin Music Videos" + "Kodi Music Videos": preset: - "_kodi_base" diff --git a/src/ytdl_sub/prebuilt_presets/tv_show/__init__.py b/src/ytdl_sub/prebuilt_presets/tv_show/__init__.py index 841e1713..0e10c448 100644 --- a/src/ytdl_sub/prebuilt_presets/tv_show/__init__.py +++ b/src/ytdl_sub/prebuilt_presets/tv_show/__init__.py @@ -8,6 +8,7 @@ class TvShowByDatePresets(PrebuiltPresets): preset_names = { "Kodi TV Show by Date", "Jellyfin TV Show by Date", + "Emby TV Show by Date", "Plex TV Show by Date", } @@ -16,13 +17,6 @@ class TvShowCollectionPresets(PrebuiltPresets): preset_names = { "Kodi TV Show Collection", "Jellyfin TV Show Collection", + "Emby TV Show Collection", "Plex TV Show Collection", } - - -class TvShowCollectionOldPresets(PrebuiltPresets): - preset_names = { - "kodi_tv_show_collection", - "jellyfin_tv_show_collection", - "plex_tv_show_collection", - } diff --git a/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_by_date.yaml b/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_by_date.yaml index d2056b9d..7f5fe531 100644 --- a/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_by_date.yaml +++ b/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_by_date.yaml @@ -31,6 +31,9 @@ presets: - "plex_tv_show_by_date" - "season_by_year__episode_by_month_day" + "Emby TV Show by Date": + preset: "Jellyfin TV Show by Date" + #################################################################################################### # TV show from one or more sources. Uses {url}'s avatar and banner as poster and fanart diff --git a/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_collection.yaml b/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_collection.yaml index 4d77d0a4..70c0fd9d 100644 --- a/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_collection.yaml +++ b/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_collection.yaml @@ -18,7 +18,20 @@ presets: - "plex_tv_show_collection" - "season_by_collection__episode_by_year_month_day" + "Emby TV Show Collection": + preset: "Jellyfin TV Show Collection" + + # Emby cannot read seasons from tv_show.nfo + # Create explicit season NFOs in each season dir + static_nfo_tags: + nfo_name: "{season_directory_name_sanitized}/season.nfo" + nfo_root: "season" + tags: + title: "{collection_season_name}" + + ################## + # Legacy names kodi_tv_show_collection: preset: diff --git a/tests/resources/expected_downloads_summaries/integration/by-date/Emby/upload-year/download-index/is_yt_1_migrated.json b/tests/resources/expected_downloads_summaries/integration/by-date/Emby/upload-year/download-index/is_yt_1_migrated.json new file mode 100644 index 00000000..c8541f52 --- /dev/null +++ b/tests/resources/expected_downloads_summaries/integration/by-date/Emby/upload-year/download-index/is_yt_1_migrated.json @@ -0,0 +1,22 @@ +{ + "Best Prebuilt TV Show by Date/.ytdl-sub-Best Prebuilt TV Show by Date-download-archive.json": "456d8882fc5e35d74f19b386d1d9a059", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e000001 - Mock Entry 20-3-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e000001 - Mock Entry 20-3.info.json": "INFO_JSON", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e000001 - Mock Entry 20-3.mp4": "1d0714fb3ca4d31a0f88492a06a6142d", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e000001 - Mock Entry 20-3.nfo": "dbe61f2c8ae41041773f713ba5376726", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e000002 - Mock Entry 20-2-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e000002 - Mock Entry 20-2.info.json": "INFO_JSON", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e000002 - Mock Entry 20-2.mp4": "a8f3f8580989f3927606bf6060a64e30", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e000002 - Mock Entry 20-2.nfo": "0f071078c9fa2569bbcb998664d40681", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e000003 - Mock Entry 20-1-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e000003 - Mock Entry 20-1.info.json": "INFO_JSON", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e000003 - Mock Entry 20-1.mp4": "265b1104b382fd157a123842e49fcdfd", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e000003 - Mock Entry 20-1.nfo": "837a61dca11bbe1874ea07cb8ef8a7c9", + "Best Prebuilt TV Show by Date/Season 2021/s2021.e000004 - Mock Entry 21-1-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show by Date/Season 2021/s2021.e000004 - Mock Entry 21-1.info.json": "INFO_JSON", + "Best Prebuilt TV Show by Date/Season 2021/s2021.e000004 - Mock Entry 21-1.mp4": "09fa4599fd48836c6c0da0760c306006", + "Best Prebuilt TV Show by Date/Season 2021/s2021.e000004 - Mock Entry 21-1.nfo": "8ee3845c514a411425b7e9198666b61c", + "Best Prebuilt TV Show by Date/fanart.jpg": "15c9a67b554f415a662fdf7a3340cd61", + "Best Prebuilt TV Show by Date/poster.jpg": "0b0fdbe56bab3e3fdda18730588d742a", + "Best Prebuilt TV Show by Date/tvshow.nfo": "2439ebc18e46a67064956cb940c992e9" +} \ No newline at end of file diff --git a/tests/resources/expected_downloads_summaries/integration/by-date/Emby/upload-year/upload-month-day/is_yt_1.json b/tests/resources/expected_downloads_summaries/integration/by-date/Emby/upload-year/upload-month-day/is_yt_1.json new file mode 100644 index 00000000..33848fb2 --- /dev/null +++ b/tests/resources/expected_downloads_summaries/integration/by-date/Emby/upload-year/upload-month-day/is_yt_1.json @@ -0,0 +1,22 @@ +{ + "Best Prebuilt TV Show by Date/.ytdl-sub-subscription_test-download-archive.json": "e30d83126c2c6981c936ed894a6f159b", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e080701 - Mock Entry 20-3-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e080701 - Mock Entry 20-3.info.json": "INFO_JSON", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e080701 - Mock Entry 20-3.mp4": "c712d7fd5dfdb9bb6c2be99f7c796c6f", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e080701 - Mock Entry 20-3.nfo": "7c0f2a9d38bf617377e474fcb9bf2bc2", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e080801 - Mock Entry 20-2-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e080801 - Mock Entry 20-2.info.json": "INFO_JSON", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e080801 - Mock Entry 20-2.mp4": "7ec7ac1923053c4b5653bbfb8924fdc6", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e080801 - Mock Entry 20-2.nfo": "1f4dec756555ee345cd9d6489b63e070", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e080802 - Mock Entry 20-1-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e080802 - Mock Entry 20-1.info.json": "INFO_JSON", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e080802 - Mock Entry 20-1.mp4": "414c243016f406451c790757949173aa", + "Best Prebuilt TV Show by Date/Season 2020/s2020.e080802 - Mock Entry 20-1.nfo": "f6f704ae3ae0c4055590a147eb425609", + "Best Prebuilt TV Show by Date/Season 2021/s2021.e080801 - Mock Entry 21-1-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show by Date/Season 2021/s2021.e080801 - Mock Entry 21-1.info.json": "INFO_JSON", + "Best Prebuilt TV Show by Date/Season 2021/s2021.e080801 - Mock Entry 21-1.mp4": "e2f858efd08ac82749fd01db65d8341e", + "Best Prebuilt TV Show by Date/Season 2021/s2021.e080801 - Mock Entry 21-1.nfo": "c6e0d368bfe9d70134e5a2ff2d3dccc6", + "Best Prebuilt TV Show by Date/fanart.jpg": "15c9a67b554f415a662fdf7a3340cd61", + "Best Prebuilt TV Show by Date/poster.jpg": "0b0fdbe56bab3e3fdda18730588d742a", + "Best Prebuilt TV Show by Date/tvshow.nfo": "2439ebc18e46a67064956cb940c992e9" +} \ No newline at end of file diff --git a/tests/resources/expected_downloads_summaries/integration/collection/Emby/playlist-index-reversed/s_1/is_yt_1_migrated.json b/tests/resources/expected_downloads_summaries/integration/collection/Emby/playlist-index-reversed/s_1/is_yt_1_migrated.json new file mode 100644 index 00000000..69b5d7c7 --- /dev/null +++ b/tests/resources/expected_downloads_summaries/integration/collection/Emby/playlist-index-reversed/s_1/is_yt_1_migrated.json @@ -0,0 +1,24 @@ +{ + "Best Prebuilt TV Show Collection/.ytdl-sub-Best Prebuilt TV Show Collection-download-archive.json": "809885e6c29bba06215b840516628090", + "Best Prebuilt TV Show Collection/Season 01/s01.e000001 - Mock Entry 20-3-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e000001 - Mock Entry 20-3.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e000001 - Mock Entry 20-3.mp4": "e107a93fa177c5f8594ccc3e023db8e8", + "Best Prebuilt TV Show Collection/Season 01/s01.e000001 - Mock Entry 20-3.nfo": "ddf2763f976aaa79199bddbfd3b66501", + "Best Prebuilt TV Show Collection/Season 01/s01.e000002 - Mock Entry 20-2-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e000002 - Mock Entry 20-2.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e000002 - Mock Entry 20-2.mp4": "2788e6b165908e6d52d7d771859b085e", + "Best Prebuilt TV Show Collection/Season 01/s01.e000002 - Mock Entry 20-2.nfo": "cda58b9d5b7ee05d5e4d5144ebfe0f94", + "Best Prebuilt TV Show Collection/Season 01/s01.e000003 - Mock Entry 20-1-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e000003 - Mock Entry 20-1.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e000003 - Mock Entry 20-1.mp4": "6f0fd7cb3b3c49a8cf7baa6657cb5148", + "Best Prebuilt TV Show Collection/Season 01/s01.e000003 - Mock Entry 20-1.nfo": "4d5775492f2731cb5dc04a84ebcb029d", + "Best Prebuilt TV Show Collection/Season 01/s01.e000004 - Mock Entry 21-1-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e000004 - Mock Entry 21-1.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e000004 - Mock Entry 21-1.mp4": "6a983aa1b5dff65c54bd5f0b78003e07", + "Best Prebuilt TV Show Collection/Season 01/s01.e000004 - Mock Entry 21-1.nfo": "2980b224863465a8b8a465c9d381d1f4", + "Best Prebuilt TV Show Collection/Season 01/season.nfo": "979f2563199124cc419039135ed81841", + "Best Prebuilt TV Show Collection/fanart.jpg": "15c9a67b554f415a662fdf7a3340cd61", + "Best Prebuilt TV Show Collection/poster.jpg": "0b0fdbe56bab3e3fdda18730588d742a", + "Best Prebuilt TV Show Collection/season01-poster.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/tvshow.nfo": "a3f1061135b7aa0c25e5176a271d32f0" +} \ No newline at end of file diff --git a/tests/resources/expected_downloads_summaries/integration/collection/Emby/playlist-index-reversed/s_2/is_yt_1_migrated.json b/tests/resources/expected_downloads_summaries/integration/collection/Emby/playlist-index-reversed/s_2/is_yt_1_migrated.json new file mode 100644 index 00000000..4aa39535 --- /dev/null +++ b/tests/resources/expected_downloads_summaries/integration/collection/Emby/playlist-index-reversed/s_2/is_yt_1_migrated.json @@ -0,0 +1,42 @@ +{ + "Best Prebuilt TV Show Collection/.ytdl-sub-Best Prebuilt TV Show Collection-download-archive.json": "7331c3a7cc0b43cd547b82af4ec35a3f", + "Best Prebuilt TV Show Collection/Season 01/s01.e000001 - Mock Entry 20-7-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e000001 - Mock Entry 20-7.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e000001 - Mock Entry 20-7.mp4": "6390603e1f9642ea573f25179b42f6af", + "Best Prebuilt TV Show Collection/Season 01/s01.e000001 - Mock Entry 20-7.nfo": "42ad110e3f608de3edb94735631d39a7", + "Best Prebuilt TV Show Collection/Season 01/s01.e000002 - Mock Entry 20-6-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e000002 - Mock Entry 20-6.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e000002 - Mock Entry 20-6.mp4": "179e310bd4de1638d84b6da787ff9fa8", + "Best Prebuilt TV Show Collection/Season 01/s01.e000002 - Mock Entry 20-6.nfo": "ea4dee97b5bb9e49cb72f0942f851feb", + "Best Prebuilt TV Show Collection/Season 01/s01.e000003 - Mock Entry 20-5-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e000003 - Mock Entry 20-5.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e000003 - Mock Entry 20-5.mp4": "3c412f47cb87e820138fb8909c672216", + "Best Prebuilt TV Show Collection/Season 01/s01.e000003 - Mock Entry 20-5.nfo": "7f71bd60012d850ece38fa644eeddc5e", + "Best Prebuilt TV Show Collection/Season 01/s01.e000004 - Mock Entry 20-4-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e000004 - Mock Entry 20-4.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e000004 - Mock Entry 20-4.mp4": "8409a144e67c50573bae29bf76431d76", + "Best Prebuilt TV Show Collection/Season 01/s01.e000004 - Mock Entry 20-4.nfo": "c487f013b8d5adc399a793bc803b898f", + "Best Prebuilt TV Show Collection/Season 01/season.nfo": "979f2563199124cc419039135ed81841", + "Best Prebuilt TV Show Collection/Season 02/s02.e000001 - Mock Entry 20-3-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 02/s02.e000001 - Mock Entry 20-3.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 02/s02.e000001 - Mock Entry 20-3.mp4": "e107a93fa177c5f8594ccc3e023db8e8", + "Best Prebuilt TV Show Collection/Season 02/s02.e000001 - Mock Entry 20-3.nfo": "4eedc1c0e99858530e6228001d024766", + "Best Prebuilt TV Show Collection/Season 02/s02.e000002 - Mock Entry 20-2-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 02/s02.e000002 - Mock Entry 20-2.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 02/s02.e000002 - Mock Entry 20-2.mp4": "2788e6b165908e6d52d7d771859b085e", + "Best Prebuilt TV Show Collection/Season 02/s02.e000002 - Mock Entry 20-2.nfo": "cc1541a65508fcbfd9f024042cb6b6ce", + "Best Prebuilt TV Show Collection/Season 02/s02.e000003 - Mock Entry 20-1-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 02/s02.e000003 - Mock Entry 20-1.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 02/s02.e000003 - Mock Entry 20-1.mp4": "6f0fd7cb3b3c49a8cf7baa6657cb5148", + "Best Prebuilt TV Show Collection/Season 02/s02.e000003 - Mock Entry 20-1.nfo": "d5fa573faf1d29c367117917417df62c", + "Best Prebuilt TV Show Collection/Season 02/s02.e000004 - Mock Entry 21-1-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 02/s02.e000004 - Mock Entry 21-1.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 02/s02.e000004 - Mock Entry 21-1.mp4": "6a983aa1b5dff65c54bd5f0b78003e07", + "Best Prebuilt TV Show Collection/Season 02/s02.e000004 - Mock Entry 21-1.nfo": "6c40cd5d13c8d088e57906e809a591f8", + "Best Prebuilt TV Show Collection/Season 02/season.nfo": "9445cf70a039402e01cf7ac607dd7d21", + "Best Prebuilt TV Show Collection/fanart.jpg": "15c9a67b554f415a662fdf7a3340cd61", + "Best Prebuilt TV Show Collection/poster.jpg": "0b0fdbe56bab3e3fdda18730588d742a", + "Best Prebuilt TV Show Collection/season01-poster.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/season02-poster.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/tvshow.nfo": "61943a17325c5188475651ca7c68446d" +} \ No newline at end of file diff --git a/tests/resources/expected_downloads_summaries/integration/collection/Emby/upload-year-month-day/s_1/is_yt_1.json b/tests/resources/expected_downloads_summaries/integration/collection/Emby/upload-year-month-day/s_1/is_yt_1.json new file mode 100644 index 00000000..05e46280 --- /dev/null +++ b/tests/resources/expected_downloads_summaries/integration/collection/Emby/upload-year-month-day/s_1/is_yt_1.json @@ -0,0 +1,24 @@ +{ + "Best Prebuilt TV Show Collection/.ytdl-sub-subscription_test-download-archive.json": "ede1deeba072bae50f7f7039deca0543", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080701 - Mock Entry 20-3-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080701 - Mock Entry 20-3.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080701 - Mock Entry 20-3.mp4": "a874866ad7096eb3bf31c72ea3315354", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080701 - Mock Entry 20-3.nfo": "043c6de15ab09f32e64414d1f4a8a89c", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080801 - Mock Entry 20-2-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080801 - Mock Entry 20-2.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080801 - Mock Entry 20-2.mp4": "fe6fcf8bfc13c0913ad1509703b447f1", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080801 - Mock Entry 20-2.nfo": "4fb018858502fe2c7a0d3dcb89145a8d", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080802 - Mock Entry 20-1-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080802 - Mock Entry 20-1.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080802 - Mock Entry 20-1.mp4": "1d0f1081b402ebea9aeedf75f891c811", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080802 - Mock Entry 20-1.nfo": "6ac2ee3bd87b453d56bd90b42bbf52a0", + "Best Prebuilt TV Show Collection/Season 01/s01.e21080801 - Mock Entry 21-1-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e21080801 - Mock Entry 21-1.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e21080801 - Mock Entry 21-1.mp4": "e5a844cc2c8fe19037afdf0692731414", + "Best Prebuilt TV Show Collection/Season 01/s01.e21080801 - Mock Entry 21-1.nfo": "d54ba1888f0083f8de6f401e399ad379", + "Best Prebuilt TV Show Collection/Season 01/season.nfo": "979f2563199124cc419039135ed81841", + "Best Prebuilt TV Show Collection/fanart.jpg": "15c9a67b554f415a662fdf7a3340cd61", + "Best Prebuilt TV Show Collection/poster.jpg": "0b0fdbe56bab3e3fdda18730588d742a", + "Best Prebuilt TV Show Collection/season01-poster.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/tvshow.nfo": "a3f1061135b7aa0c25e5176a271d32f0" +} \ No newline at end of file diff --git a/tests/resources/expected_downloads_summaries/integration/collection/Emby/upload-year-month-day/s_2/is_yt_1.json b/tests/resources/expected_downloads_summaries/integration/collection/Emby/upload-year-month-day/s_2/is_yt_1.json new file mode 100644 index 00000000..3417dd91 --- /dev/null +++ b/tests/resources/expected_downloads_summaries/integration/collection/Emby/upload-year-month-day/s_2/is_yt_1.json @@ -0,0 +1,42 @@ +{ + "Best Prebuilt TV Show Collection/.ytdl-sub-subscription_test-download-archive.json": "9b9e26ff3d036f450501bf5adb979aeb", + "Best Prebuilt TV Show Collection/Season 01/s01.e20060601 - Mock Entry 20-7-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e20060601 - Mock Entry 20-7.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e20060601 - Mock Entry 20-7.mp4": "fab0f2d0a74558a86b3935c6b962ebe3", + "Best Prebuilt TV Show Collection/Season 01/s01.e20060601 - Mock Entry 20-7.nfo": "9ceac835c0166bf4f7354106379e6d17", + "Best Prebuilt TV Show Collection/Season 01/s01.e20070601 - Mock Entry 20-6-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e20070601 - Mock Entry 20-6.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e20070601 - Mock Entry 20-6.mp4": "9c2569c62ff81f067fe3d91324942c11", + "Best Prebuilt TV Show Collection/Season 01/s01.e20070601 - Mock Entry 20-6.nfo": "35f15e5437cae813095fe2ca3bd2ca18", + "Best Prebuilt TV Show Collection/Season 01/s01.e20070602 - Mock Entry 20-5-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e20070602 - Mock Entry 20-5.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e20070602 - Mock Entry 20-5.mp4": "921e686edbf2a2e11f8d3eba9ef32592", + "Best Prebuilt TV Show Collection/Season 01/s01.e20070602 - Mock Entry 20-5.nfo": "9aa69e4c86bb282ac57b2024ec2fbd34", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080601 - Mock Entry 20-4-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080601 - Mock Entry 20-4.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080601 - Mock Entry 20-4.mp4": "a9fae3eca046637910a6e79aae4a8354", + "Best Prebuilt TV Show Collection/Season 01/s01.e20080601 - Mock Entry 20-4.nfo": "709533b6b8f501196db0d98dfe2b2b16", + "Best Prebuilt TV Show Collection/Season 01/season.nfo": "979f2563199124cc419039135ed81841", + "Best Prebuilt TV Show Collection/Season 02/s02.e20080701 - Mock Entry 20-3-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 02/s02.e20080701 - Mock Entry 20-3.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 02/s02.e20080701 - Mock Entry 20-3.mp4": "a874866ad7096eb3bf31c72ea3315354", + "Best Prebuilt TV Show Collection/Season 02/s02.e20080701 - Mock Entry 20-3.nfo": "05f34cd0e6be4b09ea96134faec892f6", + "Best Prebuilt TV Show Collection/Season 02/s02.e20080801 - Mock Entry 20-2-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 02/s02.e20080801 - Mock Entry 20-2.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 02/s02.e20080801 - Mock Entry 20-2.mp4": "fe6fcf8bfc13c0913ad1509703b447f1", + "Best Prebuilt TV Show Collection/Season 02/s02.e20080801 - Mock Entry 20-2.nfo": "54b4f84daf25626703f7b3a36b0dea49", + "Best Prebuilt TV Show Collection/Season 02/s02.e20080802 - Mock Entry 20-1-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 02/s02.e20080802 - Mock Entry 20-1.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 02/s02.e20080802 - Mock Entry 20-1.mp4": "1d0f1081b402ebea9aeedf75f891c811", + "Best Prebuilt TV Show Collection/Season 02/s02.e20080802 - Mock Entry 20-1.nfo": "3d2644161e57b94cfac5e95732864cc3", + "Best Prebuilt TV Show Collection/Season 02/s02.e21080801 - Mock Entry 21-1-thumb.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/Season 02/s02.e21080801 - Mock Entry 21-1.info.json": "INFO_JSON", + "Best Prebuilt TV Show Collection/Season 02/s02.e21080801 - Mock Entry 21-1.mp4": "e5a844cc2c8fe19037afdf0692731414", + "Best Prebuilt TV Show Collection/Season 02/s02.e21080801 - Mock Entry 21-1.nfo": "fd91adb2089d0fcdbb2e568a10ac880e", + "Best Prebuilt TV Show Collection/Season 02/season.nfo": "9445cf70a039402e01cf7ac607dd7d21", + "Best Prebuilt TV Show Collection/fanart.jpg": "15c9a67b554f415a662fdf7a3340cd61", + "Best Prebuilt TV Show Collection/poster.jpg": "0b0fdbe56bab3e3fdda18730588d742a", + "Best Prebuilt TV Show Collection/season01-poster.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/season02-poster.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "Best Prebuilt TV Show Collection/tvshow.nfo": "61943a17325c5188475651ca7c68446d" +} \ No newline at end of file diff --git a/tests/resources/expected_downloads_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_False.json b/tests/resources/expected_downloads_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_False.json new file mode 100644 index 00000000..c29e6056 --- /dev/null +++ b/tests/resources/expected_downloads_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_False.json @@ -0,0 +1,19 @@ +{ + ".ytdl-sub-subscription_test-download-archive.json": "b98a30417f259daeec888e1a5047b9ed", + "subscription_test/Mock Entry 20-1.info.json": "INFO_JSON", + "subscription_test/Mock Entry 20-1.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "subscription_test/Mock Entry 20-1.mp4": "a164f7c885a335e7ab0c4ccf0ed38ee0", + "subscription_test/Mock Entry 20-1.nfo": "68a6a9e51a12e75d4c68e6e644b409d1", + "subscription_test/Mock Entry 20-2.info.json": "INFO_JSON", + "subscription_test/Mock Entry 20-2.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "subscription_test/Mock Entry 20-2.mp4": "eaa5e5207d1a9a98d9aac10ca55adb1b", + "subscription_test/Mock Entry 20-2.nfo": "1cbe51945c1a7a9ced0eb1222e9d2405", + "subscription_test/Mock Entry 20-3.info.json": "INFO_JSON", + "subscription_test/Mock Entry 20-3.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "subscription_test/Mock Entry 20-3.mp4": "3486772701dbed59f44b5028e96ec0e0", + "subscription_test/Mock Entry 20-3.nfo": "ef07f30d3e882de3f7cb3ad675125352", + "subscription_test/Mock Entry 21-1.info.json": "INFO_JSON", + "subscription_test/Mock Entry 21-1.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "subscription_test/Mock Entry 21-1.mp4": "dedfd5373815d94c5187c5b27a6312f4", + "subscription_test/Mock Entry 21-1.nfo": "dc714fd9f3c3729f74927ad245b50d9d" +} \ No newline at end of file diff --git a/tests/resources/expected_downloads_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_True.json b/tests/resources/expected_downloads_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_True.json new file mode 100644 index 00000000..e970dc97 --- /dev/null +++ b/tests/resources/expected_downloads_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_True.json @@ -0,0 +1,23 @@ +{ + ".ytdl-sub-subscription_test-download-archive.json": "bcb2e8e8139f5bf589e027f841aa9449", + "subscription_test/Custom Title.info.json": "INFO_JSON", + "subscription_test/Custom Title.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "subscription_test/Custom Title.mp4": "59b7b4ed1419fa43a2faff470b764bd2", + "subscription_test/Custom Title.nfo": "996f3993b2ba8a0614bef294492dde65", + "subscription_test/Mock Entry 20-4.info.json": "INFO_JSON", + "subscription_test/Mock Entry 20-4.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "subscription_test/Mock Entry 20-4.mp4": "67a47bc3b9583a1d99040afc2589bfe6", + "subscription_test/Mock Entry 20-4.nfo": "1e7cb1a09c15f155623f6cd796e874ff", + "subscription_test/Mock Entry 20-5.info.json": "INFO_JSON", + "subscription_test/Mock Entry 20-5.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "subscription_test/Mock Entry 20-5.mp4": "ae8d22fe6de7ee75a80508e53d2aaaae", + "subscription_test/Mock Entry 20-5.nfo": "f6100f194ae3c3b24211ff515d97ccdf", + "subscription_test/Mock Entry 20-6.info.json": "INFO_JSON", + "subscription_test/Mock Entry 20-6.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "subscription_test/Mock Entry 20-6.mp4": "0c4c6f12b8e7993e34d9ba1dce605683", + "subscription_test/Mock Entry 20-6.nfo": "f51ae05104f5b98531535e75d623f941", + "subscription_test/Mock Entry 20-7.info.json": "INFO_JSON", + "subscription_test/Mock Entry 20-7.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "subscription_test/Mock Entry 20-7.mp4": "d9fd30536ff349030467e25fa611055e", + "subscription_test/Mock Entry 20-7.nfo": "852c02ea3ab196d808854ee94a9313d2" +} \ No newline at end of file diff --git a/tests/resources/expected_downloads_summaries/unit/music_videos/Emby Music Videos.json b/tests/resources/expected_downloads_summaries/unit/music_videos/Emby Music Videos.json new file mode 100644 index 00000000..c29e6056 --- /dev/null +++ b/tests/resources/expected_downloads_summaries/unit/music_videos/Emby Music Videos.json @@ -0,0 +1,19 @@ +{ + ".ytdl-sub-subscription_test-download-archive.json": "b98a30417f259daeec888e1a5047b9ed", + "subscription_test/Mock Entry 20-1.info.json": "INFO_JSON", + "subscription_test/Mock Entry 20-1.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "subscription_test/Mock Entry 20-1.mp4": "a164f7c885a335e7ab0c4ccf0ed38ee0", + "subscription_test/Mock Entry 20-1.nfo": "68a6a9e51a12e75d4c68e6e644b409d1", + "subscription_test/Mock Entry 20-2.info.json": "INFO_JSON", + "subscription_test/Mock Entry 20-2.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "subscription_test/Mock Entry 20-2.mp4": "eaa5e5207d1a9a98d9aac10ca55adb1b", + "subscription_test/Mock Entry 20-2.nfo": "1cbe51945c1a7a9ced0eb1222e9d2405", + "subscription_test/Mock Entry 20-3.info.json": "INFO_JSON", + "subscription_test/Mock Entry 20-3.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "subscription_test/Mock Entry 20-3.mp4": "3486772701dbed59f44b5028e96ec0e0", + "subscription_test/Mock Entry 20-3.nfo": "ef07f30d3e882de3f7cb3ad675125352", + "subscription_test/Mock Entry 21-1.info.json": "INFO_JSON", + "subscription_test/Mock Entry 21-1.jpg": "e80c508c4818454300133fe1dc1a9cd7", + "subscription_test/Mock Entry 21-1.mp4": "dedfd5373815d94c5187c5b27a6312f4", + "subscription_test/Mock Entry 21-1.nfo": "dc714fd9f3c3729f74927ad245b50d9d" +} \ No newline at end of file diff --git a/tests/resources/transaction_log_summaries/integration/by-date/Emby/upload-year/upload-month-day/is_yt_1.txt b/tests/resources/transaction_log_summaries/integration/by-date/Emby/upload-year/upload-month-day/is_yt_1.txt new file mode 100644 index 00000000..b89836ef --- /dev/null +++ b/tests/resources/transaction_log_summaries/integration/by-date/Emby/upload-year/upload-month-day/is_yt_1.txt @@ -0,0 +1,130 @@ +Files created: +---------------------------------------- +{output_directory} + .ytdl-sub-subscription_test-download-archive.json + fanart.jpg + poster.jpg + tvshow.nfo + NFO tags: + tvshow: + genre: ytdl-sub + mpaa: TV-14 + title: Best Prebuilt TV Show by Date +{output_directory}/Season 2020 + s2020.e080701 - Mock Entry 20-3-thumb.jpg + s2020.e080701 - Mock Entry 20-3.info.json + s2020.e080701 - Mock Entry 20-3.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-07 + episode_id: 80701 + genre: ytdl-sub + show: Best Prebuilt TV Show by Date + synopsis: + https://20-3.com + + The Description + title: 2020-08-07 - Mock Entry 20-3 + year: 2020 + s2020.e080701 - Mock Entry 20-3.nfo + NFO tags: + episodedetails: + aired: 2020-08-07 + episode: 80701 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-3.com + + The Description + season: 2020 + title: 2020-08-07 - Mock Entry 20-3 + year: 2020 + s2020.e080801 - Mock Entry 20-2-thumb.jpg + s2020.e080801 - Mock Entry 20-2.info.json + s2020.e080801 - Mock Entry 20-2.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-08 + episode_id: 80801 + genre: ytdl-sub + show: Best Prebuilt TV Show by Date + synopsis: + https://20-2.com + + The Description + title: 2020-08-08 - Mock Entry 20-2 + year: 2020 + s2020.e080801 - Mock Entry 20-2.nfo + NFO tags: + episodedetails: + aired: 2020-08-08 + episode: 80801 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-2.com + + The Description + season: 2020 + title: 2020-08-08 - Mock Entry 20-2 + year: 2020 + s2020.e080802 - Mock Entry 20-1-thumb.jpg + s2020.e080802 - Mock Entry 20-1.info.json + s2020.e080802 - Mock Entry 20-1.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-08 + episode_id: 80802 + genre: ytdl-sub + show: Best Prebuilt TV Show by Date + synopsis: + https://20-1.com + + The Description + title: 2020-08-08 - Mock Entry 20-1 + year: 2020 + s2020.e080802 - Mock Entry 20-1.nfo + NFO tags: + episodedetails: + aired: 2020-08-08 + episode: 80802 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-1.com + + The Description + season: 2020 + title: 2020-08-08 - Mock Entry 20-1 + year: 2020 +{output_directory}/Season 2021 + s2021.e080801 - Mock Entry 21-1-thumb.jpg + s2021.e080801 - Mock Entry 21-1.info.json + s2021.e080801 - Mock Entry 21-1.mp4 + Video Tags: + contentRating: TV-14 + date: 2021-08-08 + episode_id: 80801 + genre: ytdl-sub + show: Best Prebuilt TV Show by Date + synopsis: + https://21-1.com + + The Description + title: 2021-08-08 - Mock Entry 21-1 + year: 2021 + s2021.e080801 - Mock Entry 21-1.nfo + NFO tags: + episodedetails: + aired: 2021-08-08 + episode: 80801 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://21-1.com + + The Description + season: 2021 + title: 2021-08-08 - Mock Entry 21-1 + year: 2021 \ No newline at end of file diff --git a/tests/resources/transaction_log_summaries/integration/by-date/Emby/upload-year/upload-month-day/is_yt_1_reformatted_to_upload-year.txt b/tests/resources/transaction_log_summaries/integration/by-date/Emby/upload-year/upload-month-day/is_yt_1_reformatted_to_upload-year.txt new file mode 100644 index 00000000..3ff899a3 --- /dev/null +++ b/tests/resources/transaction_log_summaries/integration/by-date/Emby/upload-year/upload-month-day/is_yt_1_reformatted_to_upload-year.txt @@ -0,0 +1,145 @@ +Files created: +---------------------------------------- +{output_directory} + .ytdl-sub-Best Prebuilt TV Show by Date-download-archive.json +{output_directory}/Season 2020 + s2020.e000001 - Mock Entry 20-3-thumb.jpg + s2020.e000001 - Mock Entry 20-3.info.json + s2020.e000001 - Mock Entry 20-3.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-07 + episode_id: 1 + genre: ytdl-sub + show: Best Prebuilt TV Show by Date + synopsis: + https://20-3.com + + The Description + title: 2020-08-07 - Mock Entry 20-3 + year: 2020 + s2020.e000001 - Mock Entry 20-3.nfo + NFO tags: + episodedetails: + aired: 2020-08-07 + episode: 1 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-3.com + + The Description + season: 2020 + title: 2020-08-07 - Mock Entry 20-3 + year: 2020 + s2020.e000002 - Mock Entry 20-2-thumb.jpg + s2020.e000002 - Mock Entry 20-2.info.json + s2020.e000002 - Mock Entry 20-2.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-08 + episode_id: 2 + genre: ytdl-sub + show: Best Prebuilt TV Show by Date + synopsis: + https://20-2.com + + The Description + title: 2020-08-08 - Mock Entry 20-2 + year: 2020 + s2020.e000002 - Mock Entry 20-2.nfo + NFO tags: + episodedetails: + aired: 2020-08-08 + episode: 2 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-2.com + + The Description + season: 2020 + title: 2020-08-08 - Mock Entry 20-2 + year: 2020 + s2020.e000003 - Mock Entry 20-1-thumb.jpg + s2020.e000003 - Mock Entry 20-1.info.json + s2020.e000003 - Mock Entry 20-1.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-08 + episode_id: 3 + genre: ytdl-sub + show: Best Prebuilt TV Show by Date + synopsis: + https://20-1.com + + The Description + title: 2020-08-08 - Mock Entry 20-1 + year: 2020 + s2020.e000003 - Mock Entry 20-1.nfo + NFO tags: + episodedetails: + aired: 2020-08-08 + episode: 3 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-1.com + + The Description + season: 2020 + title: 2020-08-08 - Mock Entry 20-1 + year: 2020 +{output_directory}/Season 2021 + s2021.e000004 - Mock Entry 21-1-thumb.jpg + s2021.e000004 - Mock Entry 21-1.info.json + s2021.e000004 - Mock Entry 21-1.mp4 + Video Tags: + contentRating: TV-14 + date: 2021-08-08 + episode_id: 4 + genre: ytdl-sub + show: Best Prebuilt TV Show by Date + synopsis: + https://21-1.com + + The Description + title: 2021-08-08 - Mock Entry 21-1 + year: 2021 + s2021.e000004 - Mock Entry 21-1.nfo + NFO tags: + episodedetails: + aired: 2021-08-08 + episode: 4 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://21-1.com + + The Description + season: 2021 + title: 2021-08-08 - Mock Entry 21-1 + year: 2021 + +Files removed: +---------------------------------------- +{output_directory} + .ytdl-sub-subscription_test-download-archive.json +{output_directory}/Season 2020 + s2020.e080701 - Mock Entry 20-3-thumb.jpg + s2020.e080701 - Mock Entry 20-3.info.json + s2020.e080701 - Mock Entry 20-3.mp4 + s2020.e080701 - Mock Entry 20-3.nfo + s2020.e080801 - Mock Entry 20-2-thumb.jpg + s2020.e080801 - Mock Entry 20-2.info.json + s2020.e080801 - Mock Entry 20-2.mp4 + s2020.e080801 - Mock Entry 20-2.nfo + s2020.e080802 - Mock Entry 20-1-thumb.jpg + s2020.e080802 - Mock Entry 20-1.info.json + s2020.e080802 - Mock Entry 20-1.mp4 + s2020.e080802 - Mock Entry 20-1.nfo +{output_directory}/Season 2021 + s2021.e080801 - Mock Entry 21-1-thumb.jpg + s2021.e080801 - Mock Entry 21-1.info.json + s2021.e080801 - Mock Entry 21-1.mp4 + s2021.e080801 - Mock Entry 21-1.nfo \ No newline at end of file diff --git a/tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_1/is_yt_1.txt b/tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_1/is_yt_1.txt new file mode 100644 index 00000000..f1082093 --- /dev/null +++ b/tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_1/is_yt_1.txt @@ -0,0 +1,138 @@ +Files created: +---------------------------------------- +{output_directory} + .ytdl-sub-subscription_test-download-archive.json + fanart.jpg + poster.jpg + season01-poster.jpg + tvshow.nfo + NFO tags: + tvshow: + genre: ytdl-sub + mpaa: TV-14 + namedseason: + attributes: + number: 1 + tag: Named Season 1 + title: Best Prebuilt TV Show Collection +{output_directory}/Season 01 + s01.e20080701 - Mock Entry 20-3-thumb.jpg + s01.e20080701 - Mock Entry 20-3.info.json + s01.e20080701 - Mock Entry 20-3.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-07 + episode_id: 20080701 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-3.com + + The Description + title: 2020-08-07 - Mock Entry 20-3 + year: 2020 + s01.e20080701 - Mock Entry 20-3.nfo + NFO tags: + episodedetails: + aired: 2020-08-07 + episode: 20080701 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-3.com + + The Description + season: 1 + title: 2020-08-07 - Mock Entry 20-3 + year: 2020 + s01.e20080801 - Mock Entry 20-2-thumb.jpg + s01.e20080801 - Mock Entry 20-2.info.json + s01.e20080801 - Mock Entry 20-2.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-08 + episode_id: 20080801 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-2.com + + The Description + title: 2020-08-08 - Mock Entry 20-2 + year: 2020 + s01.e20080801 - Mock Entry 20-2.nfo + NFO tags: + episodedetails: + aired: 2020-08-08 + episode: 20080801 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-2.com + + The Description + season: 1 + title: 2020-08-08 - Mock Entry 20-2 + year: 2020 + s01.e20080802 - Mock Entry 20-1-thumb.jpg + s01.e20080802 - Mock Entry 20-1.info.json + s01.e20080802 - Mock Entry 20-1.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-08 + episode_id: 20080802 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-1.com + + The Description + title: 2020-08-08 - Mock Entry 20-1 + year: 2020 + s01.e20080802 - Mock Entry 20-1.nfo + NFO tags: + episodedetails: + aired: 2020-08-08 + episode: 20080802 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-1.com + + The Description + season: 1 + title: 2020-08-08 - Mock Entry 20-1 + year: 2020 + s01.e21080801 - Mock Entry 21-1-thumb.jpg + s01.e21080801 - Mock Entry 21-1.info.json + s01.e21080801 - Mock Entry 21-1.mp4 + Video Tags: + contentRating: TV-14 + date: 2021-08-08 + episode_id: 21080801 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://21-1.com + + The Description + title: 2021-08-08 - Mock Entry 21-1 + year: 2021 + s01.e21080801 - Mock Entry 21-1.nfo + NFO tags: + episodedetails: + aired: 2021-08-08 + episode: 21080801 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://21-1.com + + The Description + season: 1 + title: 2021-08-08 - Mock Entry 21-1 + year: 2021 + season.nfo + NFO tags: + season: + title: Named Season 1 \ No newline at end of file diff --git a/tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_1/is_yt_1_reformatted_to_playlist-index-reversed.txt b/tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_1/is_yt_1_reformatted_to_playlist-index-reversed.txt new file mode 100644 index 00000000..8d6a047e --- /dev/null +++ b/tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_1/is_yt_1_reformatted_to_playlist-index-reversed.txt @@ -0,0 +1,143 @@ +Files created: +---------------------------------------- +{output_directory} + .ytdl-sub-Best Prebuilt TV Show Collection-download-archive.json +{output_directory}/Season 01 + s01.e000001 - Mock Entry 20-3-thumb.jpg + s01.e000001 - Mock Entry 20-3.info.json + s01.e000001 - Mock Entry 20-3.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-07 + episode_id: 1 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-3.com + + The Description + title: 2020-08-07 - Mock Entry 20-3 + year: 2020 + s01.e000001 - Mock Entry 20-3.nfo + NFO tags: + episodedetails: + aired: 2020-08-07 + episode: 1 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-3.com + + The Description + season: 1 + title: 2020-08-07 - Mock Entry 20-3 + year: 2020 + s01.e000002 - Mock Entry 20-2-thumb.jpg + s01.e000002 - Mock Entry 20-2.info.json + s01.e000002 - Mock Entry 20-2.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-08 + episode_id: 2 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-2.com + + The Description + title: 2020-08-08 - Mock Entry 20-2 + year: 2020 + s01.e000002 - Mock Entry 20-2.nfo + NFO tags: + episodedetails: + aired: 2020-08-08 + episode: 2 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-2.com + + The Description + season: 1 + title: 2020-08-08 - Mock Entry 20-2 + year: 2020 + s01.e000003 - Mock Entry 20-1-thumb.jpg + s01.e000003 - Mock Entry 20-1.info.json + s01.e000003 - Mock Entry 20-1.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-08 + episode_id: 3 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-1.com + + The Description + title: 2020-08-08 - Mock Entry 20-1 + year: 2020 + s01.e000003 - Mock Entry 20-1.nfo + NFO tags: + episodedetails: + aired: 2020-08-08 + episode: 3 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-1.com + + The Description + season: 1 + title: 2020-08-08 - Mock Entry 20-1 + year: 2020 + s01.e000004 - Mock Entry 21-1-thumb.jpg + s01.e000004 - Mock Entry 21-1.info.json + s01.e000004 - Mock Entry 21-1.mp4 + Video Tags: + contentRating: TV-14 + date: 2021-08-08 + episode_id: 4 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://21-1.com + + The Description + title: 2021-08-08 - Mock Entry 21-1 + year: 2021 + s01.e000004 - Mock Entry 21-1.nfo + NFO tags: + episodedetails: + aired: 2021-08-08 + episode: 4 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://21-1.com + + The Description + season: 1 + title: 2021-08-08 - Mock Entry 21-1 + year: 2021 + +Files removed: +---------------------------------------- +{output_directory} + .ytdl-sub-subscription_test-download-archive.json +{output_directory}/Season 01 + s01.e20080701 - Mock Entry 20-3-thumb.jpg + s01.e20080701 - Mock Entry 20-3.info.json + s01.e20080701 - Mock Entry 20-3.mp4 + s01.e20080701 - Mock Entry 20-3.nfo + s01.e20080801 - Mock Entry 20-2-thumb.jpg + s01.e20080801 - Mock Entry 20-2.info.json + s01.e20080801 - Mock Entry 20-2.mp4 + s01.e20080801 - Mock Entry 20-2.nfo + s01.e20080802 - Mock Entry 20-1-thumb.jpg + s01.e20080802 - Mock Entry 20-1.info.json + s01.e20080802 - Mock Entry 20-1.mp4 + s01.e20080802 - Mock Entry 20-1.nfo + s01.e21080801 - Mock Entry 21-1-thumb.jpg + s01.e21080801 - Mock Entry 21-1.info.json + s01.e21080801 - Mock Entry 21-1.mp4 + s01.e21080801 - Mock Entry 21-1.nfo \ No newline at end of file diff --git a/tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_2/is_yt_1.txt b/tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_2/is_yt_1.txt new file mode 100644 index 00000000..6633a28b --- /dev/null +++ b/tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_2/is_yt_1.txt @@ -0,0 +1,265 @@ +Files created: +---------------------------------------- +{output_directory} + .ytdl-sub-subscription_test-download-archive.json + fanart.jpg + poster.jpg + season01-poster.jpg + season02-poster.jpg + tvshow.nfo + NFO tags: + tvshow: + genre: ytdl-sub + mpaa: TV-14 + namedseason: + - + attributes: + number: 1 + tag: Named Season 1 + - + attributes: + number: 2 + tag: Named Season 2 + title: Best Prebuilt TV Show Collection +{output_directory}/Season 01 + s01.e20060601 - Mock Entry 20-7-thumb.jpg + s01.e20060601 - Mock Entry 20-7.info.json + s01.e20060601 - Mock Entry 20-7.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-06-06 + episode_id: 20060601 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-7.com + + The Description + title: 2020-06-06 - Mock Entry 20-7 + year: 2020 + s01.e20060601 - Mock Entry 20-7.nfo + NFO tags: + episodedetails: + aired: 2020-06-06 + episode: 20060601 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-7.com + + The Description + season: 1 + title: 2020-06-06 - Mock Entry 20-7 + year: 2020 + s01.e20070601 - Mock Entry 20-6-thumb.jpg + s01.e20070601 - Mock Entry 20-6.info.json + s01.e20070601 - Mock Entry 20-6.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-07-06 + episode_id: 20070601 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-6.com + + The Description + title: 2020-07-06 - Mock Entry 20-6 + year: 2020 + s01.e20070601 - Mock Entry 20-6.nfo + NFO tags: + episodedetails: + aired: 2020-07-06 + episode: 20070601 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-6.com + + The Description + season: 1 + title: 2020-07-06 - Mock Entry 20-6 + year: 2020 + s01.e20070602 - Mock Entry 20-5-thumb.jpg + s01.e20070602 - Mock Entry 20-5.info.json + s01.e20070602 - Mock Entry 20-5.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-07-06 + episode_id: 20070602 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-5.com + + The Description + title: 2020-07-06 - Mock Entry 20-5 + year: 2020 + s01.e20070602 - Mock Entry 20-5.nfo + NFO tags: + episodedetails: + aired: 2020-07-06 + episode: 20070602 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-5.com + + The Description + season: 1 + title: 2020-07-06 - Mock Entry 20-5 + year: 2020 + s01.e20080601 - Mock Entry 20-4-thumb.jpg + s01.e20080601 - Mock Entry 20-4.info.json + s01.e20080601 - Mock Entry 20-4.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-06 + episode_id: 20080601 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-4.com + + The Description + title: 2020-08-06 - Mock Entry 20-4 + year: 2020 + s01.e20080601 - Mock Entry 20-4.nfo + NFO tags: + episodedetails: + aired: 2020-08-06 + episode: 20080601 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-4.com + + The Description + season: 1 + title: 2020-08-06 - Mock Entry 20-4 + year: 2020 + season.nfo + NFO tags: + season: + title: Named Season 1 +{output_directory}/Season 02 + s02.e20080701 - Mock Entry 20-3-thumb.jpg + s02.e20080701 - Mock Entry 20-3.info.json + s02.e20080701 - Mock Entry 20-3.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-07 + episode_id: 20080701 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-3.com + + The Description + title: 2020-08-07 - Mock Entry 20-3 + year: 2020 + s02.e20080701 - Mock Entry 20-3.nfo + NFO tags: + episodedetails: + aired: 2020-08-07 + episode: 20080701 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-3.com + + The Description + season: 2 + title: 2020-08-07 - Mock Entry 20-3 + year: 2020 + s02.e20080801 - Mock Entry 20-2-thumb.jpg + s02.e20080801 - Mock Entry 20-2.info.json + s02.e20080801 - Mock Entry 20-2.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-08 + episode_id: 20080801 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-2.com + + The Description + title: 2020-08-08 - Mock Entry 20-2 + year: 2020 + s02.e20080801 - Mock Entry 20-2.nfo + NFO tags: + episodedetails: + aired: 2020-08-08 + episode: 20080801 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-2.com + + The Description + season: 2 + title: 2020-08-08 - Mock Entry 20-2 + year: 2020 + s02.e20080802 - Mock Entry 20-1-thumb.jpg + s02.e20080802 - Mock Entry 20-1.info.json + s02.e20080802 - Mock Entry 20-1.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-08 + episode_id: 20080802 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-1.com + + The Description + title: 2020-08-08 - Mock Entry 20-1 + year: 2020 + s02.e20080802 - Mock Entry 20-1.nfo + NFO tags: + episodedetails: + aired: 2020-08-08 + episode: 20080802 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-1.com + + The Description + season: 2 + title: 2020-08-08 - Mock Entry 20-1 + year: 2020 + s02.e21080801 - Mock Entry 21-1-thumb.jpg + s02.e21080801 - Mock Entry 21-1.info.json + s02.e21080801 - Mock Entry 21-1.mp4 + Video Tags: + contentRating: TV-14 + date: 2021-08-08 + episode_id: 21080801 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://21-1.com + + The Description + title: 2021-08-08 - Mock Entry 21-1 + year: 2021 + s02.e21080801 - Mock Entry 21-1.nfo + NFO tags: + episodedetails: + aired: 2021-08-08 + episode: 21080801 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://21-1.com + + The Description + season: 2 + title: 2021-08-08 - Mock Entry 21-1 + year: 2021 + season.nfo + NFO tags: + season: + title: Named Season 2 \ No newline at end of file diff --git a/tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_2/is_yt_1_reformatted_to_playlist-index-reversed.txt b/tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_2/is_yt_1_reformatted_to_playlist-index-reversed.txt new file mode 100644 index 00000000..af9f7f22 --- /dev/null +++ b/tests/resources/transaction_log_summaries/integration/collection/Emby/upload-year-month-day/s_2/is_yt_1_reformatted_to_playlist-index-reversed.txt @@ -0,0 +1,277 @@ +Files created: +---------------------------------------- +{output_directory} + .ytdl-sub-Best Prebuilt TV Show Collection-download-archive.json +{output_directory}/Season 01 + s01.e000001 - Mock Entry 20-7-thumb.jpg + s01.e000001 - Mock Entry 20-7.info.json + s01.e000001 - Mock Entry 20-7.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-06-06 + episode_id: 1 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-7.com + + The Description + title: 2020-06-06 - Mock Entry 20-7 + year: 2020 + s01.e000001 - Mock Entry 20-7.nfo + NFO tags: + episodedetails: + aired: 2020-06-06 + episode: 1 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-7.com + + The Description + season: 1 + title: 2020-06-06 - Mock Entry 20-7 + year: 2020 + s01.e000002 - Mock Entry 20-6-thumb.jpg + s01.e000002 - Mock Entry 20-6.info.json + s01.e000002 - Mock Entry 20-6.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-07-06 + episode_id: 2 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-6.com + + The Description + title: 2020-07-06 - Mock Entry 20-6 + year: 2020 + s01.e000002 - Mock Entry 20-6.nfo + NFO tags: + episodedetails: + aired: 2020-07-06 + episode: 2 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-6.com + + The Description + season: 1 + title: 2020-07-06 - Mock Entry 20-6 + year: 2020 + s01.e000003 - Mock Entry 20-5-thumb.jpg + s01.e000003 - Mock Entry 20-5.info.json + s01.e000003 - Mock Entry 20-5.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-07-06 + episode_id: 3 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-5.com + + The Description + title: 2020-07-06 - Mock Entry 20-5 + year: 2020 + s01.e000003 - Mock Entry 20-5.nfo + NFO tags: + episodedetails: + aired: 2020-07-06 + episode: 3 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-5.com + + The Description + season: 1 + title: 2020-07-06 - Mock Entry 20-5 + year: 2020 + s01.e000004 - Mock Entry 20-4-thumb.jpg + s01.e000004 - Mock Entry 20-4.info.json + s01.e000004 - Mock Entry 20-4.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-06 + episode_id: 4 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-4.com + + The Description + title: 2020-08-06 - Mock Entry 20-4 + year: 2020 + s01.e000004 - Mock Entry 20-4.nfo + NFO tags: + episodedetails: + aired: 2020-08-06 + episode: 4 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-4.com + + The Description + season: 1 + title: 2020-08-06 - Mock Entry 20-4 + year: 2020 +{output_directory}/Season 02 + s02.e000001 - Mock Entry 20-3-thumb.jpg + s02.e000001 - Mock Entry 20-3.info.json + s02.e000001 - Mock Entry 20-3.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-07 + episode_id: 1 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-3.com + + The Description + title: 2020-08-07 - Mock Entry 20-3 + year: 2020 + s02.e000001 - Mock Entry 20-3.nfo + NFO tags: + episodedetails: + aired: 2020-08-07 + episode: 1 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-3.com + + The Description + season: 2 + title: 2020-08-07 - Mock Entry 20-3 + year: 2020 + s02.e000002 - Mock Entry 20-2-thumb.jpg + s02.e000002 - Mock Entry 20-2.info.json + s02.e000002 - Mock Entry 20-2.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-08 + episode_id: 2 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-2.com + + The Description + title: 2020-08-08 - Mock Entry 20-2 + year: 2020 + s02.e000002 - Mock Entry 20-2.nfo + NFO tags: + episodedetails: + aired: 2020-08-08 + episode: 2 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-2.com + + The Description + season: 2 + title: 2020-08-08 - Mock Entry 20-2 + year: 2020 + s02.e000003 - Mock Entry 20-1-thumb.jpg + s02.e000003 - Mock Entry 20-1.info.json + s02.e000003 - Mock Entry 20-1.mp4 + Video Tags: + contentRating: TV-14 + date: 2020-08-08 + episode_id: 3 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://20-1.com + + The Description + title: 2020-08-08 - Mock Entry 20-1 + year: 2020 + s02.e000003 - Mock Entry 20-1.nfo + NFO tags: + episodedetails: + aired: 2020-08-08 + episode: 3 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://20-1.com + + The Description + season: 2 + title: 2020-08-08 - Mock Entry 20-1 + year: 2020 + s02.e000004 - Mock Entry 21-1-thumb.jpg + s02.e000004 - Mock Entry 21-1.info.json + s02.e000004 - Mock Entry 21-1.mp4 + Video Tags: + contentRating: TV-14 + date: 2021-08-08 + episode_id: 4 + genre: ytdl-sub + show: Best Prebuilt TV Show Collection + synopsis: + https://21-1.com + + The Description + title: 2021-08-08 - Mock Entry 21-1 + year: 2021 + s02.e000004 - Mock Entry 21-1.nfo + NFO tags: + episodedetails: + aired: 2021-08-08 + episode: 4 + genre: ytdl-sub + mpaa: TV-14 + plot: + https://21-1.com + + The Description + season: 2 + title: 2021-08-08 - Mock Entry 21-1 + year: 2021 + +Files removed: +---------------------------------------- +{output_directory} + .ytdl-sub-subscription_test-download-archive.json +{output_directory}/Season 01 + s01.e20060601 - Mock Entry 20-7-thumb.jpg + s01.e20060601 - Mock Entry 20-7.info.json + s01.e20060601 - Mock Entry 20-7.mp4 + s01.e20060601 - Mock Entry 20-7.nfo + s01.e20070601 - Mock Entry 20-6-thumb.jpg + s01.e20070601 - Mock Entry 20-6.info.json + s01.e20070601 - Mock Entry 20-6.mp4 + s01.e20070601 - Mock Entry 20-6.nfo + s01.e20070602 - Mock Entry 20-5-thumb.jpg + s01.e20070602 - Mock Entry 20-5.info.json + s01.e20070602 - Mock Entry 20-5.mp4 + s01.e20070602 - Mock Entry 20-5.nfo + s01.e20080601 - Mock Entry 20-4-thumb.jpg + s01.e20080601 - Mock Entry 20-4.info.json + s01.e20080601 - Mock Entry 20-4.mp4 + s01.e20080601 - Mock Entry 20-4.nfo +{output_directory}/Season 02 + s02.e20080701 - Mock Entry 20-3-thumb.jpg + s02.e20080701 - Mock Entry 20-3.info.json + s02.e20080701 - Mock Entry 20-3.mp4 + s02.e20080701 - Mock Entry 20-3.nfo + s02.e20080801 - Mock Entry 20-2-thumb.jpg + s02.e20080801 - Mock Entry 20-2.info.json + s02.e20080801 - Mock Entry 20-2.mp4 + s02.e20080801 - Mock Entry 20-2.nfo + s02.e20080802 - Mock Entry 20-1-thumb.jpg + s02.e20080802 - Mock Entry 20-1.info.json + s02.e20080802 - Mock Entry 20-1.mp4 + s02.e20080802 - Mock Entry 20-1.nfo + s02.e21080801 - Mock Entry 21-1-thumb.jpg + s02.e21080801 - Mock Entry 21-1.info.json + s02.e21080801 - Mock Entry 21-1.mp4 + s02.e21080801 - Mock Entry 21-1.nfo \ No newline at end of file diff --git a/tests/resources/transaction_log_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_False.txt b/tests/resources/transaction_log_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_False.txt new file mode 100644 index 00000000..52e2c27d --- /dev/null +++ b/tests/resources/transaction_log_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_False.txt @@ -0,0 +1,77 @@ +Files created: +---------------------------------------- +{output_directory} + .ytdl-sub-subscription_test-download-archive.json +{output_directory}/subscription_test + Mock Entry 20-1.info.json + Mock Entry 20-1.jpg + Mock Entry 20-1.mp4 + Video Tags: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-08-08 + title: Mock Entry 20-1 + year: 2020 + Mock Entry 20-1.nfo + NFO tags: + musicvideo: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-08-08 + title: Mock Entry 20-1 + Mock Entry 20-2.info.json + Mock Entry 20-2.jpg + Mock Entry 20-2.mp4 + Video Tags: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-08-08 + title: Mock Entry 20-2 + year: 2020 + Mock Entry 20-2.nfo + NFO tags: + musicvideo: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-08-08 + title: Mock Entry 20-2 + Mock Entry 20-3.info.json + Mock Entry 20-3.jpg + Mock Entry 20-3.mp4 + Video Tags: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-08-07 + title: Mock Entry 20-3 + year: 2020 + Mock Entry 20-3.nfo + NFO tags: + musicvideo: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-08-07 + title: Mock Entry 20-3 + Mock Entry 21-1.info.json + Mock Entry 21-1.jpg + Mock Entry 21-1.mp4 + Video Tags: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2021-08-08 + title: Mock Entry 21-1 + year: 2021 + Mock Entry 21-1.nfo + NFO tags: + musicvideo: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2021-08-08 + title: Mock Entry 21-1 \ No newline at end of file diff --git a/tests/resources/transaction_log_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_True.txt b/tests/resources/transaction_log_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_True.txt new file mode 100644 index 00000000..49e609e1 --- /dev/null +++ b/tests/resources/transaction_log_summaries/unit/music_videos/Emby Music Videos Categorized/multi_url_True.txt @@ -0,0 +1,95 @@ +Files created: +---------------------------------------- +{output_directory} + .ytdl-sub-subscription_test-download-archive.json +{output_directory}/subscription_test + Custom Title.info.json + Custom Title.jpg + Custom Title.mp4 + Video Tags: + album: Concerts + artist: subscription_test + genre: ytdl-sub + premiered: 2021-08-08 + title: Custom Title + year: 2021 + Custom Title.nfo + NFO tags: + musicvideo: + album: Concerts + artist: subscription_test + genre: ytdl-sub + premiered: 2021-08-08 + title: Custom Title + Mock Entry 20-4.info.json + Mock Entry 20-4.jpg + Mock Entry 20-4.mp4 + Video Tags: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-08-06 + title: Mock Entry 20-4 + year: 2020 + Mock Entry 20-4.nfo + NFO tags: + musicvideo: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-08-06 + title: Mock Entry 20-4 + Mock Entry 20-5.info.json + Mock Entry 20-5.jpg + Mock Entry 20-5.mp4 + Video Tags: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-07-06 + title: Mock Entry 20-5 + year: 2020 + Mock Entry 20-5.nfo + NFO tags: + musicvideo: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-07-06 + title: Mock Entry 20-5 + Mock Entry 20-6.info.json + Mock Entry 20-6.jpg + Mock Entry 20-6.mp4 + Video Tags: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-07-06 + title: Mock Entry 20-6 + year: 2020 + Mock Entry 20-6.nfo + NFO tags: + musicvideo: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-07-06 + title: Mock Entry 20-6 + Mock Entry 20-7.info.json + Mock Entry 20-7.jpg + Mock Entry 20-7.mp4 + Video Tags: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-06-06 + title: Mock Entry 20-7 + year: 2020 + Mock Entry 20-7.nfo + NFO tags: + musicvideo: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-06-06 + title: Mock Entry 20-7 \ No newline at end of file diff --git a/tests/resources/transaction_log_summaries/unit/music_videos/Emby Music Videos.txt b/tests/resources/transaction_log_summaries/unit/music_videos/Emby Music Videos.txt new file mode 100644 index 00000000..52e2c27d --- /dev/null +++ b/tests/resources/transaction_log_summaries/unit/music_videos/Emby Music Videos.txt @@ -0,0 +1,77 @@ +Files created: +---------------------------------------- +{output_directory} + .ytdl-sub-subscription_test-download-archive.json +{output_directory}/subscription_test + Mock Entry 20-1.info.json + Mock Entry 20-1.jpg + Mock Entry 20-1.mp4 + Video Tags: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-08-08 + title: Mock Entry 20-1 + year: 2020 + Mock Entry 20-1.nfo + NFO tags: + musicvideo: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-08-08 + title: Mock Entry 20-1 + Mock Entry 20-2.info.json + Mock Entry 20-2.jpg + Mock Entry 20-2.mp4 + Video Tags: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-08-08 + title: Mock Entry 20-2 + year: 2020 + Mock Entry 20-2.nfo + NFO tags: + musicvideo: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-08-08 + title: Mock Entry 20-2 + Mock Entry 20-3.info.json + Mock Entry 20-3.jpg + Mock Entry 20-3.mp4 + Video Tags: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-08-07 + title: Mock Entry 20-3 + year: 2020 + Mock Entry 20-3.nfo + NFO tags: + musicvideo: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2020-08-07 + title: Mock Entry 20-3 + Mock Entry 21-1.info.json + Mock Entry 21-1.jpg + Mock Entry 21-1.mp4 + Video Tags: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2021-08-08 + title: Mock Entry 21-1 + year: 2021 + Mock Entry 21-1.nfo + NFO tags: + musicvideo: + album: Music Videos + artist: subscription_test + genre: ytdl-sub + premiered: 2021-08-08 + title: Mock Entry 21-1 \ No newline at end of file