From 30f0a696504134c17a3c4d7511c29edd6f7a5092 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Thu, 29 Sep 2022 15:20:53 -0700 Subject: [PATCH] [BACKEND] `epoch` variables --- src/ytdl_sub/entries/base_entry.py | 36 ++++++++++++++++++++++-- src/ytdl_sub/entries/variables/kwargs.py | 2 ++ tests/unit/entries/conftest.py | 4 +++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/ytdl_sub/entries/base_entry.py b/src/ytdl_sub/entries/base_entry.py index 639d3528..f315adb7 100644 --- a/src/ytdl_sub/entries/base_entry.py +++ b/src/ytdl_sub/entries/base_entry.py @@ -10,7 +10,7 @@ from typing import final from yt_dlp.utils import sanitize_filename -from ytdl_sub.entries.variables.kwargs import DESCRIPTION +from ytdl_sub.entries.variables.kwargs import DESCRIPTION, EPOCH, EXTRACTOR from ytdl_sub.entries.variables.kwargs import TITLE from ytdl_sub.entries.variables.kwargs import UID from ytdl_sub.entries.variables.kwargs import UPLOADER @@ -18,6 +18,8 @@ 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 +from datetime import datetime + # pylint: disable=no-member @@ -58,7 +60,37 @@ class BaseEntryVariables: str The ytdl extractor name """ - return self.kwargs("extractor") + return self.kwargs(EXTRACTOR) + + @property + def epoch(self: "BaseEntry") -> int: + """ + Returns + ------- + int + The unix epoch of when the metadata was scraped by yt-dlp. + """ + return self.kwargs(EPOCH) + + @property + def epoch_date(self: "BaseEntry") -> str: + """ + Returns + ------- + str + The epoch's date, in YYYYMMDD format. + """ + return datetime.utcfromtimestamp(self.epoch).strftime('%Y%m%d') + + @property + def epoch_hour(self: "BaseEntry") -> str: + """ + Returns + ------- + str + The epoch's hour, padded + """ + return datetime.utcfromtimestamp(self.epoch).strftime('%H') @property def title(self: "BaseEntry") -> str: diff --git a/src/ytdl_sub/entries/variables/kwargs.py b/src/ytdl_sub/entries/variables/kwargs.py index d222606f..80304ca2 100644 --- a/src/ytdl_sub/entries/variables/kwargs.py +++ b/src/ytdl_sub/entries/variables/kwargs.py @@ -41,6 +41,8 @@ PLAYLIST_UPLOADER_ID = _("playlist_uploader_id") PLAYLIST_UPLOADER_URL = _("playlist_uploader_url") UID = _("id") +EXTRACTOR = _("extractor") +EPOCH = _("epoch") CHANNEL = _("channel") EXT = _("ext") TITLE = _("title") diff --git a/tests/unit/entries/conftest.py b/tests/unit/entries/conftest.py index 610ee599..2bc03ad7 100644 --- a/tests/unit/entries/conftest.py +++ b/tests/unit/entries/conftest.py @@ -62,6 +62,9 @@ def mock_entry_to_dict( return { "uid": uid, "uid_sanitized": uid, + "epoch": 1596878400, + "epoch_date": "20200808", + "epoch_hour": "09", "title": "entry {title}", "title_sanitized": "entry {title}", "ext": ext, @@ -126,6 +129,7 @@ def mock_entry_kwargs( ): return { "id": uid, + "epoch": 1596878400, "extractor": extractor, "title": title, "ext": ext,