34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
import datetime
|
|
|
|
from gallery.sketch.schedule.api import ScheduleApi
|
|
from gallery.sketch.schedule.model import Channel, Schedule
|
|
from gallery.sketch.source import ApiSource
|
|
|
|
from . import PROVIDER
|
|
from .parser import (
|
|
ChannelData,
|
|
MatchTVChannelParser,
|
|
MatchTVScheduleParser,
|
|
ScheduleData,
|
|
)
|
|
|
|
|
|
class MatchTVApi(ScheduleApi):
|
|
PROVIDER = PROVIDER
|
|
|
|
schedule_parser = MatchTVScheduleParser()
|
|
channel_parser = MatchTVChannelParser()
|
|
|
|
def _build_source(self) -> ApiSource:
|
|
return ApiSource("https://matchtv.ru")
|
|
|
|
async def find_channels(self, query: str) -> list[Channel]:
|
|
endpoint = "api/v1/channels"
|
|
data = await self.source.request(endpoint)
|
|
return self.channel_parser.parse(ChannelData(query, data))
|
|
|
|
async def get_schedule(self, channel_id: str, date: datetime.date) -> Schedule:
|
|
endpoint = f"api/v1/channels/{channel_id}/tv-schedule?date={date:%Y%m%d}"
|
|
data = await self.source.request(endpoint)
|
|
return self.schedule_parser.parse(ScheduleData(date, data))
|