2021-12-28 17:30:36 +01:00
|
|
|
#/usr/bin/env python3
|
2021-12-28 18:42:11 +01:00
|
|
|
import threading
|
|
|
|
import time
|
2022-01-06 13:14:57 +01:00
|
|
|
from os import path
|
2021-12-28 17:30:36 +01:00
|
|
|
|
|
|
|
import wx
|
|
|
|
|
|
|
|
from Channel import Channel
|
2022-01-06 13:14:57 +01:00
|
|
|
from Utils import get_default_logo
|
2021-12-28 17:30:36 +01:00
|
|
|
|
2022-01-06 13:14:57 +01:00
|
|
|
MYPATH = path.dirname(path.abspath(__file__))
|
2021-12-28 17:30:36 +01:00
|
|
|
|
|
|
|
class ChannelProvider:
|
|
|
|
def __init__(self, providerid: str, channels=list()):
|
|
|
|
self.m_id = providerid
|
2022-01-06 13:14:57 +01:00
|
|
|
self.m_logo: wx.Bitmap = get_default_logo(providerid)
|
2021-12-28 17:30:36 +01:00
|
|
|
self.m_channels: list[Channel] = channels
|
2021-12-28 18:42:11 +01:00
|
|
|
if len(self.m_channels) > 0:
|
|
|
|
self.m_thr = threading.Thread(target=self.make_latest,
|
|
|
|
args=(),
|
|
|
|
kwargs={})
|
|
|
|
self.m_thr.start()
|
2021-12-28 17:30:36 +01:00
|
|
|
|
|
|
|
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:
|
2021-12-28 18:42:11 +01:00
|
|
|
return self.m_id
|
2021-12-28 17:30:36 +01:00
|
|
|
|
2021-12-28 18:42:11 +01:00
|
|
|
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())
|
|
|
|
|
2022-01-06 13:14:57 +01:00
|
|
|
channel = Channel(self.get_name, None, self.m_logo, "Latest videos")
|
2021-12-28 18:42:11 +01:00
|
|
|
channel.set_items(items)
|
|
|
|
self.append_channel(channel)
|