Files
gallery/gallery/painting/matchtv/api.py
T

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))