cast/src/Channel/__init__.py

75 lines
1.8 KiB
Python
Raw Normal View History

2021-12-07 09:51:53 +01:00
#!/usr/bin/env python3
from typing import Union
2021-12-22 17:05:53 +01:00
import wx
import threading
2021-12-22 17:05:53 +01:00
2021-12-07 09:51:53 +01:00
from Items import Item
2022-01-08 21:21:34 +01:00
from Utils import get_videos
2021-12-22 17:05:53 +01:00
2021-12-07 09:51:53 +01:00
2021-12-26 15:18:47 +01:00
class Channel:
2021-12-22 17:05:53 +01:00
def __init__(self,
2022-01-08 21:21:34 +01:00
channel_id: str,
2021-12-22 17:05:53 +01:00
provider_name: str,
feed: str,
logo: wx.Bitmap,
name: str) -> None:
self.m_id = channel_id
self.m_logo = logo
2021-12-07 09:51:53 +01:00
self.m_provider_name = provider_name
self.m_name = name
2021-12-07 09:51:53 +01:00
self.m_feed = feed
2022-01-08 21:21:34 +01:00
self.m_items: list[Item] = get_videos(channel_id)
2022-01-09 17:26:07 +01:00
self.m_screen_width = (720/2)
if len(self.m_items) < 1:
self.refresh()
2021-12-22 17:05:53 +01:00
def get_logo_as_bitmap(self) -> wx.Bitmap:
return self.m_logo
2021-12-07 09:51:53 +01:00
def get_feed(self) -> str:
return self.m_feed
def get_items(self) -> Union[list[Item], None]:
return self.m_items
2022-01-09 17:26:07 +01:00
def get_id(self) -> str:
return self.m_id
def get_latest_item(self) -> Item:
return self.m_items[0] # type: ignore
def get_name(self) -> str:
return self.m_name
2021-12-07 09:51:53 +01:00
def get_provider_name(self) -> str:
return self.m_provider_name
def parse_feed(self) -> Union[list[Item], None]:
2022-01-09 17:26:07 +01:00
return None
2021-12-19 14:19:27 +01:00
def refresh(self) -> None:
if self.wait():
return
self.m_thr = threading.Thread(target=self.parse_feed,
args=(),
kwargs={})
self.m_thr.start()
2022-01-09 17:26:07 +01:00
def set_items(self, items: list[Item]) -> None:
self.m_items = items
def set_logo(self, logo: wx.Bitmap) -> None:
self.m_logo = logo
2021-12-19 14:19:27 +01:00
def wait(self) -> bool:
result = False
try:
result = self.m_thr.is_alive()
except AttributeError:
pass
return result