mirror of
https://github.com/nirvana-7777/script.service.ultimate.git
synced 2026-09-28 12:02:26 +02:00
Add discovery
This commit is contained in:
@@ -23,6 +23,15 @@ class Event(Content):
|
||||
start_time: Optional[datetime] = None
|
||||
end_time: Optional[datetime] = None
|
||||
status: EventStatus = EventStatus.SCHEDULED
|
||||
subtitle: Optional[str] = None # secondaryTitle
|
||||
original_name: Optional[str] = None # originalName
|
||||
competition: Optional[str] = None # txCompetition
|
||||
venue: Optional[str] = None # txEvent
|
||||
gender: Optional[str] = None # txGender
|
||||
discipline: Optional[str] = None # txDiscipline
|
||||
age_category: Optional[str] = None # txAge
|
||||
master_event: Optional[str] = None # txMaster-sporting-event
|
||||
channel: Optional[str] = None # primaryChannel
|
||||
|
||||
def __post_init__(self):
|
||||
if self.status == EventStatus.SCHEDULED and self.start_time and self.end_time:
|
||||
|
||||
@@ -674,6 +674,68 @@ class DiscoveryProvider(StreamingProvider):
|
||||
sport = page_included.get(sport_key, {})
|
||||
genre = sport.get("attributes", {}).get("name")
|
||||
|
||||
# Get competition (txCompetition)
|
||||
competition = None
|
||||
competition_refs = relationships.get("txCompetition", {}).get("data", [])
|
||||
if competition_refs:
|
||||
competition_key = f"{competition_refs[0].get('type')}:{competition_refs[0].get('id')}"
|
||||
competition_node = page_included.get(competition_key, {})
|
||||
competition = competition_node.get("attributes", {}).get("name")
|
||||
|
||||
# Get venue/location (txEvent)
|
||||
venue = None
|
||||
venue_refs = relationships.get("txEvent", {}).get("data", [])
|
||||
if venue_refs:
|
||||
venue_key = f"{venue_refs[0].get('type')}:{venue_refs[0].get('id')}"
|
||||
venue_node = page_included.get(venue_key, {})
|
||||
venue = venue_node.get("attributes", {}).get("name")
|
||||
|
||||
# Get gender (txGender)
|
||||
gender = None
|
||||
gender_refs = relationships.get("txGender", {}).get("data", [])
|
||||
if gender_refs:
|
||||
gender_key = f"{gender_refs[0].get('type')}:{gender_refs[0].get('id')}"
|
||||
gender_node = page_included.get(gender_key, {})
|
||||
gender_val = gender_node.get("attributes", {}).get("name")
|
||||
if gender_val and gender_val != ".":
|
||||
gender = gender_val
|
||||
|
||||
# Get discipline (txDiscipline)
|
||||
discipline = None
|
||||
discipline_refs = relationships.get("txDiscipline", {}).get("data", [])
|
||||
if discipline_refs:
|
||||
discipline_key = f"{discipline_refs[0].get('type')}:{discipline_refs[0].get('id')}"
|
||||
discipline_node = page_included.get(discipline_key, {})
|
||||
discipline_val = discipline_node.get("attributes", {}).get("name")
|
||||
if discipline_val and discipline_val != ".":
|
||||
discipline = discipline_val
|
||||
|
||||
# Get age category (txAge)
|
||||
age_category = None
|
||||
age_refs = relationships.get("txAge", {}).get("data", [])
|
||||
if age_refs:
|
||||
age_key = f"{age_refs[0].get('type')}:{age_refs[0].get('id')}"
|
||||
age_node = page_included.get(age_key, {})
|
||||
age_val = age_node.get("attributes", {}).get("name")
|
||||
if age_val and age_val != ".":
|
||||
age_category = age_val
|
||||
|
||||
# Get master sporting event (txMaster-sporting-event)
|
||||
master_event = None
|
||||
master_refs = relationships.get("txMaster-sporting-event", {}).get("data", [])
|
||||
if master_refs:
|
||||
master_key = f"{master_refs[0].get('type')}:{master_refs[0].get('id')}"
|
||||
master_node = page_included.get(master_key, {})
|
||||
master_event = master_node.get("attributes", {}).get("name")
|
||||
|
||||
# Get primary channel
|
||||
channel = None
|
||||
channel_ref = relationships.get("primaryChannel", {}).get("data")
|
||||
if channel_ref:
|
||||
channel_key = f"{channel_ref.get('type')}:{channel_ref.get('id')}"
|
||||
channel_node = page_included.get(channel_key, {})
|
||||
channel = channel_node.get("attributes", {}).get("name")
|
||||
|
||||
# Get audio tracks for language
|
||||
audio_tracks = attributes.get("audioTracks", [])
|
||||
language = "de"
|
||||
@@ -683,9 +745,6 @@ class DiscoveryProvider(StreamingProvider):
|
||||
elif "Englisch" in audio_tracks:
|
||||
language = "en"
|
||||
|
||||
# logger.debug(
|
||||
# f"Creating event: {attributes.get('name')} | material_type={material_type} | status={status} | start={start_dt} | end={end_dt}")
|
||||
|
||||
# Create Event object
|
||||
event = Event(
|
||||
name=attributes.get("name", "Unknown Event"),
|
||||
@@ -704,6 +763,15 @@ class DiscoveryProvider(StreamingProvider):
|
||||
start_time=start_dt,
|
||||
end_time=end_dt,
|
||||
status=status,
|
||||
subtitle=attributes.get("secondaryTitle"),
|
||||
original_name=attributes.get("originalName"),
|
||||
competition=competition,
|
||||
venue=venue,
|
||||
gender=gender,
|
||||
discipline=discipline,
|
||||
age_category=age_category,
|
||||
master_event=master_event,
|
||||
channel=channel,
|
||||
)
|
||||
|
||||
events.append(event)
|
||||
|
||||
Reference in New Issue
Block a user