mirror of
https://github.com/nirvana-7777/script.service.ultimate.git
synced 2026-10-08 00:42:45 +02:00
56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
# streaming_providers/providers/_template/epg_manager.py
|
|
"""
|
|
{TODO: Provider name} EPG manager.
|
|
|
|
Subclasses base.managers.EpgManager. See ../_template/README.md.
|
|
|
|
EPG does not participate in the provider's content-id router; get_epg
|
|
goes straight to this manager. EpgManager has handles_channel_id(),
|
|
used internally by get_epg_grid().
|
|
|
|
TIME HANDLING (TODO: state it for your provider): start_time/end_time are
|
|
datetimes. Decide and document whether you require tz-aware UTC values
|
|
and convert provider-local times at the boundary. Mixing naive and aware
|
|
datetimes (or local time zones) is the classic source of off-by-N-hours
|
|
guide bugs. Catchup, by contrast, takes integer epoch seconds.
|
|
"""
|
|
|
|
from datetime import datetime
|
|
from typing import Dict, List, Optional, Tuple
|
|
|
|
from ...base.managers import EpgManager
|
|
from ...base.models.epg_models import EPGEntry, EPGProgramDetails
|
|
from ...base.utils.logger import logger
|
|
|
|
|
|
class YourEpgManager(EpgManager):
|
|
"""EPG for {TODO: provider name}."""
|
|
|
|
@property
|
|
def epg_window(self) -> Tuple[int, int]:
|
|
"""(past_days, future_days). (0, 0) means no EPG support."""
|
|
return 0, 0 # TODO: e.g. (2, 7)
|
|
|
|
def get_epg(
|
|
self,
|
|
channel_id: str,
|
|
start_time: Optional[datetime] = None,
|
|
end_time: Optional[datetime] = None,
|
|
**kw,
|
|
) -> List[EPGEntry]:
|
|
raise NotImplementedError("YourEpgManager.get_epg")
|
|
|
|
# ----- Optional overrides -----
|
|
|
|
# def get_epg_grid(
|
|
# self,
|
|
# channel_ids: List[str],
|
|
# start_time: Optional[datetime] = None,
|
|
# end_time: Optional[datetime] = None,
|
|
# **kw,
|
|
# ) -> Dict[str, List[EPGEntry]]:
|
|
# # Override if the provider has a native batch endpoint.
|
|
# return super().get_epg_grid(
|
|
# channel_ids, start_time=start_time,
|
|
# end_time=end_time, **kw
|
|
# ) |