Source code for redditwarp.models.custom_feed
from __future__ import annotations
from typing import Mapping, Any, Sequence, Optional
from datetime import datetime, timezone
from functools import cached_property
from ..core.const import AUTHORIZATION_BASE_URL
[docs]class CustomFeed:
def __init__(self, d: Mapping[str, Any]) -> None:
self.d: Mapping[str, Any] = d
("")
self.owner: str = d['owner']
("""
The curator of the custom feed.
""")
full_id36: str = d['owner_id']
_, _, id36 = full_id36.partition('_')
self.owner_id36: str = id36
("")
self.owner_idn: int = int(id36, 36)
("")
self.owner_id: int = self.owner_idn
("")
self.name: str = d['name']
("")
self.title: str = d['display_name']
("")
self.description: str = d['description_md']
("")
self.description_html: str = d['description_html']
("")
self.subscriber_count: int = d['num_subscribers']
("")
self.icon_url: str = d['icon_url']
("")
self.subreddit_names: Sequence[str] = [o['name'] for o in d['subreddits']]
("")
self.created_ut: int = int(d['created_utc'])
("")
self.created_at: datetime = datetime.fromtimestamp(self.created_ut, timezone.utc)
("")
self.public: bool = d['visibility'] == 'public'
("")
self.nsfw: bool = d['over_18']
("")
self.path: str = d['path']
("")
self.permalink: str = AUTHORIZATION_BASE_URL + d['path']
("")
self.copied_from: Optional[tuple[str, str]] = None
("""
A tuple of (user, feed) if the custom feed is a copy.
""")
copied_from_path = d['copied_from']
if copied_from_path:
user, feed = copied_from_path.strip('/').split('/')[1::2]
self.copied_from = (user, feed)
[docs] class Me:
def __init__(self, outer: CustomFeed) -> None:
d = outer.d
self.can_edit: bool = d['can_edit']
("")
self.favorited: bool = d['is_favorited']
("""
Whether the current user has favourited the custom feed. False if no user context.
""")
self.subscribed: bool = d['is_subscriber']
("""
Whether the current user is following the custom feed. False if no user context.
""")
me: cached_property[Me] = cached_property(Me)