From 0d4a17c3e1e5540a013c58e018b959dc9b1c146d Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Mon, 1 Apr 2024 02:05:28 -0700 Subject: [PATCH] fix sub tests --- .../subscriptions/base_subscription.py | 46 ++++++++++++++++++- .../subscriptions/subscription_download.py | 40 +--------------- tests/e2e/youtube/test_playlist.py | 5 ++ .../youtube/test_playlist_bilateral_p1.txt | 1 + .../youtube/test_playlist_bilateral_p2.txt | 2 + 5 files changed, 55 insertions(+), 39 deletions(-) diff --git a/src/ytdl_sub/subscriptions/base_subscription.py b/src/ytdl_sub/subscriptions/base_subscription.py index 28d590db..6ec7bb9e 100644 --- a/src/ytdl_sub/subscriptions/base_subscription.py +++ b/src/ytdl_sub/subscriptions/base_subscription.py @@ -9,6 +9,7 @@ from ytdl_sub.config.preset import Preset from ytdl_sub.config.preset_options import OutputOptions from ytdl_sub.config.preset_options import YTDLOptions from ytdl_sub.downloaders.url.validators import MultiUrlValidator +from ytdl_sub.entries.variables.override_variables import SubscriptionVariables from ytdl_sub.utils.file_handler import FileHandlerTransactionLog from ytdl_sub.utils.logger import Logger from ytdl_sub.ytdl_additions.enhanced_download_archive import EnhancedDownloadArchive @@ -16,6 +17,24 @@ from ytdl_sub.ytdl_additions.enhanced_download_archive import EnhancedDownloadAr logger = Logger.get("subscription") +def _initialize_download_archive( + output_options: OutputOptions, + overrides: Overrides, + working_directory: str, + output_directory: str, +) -> EnhancedDownloadArchive: + migrated_file_name: Optional[str] = None + if migrated_file_name_option := output_options.migrated_download_archive_name: + migrated_file_name = overrides.apply_formatter(migrated_file_name_option) + + return EnhancedDownloadArchive( + file_name=overrides.apply_formatter(output_options.download_archive_name), + working_directory=working_directory, + output_directory=output_directory, + migrated_file_name=migrated_file_name, + ).reinitialize(dry_run=True) + + class BaseSubscription(ABC): """ Subscription classes are the 'controllers' that perform... @@ -47,7 +66,32 @@ class BaseSubscription(ABC): self.name = name self._config_options = config_options self._preset_options = preset_options - self._enhanced_download_archive: Optional[EnhancedDownloadArchive] = None + + # Add overrides pre-archive + self.overrides.add( + { + SubscriptionVariables.subscription_name(): self.name, + } + ) + + self._enhanced_download_archive: Optional[ + EnhancedDownloadArchive + ] = _initialize_download_archive( + output_options=self.output_options, + overrides=self.overrides, + working_directory=self.working_directory, + output_directory=self.output_directory, + ) + + # Add post-archive variables + self.overrides.add( + { + SubscriptionVariables.subscription_has_download_archive(): f"""{{ + %bool({self.download_archive.num_entries > 0}) + }}""", + } + ) + self._exception: Optional[Exception] = None @property diff --git a/src/ytdl_sub/subscriptions/subscription_download.py b/src/ytdl_sub/subscriptions/subscription_download.py index 382e25ce..b017d005 100644 --- a/src/ytdl_sub/subscriptions/subscription_download.py +++ b/src/ytdl_sub/subscriptions/subscription_download.py @@ -17,7 +17,6 @@ from ytdl_sub.downloaders.source_plugin import SourcePlugin from ytdl_sub.downloaders.url.downloader import MultiUrlDownloader from ytdl_sub.downloaders.ytdl_options_builder import YTDLOptionsBuilder from ytdl_sub.entries.entry import Entry -from ytdl_sub.entries.variables.override_variables import SubscriptionVariables from ytdl_sub.subscriptions.base_subscription import BaseSubscription from ytdl_sub.subscriptions.subscription_ytdl_options import SubscriptionYTDLOptions from ytdl_sub.utils.datetime import to_date_range @@ -26,7 +25,6 @@ from ytdl_sub.utils.file_handler import FileHandler from ytdl_sub.utils.file_handler import FileHandlerTransactionLog from ytdl_sub.utils.file_handler import FileMetadata from ytdl_sub.utils.logger import Logger -from ytdl_sub.ytdl_additions.enhanced_download_archive import EnhancedDownloadArchive logger: logging.Logger = Logger.get() @@ -327,34 +325,6 @@ class SubscriptionDownload(BaseSubscription, ABC): return self.download_archive.get_file_handler_transaction_log() - def _initialize_subscription_overrides_pre_archive(self) -> None: - self.overrides.add( - { - SubscriptionVariables.subscription_name(): self.name, - } - ) - - def _initialize_subscription_overrides_post_archive(self) -> None: - self.overrides.add( - { - SubscriptionVariables.subscription_has_download_archive(): f"""{{ - %bool({self.download_archive.num_entries > 0}) - }}""", - } - ) - - def _initialize_download_archive(self, dry_run: bool) -> None: - migrated_file_name: Optional[str] = None - if migrated_file_name_option := self.output_options.migrated_download_archive_name: - migrated_file_name = self.overrides.apply_formatter(migrated_file_name_option) - - self._enhanced_download_archive = EnhancedDownloadArchive( - file_name=self.overrides.apply_formatter(self.output_options.download_archive_name), - working_directory=self.working_directory, - output_directory=self.output_directory, - migrated_file_name=migrated_file_name, - ).reinitialize(dry_run=dry_run) - def download(self, dry_run: bool = False) -> FileHandlerTransactionLog: """ Performs the subscription download @@ -366,10 +336,7 @@ class SubscriptionDownload(BaseSubscription, ABC): directory. """ self._exception = None - - self._initialize_subscription_overrides_pre_archive() - self._initialize_download_archive(dry_run=dry_run) - self._initialize_subscription_overrides_post_archive() + self.download_archive.reinitialize(dry_run=dry_run) plugins = self._initialize_plugins() @@ -422,10 +389,7 @@ class SubscriptionDownload(BaseSubscription, ABC): If true, do not modify any video/audio files or move anything to the output directory. """ self._exception = None - - self._initialize_subscription_overrides_pre_archive() - self._initialize_download_archive(dry_run=dry_run) - self._initialize_subscription_overrides_post_archive() + self.download_archive.reinitialize(dry_run=dry_run) plugins = self._initialize_plugins() diff --git a/tests/e2e/youtube/test_playlist.py b/tests/e2e/youtube/test_playlist.py index 1223bef6..f15af17d 100644 --- a/tests/e2e/youtube/test_playlist.py +++ b/tests/e2e/youtube/test_playlist.py @@ -62,6 +62,11 @@ def playlist_bilateral_dict(output_directory): "url": "https://www.youtube.com/playlist?list=PLd4Q7G88JqoekF0b30NYQcOTnTiIe9Ali", "tv_show_directory": output_directory, }, + "nfo_tags": { + "tags": { + "subscription_has_download_archive": "{subscription_has_download_archive}", + } + }, } diff --git a/tests/resources/transaction_log_summaries/youtube/test_playlist_bilateral_p1.txt b/tests/resources/transaction_log_summaries/youtube/test_playlist_bilateral_p1.txt index 5da51f85..d6bc9afc 100644 --- a/tests/resources/transaction_log_summaries/youtube/test_playlist_bilateral_p1.txt +++ b/tests/resources/transaction_log_summaries/youtube/test_playlist_bilateral_p1.txt @@ -50,5 +50,6 @@ Files created: Texture Pack I Use: http://www.minecraftforum.net/viewtopic.php?f=25&t=29164 season: 2011 + subscription_has_download_archive: false title: 2011-02-01 - Jesse's Minecraft Server [Trailer - Feb.1] year: 2011 \ No newline at end of file diff --git a/tests/resources/transaction_log_summaries/youtube/test_playlist_bilateral_p2.txt b/tests/resources/transaction_log_summaries/youtube/test_playlist_bilateral_p2.txt index d8a85aba..1a869572 100644 --- a/tests/resources/transaction_log_summaries/youtube/test_playlist_bilateral_p2.txt +++ b/tests/resources/transaction_log_summaries/youtube/test_playlist_bilateral_p2.txt @@ -78,6 +78,7 @@ Files created: I claim no ownership of this song, all the credit goes to Pearl Jam and their producers. season: 2011 + subscription_has_download_archive: true title: 2011-02-27 - Jesse's Minecraft Server [Trailer - Feb.27] year: 2011 s2011.e032101 - Jesse's Minecraft Server [Trailer - Mar.21]-thumb.jpg @@ -157,6 +158,7 @@ Files created: I claim no ownership of this song, all the credit goes to Pearl Jam and their producers. season: 2011 + subscription_has_download_archive: true title: 2011-03-21 - Jesse's Minecraft Server [Trailer - Mar.21] year: 2011