From 46c14bd842654b39a901e177b2fa6a898cfe70e8 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Sat, 17 Sep 2022 09:04:49 -0700 Subject: [PATCH] [BACKEND] uploader variables (#238) --- src/ytdl_sub/entries/base_entry.py | 33 +++++++ src/ytdl_sub/entries/entry_parent.py | 9 ++ .../entries/variables/entry_variables.py | 88 +++++++++++++++++++ src/ytdl_sub/entries/variables/kwargs.py | 9 ++ tests/unit/entries/conftest.py | 11 +++ 5 files changed, 150 insertions(+) diff --git a/src/ytdl_sub/entries/base_entry.py b/src/ytdl_sub/entries/base_entry.py index c79dc60f..305794a3 100644 --- a/src/ytdl_sub/entries/base_entry.py +++ b/src/ytdl_sub/entries/base_entry.py @@ -12,6 +12,9 @@ from yt_dlp.utils import sanitize_filename from ytdl_sub.entries.variables.kwargs import DESCRIPTION from ytdl_sub.entries.variables.kwargs import TITLE +from ytdl_sub.entries.variables.kwargs import UPLOADER +from ytdl_sub.entries.variables.kwargs import UPLOADER_ID +from ytdl_sub.entries.variables.kwargs import UPLOADER_URL from ytdl_sub.entries.variables.kwargs import WEBPAGE_URL # pylint: disable=no-member @@ -96,6 +99,36 @@ class BaseEntryVariables: """ return self.kwargs_get(DESCRIPTION, "") + @property + def uploader_id(self: "BaseEntry") -> str: + """ + Returns + ------- + str + The uploader id if it exists, otherwise return the unique ID. + """ + return self.kwargs_get(UPLOADER_ID, self.uid) + + @property + def uploader(self: "BaseEntry") -> str: + """ + Returns + ------- + str + The uploader if it exists, otherwise return the uploader ID. + """ + return self.kwargs_get(UPLOADER, self.uploader_id) + + @property + def uploader_url(self: "BaseEntry") -> str: + """ + Returns + ------- + str + The uploader url if it exists, otherwise returns the webpage_url. + """ + return self.kwargs_get(UPLOADER_URL, self.webpage_url) + # pylint: enable=no-member diff --git a/src/ytdl_sub/entries/entry_parent.py b/src/ytdl_sub/entries/entry_parent.py index 24b227b0..114b8c61 100644 --- a/src/ytdl_sub/entries/entry_parent.py +++ b/src/ytdl_sub/entries/entry_parent.py @@ -17,6 +17,9 @@ from ytdl_sub.entries.variables.kwargs import PLAYLIST_MAX_UPLOAD_YEAR from ytdl_sub.entries.variables.kwargs import PLAYLIST_MAX_UPLOAD_YEAR_TRUNCATED from ytdl_sub.entries.variables.kwargs import PLAYLIST_TITLE from ytdl_sub.entries.variables.kwargs import PLAYLIST_UID +from ytdl_sub.entries.variables.kwargs import PLAYLIST_UPLOADER +from ytdl_sub.entries.variables.kwargs import PLAYLIST_UPLOADER_ID +from ytdl_sub.entries.variables.kwargs import PLAYLIST_UPLOADER_URL from ytdl_sub.entries.variables.kwargs import PLAYLIST_WEBPAGE_URL from ytdl_sub.entries.variables.kwargs import SOURCE_COUNT from ytdl_sub.entries.variables.kwargs import SOURCE_DESCRIPTION @@ -24,6 +27,9 @@ from ytdl_sub.entries.variables.kwargs import SOURCE_ENTRY from ytdl_sub.entries.variables.kwargs import SOURCE_INDEX from ytdl_sub.entries.variables.kwargs import SOURCE_TITLE from ytdl_sub.entries.variables.kwargs import SOURCE_UID +from ytdl_sub.entries.variables.kwargs import SOURCE_UPLOADER +from ytdl_sub.entries.variables.kwargs import SOURCE_UPLOADER_ID +from ytdl_sub.entries.variables.kwargs import SOURCE_UPLOADER_URL from ytdl_sub.entries.variables.kwargs import SOURCE_WEBPAGE_URL @@ -77,6 +83,9 @@ class EntryParent(BaseEntry): _(SOURCE_WEBPAGE_URL, PLAYLIST_WEBPAGE_URL): self.webpage_url, _(SOURCE_UID, PLAYLIST_UID): self.uid, _(SOURCE_DESCRIPTION, PLAYLIST_DESCRIPTION): self.description, + _(SOURCE_UPLOADER, PLAYLIST_UPLOADER): self.uploader, + _(SOURCE_UPLOADER_ID, PLAYLIST_UPLOADER_ID): self.uploader_id, + _(SOURCE_UPLOADER_URL, PLAYLIST_UPLOADER_URL): self.uploader_url, } def _get_entry_children_variable_list(self, variable_name: str) -> List[str | int]: diff --git a/src/ytdl_sub/entries/variables/entry_variables.py b/src/ytdl_sub/entries/variables/entry_variables.py index e0f94b1e..5257ff48 100644 --- a/src/ytdl_sub/entries/variables/entry_variables.py +++ b/src/ytdl_sub/entries/variables/entry_variables.py @@ -11,11 +11,19 @@ from ytdl_sub.entries.variables.kwargs import PLAYLIST_INDEX from ytdl_sub.entries.variables.kwargs import PLAYLIST_MAX_UPLOAD_YEAR from ytdl_sub.entries.variables.kwargs import PLAYLIST_MAX_UPLOAD_YEAR_TRUNCATED from ytdl_sub.entries.variables.kwargs import PLAYLIST_TITLE +from ytdl_sub.entries.variables.kwargs import PLAYLIST_UID +from ytdl_sub.entries.variables.kwargs import PLAYLIST_UPLOADER +from ytdl_sub.entries.variables.kwargs import PLAYLIST_UPLOADER_ID +from ytdl_sub.entries.variables.kwargs import PLAYLIST_UPLOADER_URL from ytdl_sub.entries.variables.kwargs import PLAYLIST_WEBPAGE_URL from ytdl_sub.entries.variables.kwargs import SOURCE_COUNT from ytdl_sub.entries.variables.kwargs import SOURCE_DESCRIPTION from ytdl_sub.entries.variables.kwargs import SOURCE_INDEX from ytdl_sub.entries.variables.kwargs import SOURCE_TITLE +from ytdl_sub.entries.variables.kwargs import SOURCE_UID +from ytdl_sub.entries.variables.kwargs import SOURCE_UPLOADER +from ytdl_sub.entries.variables.kwargs import SOURCE_UPLOADER_ID +from ytdl_sub.entries.variables.kwargs import SOURCE_UPLOADER_URL from ytdl_sub.entries.variables.kwargs import SOURCE_WEBPAGE_URL # This file contains mixins to a BaseEntry subclass. Ignore pylint's "no kwargs member" suggestion @@ -54,6 +62,16 @@ class EntryVariables(BaseEntryVariables): """ return sanitize_filename(self.source_title) + @property + def source_uid(self: Self) -> str: + """ + Returns + ------- + str + The source unique id if it exists, otherwise returns the playlist unique ID. + """ + return self.kwargs_get(SOURCE_UID, self.playlist_uid) + @property def source_index(self: Self) -> int: """ @@ -107,6 +125,16 @@ class EntryVariables(BaseEntryVariables): """ return self.kwargs_get(SOURCE_DESCRIPTION, self.playlist_description) + @property + def playlist_uid(self: Self) -> str: + """ + Returns + ------- + str + The playlist unique ID if it exists, otherwise return the entry unique ID. + """ + return self.kwargs_get(PLAYLIST_UID, self.uid) + @property def playlist_title(self: Self) -> str: """ @@ -204,6 +232,66 @@ class EntryVariables(BaseEntryVariables): """ return self.kwargs_get(PLAYLIST_MAX_UPLOAD_YEAR_TRUNCATED, self.upload_year_truncated) + @property + def playlist_uploader_id(self: Self) -> str: + """ + Returns + ------- + str + The playlist uploader id if it exists, otherwise returns the playlist unique ID. + """ + return self.kwargs_get(PLAYLIST_UPLOADER_ID, self.playlist_uid) + + @property + def playlist_uploader(self: Self) -> str: + """ + Returns + ------- + str + The playlist uploader if it exists, otherwise return the playlist uploader ID. + """ + return self.kwargs_get(PLAYLIST_UPLOADER, self.playlist_uploader_id) + + @property + def playlist_uploader_url(self: Self) -> str: + """ + Returns + ------- + str + The playlist uploader url if it exists, otherwise returns the playlist webpage_url. + """ + return self.kwargs_get(PLAYLIST_UPLOADER_URL, self.playlist_webpage_url) + + @property + def source_uploader_id(self: Self) -> str: + """ + Returns + ------- + str + The source uploader id if it exists, otherwise returns the source unique ID. + """ + return self.kwargs_get(SOURCE_UPLOADER_ID, self.source_uid) + + @property + def source_uploader(self: Self) -> str: + """ + Returns + ------- + str + The source uploader if it exists, otherwise return the source uploader ID. + """ + return self.kwargs_get(SOURCE_UPLOADER, self.source_uploader_id) + + @property + def source_uploader_url(self: Self) -> str: + """ + Returns + ------- + str + The source uploader url if it exists, otherwise returns the source webpage_url. + """ + return self.kwargs_get(SOURCE_UPLOADER_URL, self.source_webpage_url) + @property def ext(self: Self) -> str: """ diff --git a/src/ytdl_sub/entries/variables/kwargs.py b/src/ytdl_sub/entries/variables/kwargs.py index b4fa836d..a55223fe 100644 --- a/src/ytdl_sub/entries/variables/kwargs.py +++ b/src/ytdl_sub/entries/variables/kwargs.py @@ -23,6 +23,9 @@ SOURCE_TITLE = _("source_title") SOURCE_UID = _("source_uid") SOURCE_DESCRIPTION = _("source_description") SOURCE_WEBPAGE_URL = _("source_webpage_url") +SOURCE_UPLOADER = _("source_uploader") +SOURCE_UPLOADER_ID = _("source_uploader_id") +SOURCE_UPLOADER_URL = _("source_uploader_url") PLAYLIST_ENTRY = _("playlist_entry", backend=True) PLAYLIST_WEBPAGE_URL = _("playlist_webpage_url") @@ -33,8 +36,14 @@ PLAYLIST_MAX_UPLOAD_YEAR_TRUNCATED = _("playlist_max_upload_year_truncated") PLAYLIST_TITLE = _("playlist_title") PLAYLIST_DESCRIPTION = _("playlist_description") PLAYLIST_UID = _("playlist_uid") +PLAYLIST_UPLOADER = _("playlist_uploader") +PLAYLIST_UPLOADER_ID = _("playlist_uploader_id") +PLAYLIST_UPLOADER_URL = _("playlist_uploader_url") EXT = _("ext") TITLE = _("title") DESCRIPTION = _("description") WEBPAGE_URL = _("webpage_url") +UPLOADER = _("uploader") +UPLOADER_ID = _("uploader_id") +UPLOADER_URL = _("uploader_url") diff --git a/tests/unit/entries/conftest.py b/tests/unit/entries/conftest.py index 9339b8f3..b1c0cece 100644 --- a/tests/unit/entries/conftest.py +++ b/tests/unit/entries/conftest.py @@ -66,6 +66,9 @@ def mock_entry_to_dict( "ext": ext, "description": "", "extractor": extractor, + "uploader": "abc123", + "uploader_id": "abc123", + "uploader_url": "https://yourname.here", "upload_date": upload_date, "upload_date_standardized": "2021-01-12", "upload_year": 2021, @@ -95,6 +98,10 @@ def mock_entry_to_dict( "playlist_title_sanitized": "entry {title}", "playlist_description": "", "playlist_webpage_url": "https://yourname.here", + "playlist_uid": "abc123", + "playlist_uploader": "abc123", + "playlist_uploader_id": "abc123", + "playlist_uploader_url": "https://yourname.here", "source_count": 1, "source_description": "", "source_index": 1, @@ -102,6 +109,10 @@ def mock_entry_to_dict( "source_title": "entry {title}", "source_title_sanitized": "entry {title}", "source_webpage_url": "https://yourname.here", + "source_uid": "abc123", + "source_uploader": "abc123", + "source_uploader_id": "abc123", + "source_uploader_url": "https://yourname.here", }