diff --git a/src/ytdl_sub/entries/script/variable_definitions.py b/src/ytdl_sub/entries/script/variable_definitions.py index 177e263e..2b6a4efb 100644 --- a/src/ytdl_sub/entries/script/variable_definitions.py +++ b/src/ytdl_sub/entries/script/variable_definitions.py @@ -448,7 +448,17 @@ class _Variables: ) @property - def playlist_max_upload_year(self) -> MetadataVariable: + def playlist_max_upload_date(self) -> Variable: + """ + Returns + ------- + Max upload_date for all entries in this entry's playlist if it exists, otherwise returns + ``upload_date`` + """ + return Variable("playlist_max_upload_date") + + @property + def playlist_max_upload_year(self) -> Variable: """ Returns ------- @@ -457,9 +467,7 @@ class _Variables: ``upload_year`` """ # override in EntryParent - return MetadataVariable( - variable_name="playlist_max_upload_year", metadata_key="playlist_max_upload_year" - ) + return Variable("playlist_max_upload_year") @property def playlist_max_upload_year_truncated(self) -> Variable: diff --git a/src/ytdl_sub/entries/script/variable_scripts.py b/src/ytdl_sub/entries/script/variable_scripts.py index f2e2da40..503ad757 100644 --- a/src/ytdl_sub/entries/script/variable_scripts.py +++ b/src/ytdl_sub/entries/script/variable_scripts.py @@ -248,11 +248,11 @@ SOURCE_DERIVED_VARIABLES: Dict[Variable, str] = { } SIBLING_VARIABLES: Dict[Variable, str] = { - v.playlist_max_upload_year: f"""{{ + v.playlist_max_upload_date: f"""{{ %array_reduce( %if_passthrough( - %extract_field_from_siblings('{v.upload_year.variable_name}'), - [{v.upload_year.variable_name}] + %extract_field_from_siblings('{v.upload_date.variable_name}'), + [{v.upload_date.variable_name}] ), %max ) @@ -260,7 +260,10 @@ SIBLING_VARIABLES: Dict[Variable, str] = { } SIBLING_DERIVED_VARIABLES: Dict[Variable, str] = { - v.playlist_max_upload_year_truncated: f"{{%int(%slice(%string({v.playlist_max_upload_year.variable_name}), 2))}}", + v.playlist_max_upload_year: date_metadata(v.playlist_max_upload_date, "year"), + v.playlist_max_upload_year_truncated: date_metadata( + v.playlist_max_upload_date, "year_truncated" + ), } _VARIABLE_SCRIPTS: Dict[Variable, str] = {} diff --git a/tests/unit/entries/test_entry.py b/tests/unit/entries/test_entry.py index ff5306ce..2f1c8c47 100644 --- a/tests/unit/entries/test_entry.py +++ b/tests/unit/entries/test_entry.py @@ -7,11 +7,14 @@ from ytdl_sub.entries.script.variable_definitions import VARIABLES as v class TestEntry(object): def test_entry_to_dict(self, mock_entry, mock_entry_to_dict): out = mock_entry.to_dict() + + # Delete non-legacy variables to reuse old to_dict comparision del out[v.entry_metadata.variable_name] del out[v.ytdl_sub_input_url.variable_name] del out[v.playlist_metadata.variable_name] del out[v.source_metadata.variable_name] del out[v.sibling_metadata.variable_name] + del out[v.playlist_max_upload_date.variable_name] assert out == mock_entry_to_dict def test_entry_missing_kwarg(self, mock_entry):