diff options
| author | A Farzat <a@farzat.xyz> | 2025-08-21 09:41:56 +0300 |
|---|---|---|
| committer | A Farzat <a@farzat.xyz> | 2025-08-21 09:41:56 +0300 |
| commit | 69bcc9822c82ee6d726c98deafbdd0a20527a55a (patch) | |
| tree | e51ee23b3da922e1baf7bd57f5c724e928c70d86 /components/videos.py | |
| parent | b141aa29f28c4e4281415b97dac8fe548b128f9b (diff) | |
| download | csca5028-69bcc9822c82ee6d726c98deafbdd0a20527a55a.tar.gz csca5028-69bcc9822c82ee6d726c98deafbdd0a20527a55a.zip | |
Move components to root directory
Some components might be shared with other applications such as the data
analyser later on.
Diffstat (limited to 'components/videos.py')
| -rw-r--r-- | components/videos.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/components/videos.py b/components/videos.py new file mode 100644 index 0000000..5b2d644 --- /dev/null +++ b/components/videos.py @@ -0,0 +1,27 @@ +from typing import NamedTuple, Any, Self +from datetime import datetime + +class VideoTuple(NamedTuple): + id: str + link: str + title: str + author: str + author_channel: str + published: datetime + updated: datetime + thumbnail: str + summary: str + + @classmethod + def from_rss_entry(cls, entry: Any) -> Self: + return cls( + id = entry.id, + link = entry.link, + title = entry.title, + author = entry.author_detail.name, + author_channel = entry.author_detail.href, + published = datetime.fromisoformat(entry.published), + updated = datetime.fromisoformat(entry.updated), + thumbnail = entry.media_thumbnail[0]["url"], + summary = entry.summary, + ) |
