You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cast/ChannelProvider/__init__.py

56 lines
1.7 KiB

#/usr/bin/env python3
import io
import threading
import time
import requests
import wx
from Channel import Channel
from Utils import get_default_log_url, make_bitmap_from_url, write_on_bitmap
class ChannelProvider:
def __init__(self, providerid: str, channels=list()):
self.m_id = providerid
self.m_logo_url = get_default_log_url(providerid)
self.m_logo: wx.Bitmap = make_bitmap_from_url(self.m_logo_url)
self.m_channels: list[Channel] = channels
if len(self.m_channels) > 0:
self.m_thr = threading.Thread(target=self.make_latest,
args=(),
kwargs={})
self.m_thr.start()
def append_channel(self, channel: Channel) -> int:
self.m_channels.append(channel)
return len(self.m_channels)
def get_channels(self) -> list[Channel]:
return self.m_channels
def get_channel_by_index(self, channel_index: int) -> Channel:
return self.m_channels[channel_index]
def get_logo_as_bitmap(self) -> wx.Bitmap:
return self.m_logo
def get_name(self) -> str:
return self.m_id
def get_logo_url(self) -> str:
links: dict = {'ch-svt1'}
def make_latest(self) -> None:
items = list()
for chan in self.m_channels:
while chan.wait():
time.sleep(1)
items.append(chan.get_latest_item())
channel = Channel(self.get_name, None, self.m_logo_url)
channel.set_items(items)
temp = self.get_logo_as_bitmap()
channel.set_logo(write_on_bitmap("Latest videos from all channels",temp))
self.append_channel(channel)