Add discovery

This commit is contained in:
Nirvana
2026-03-02 20:27:10 +01:00
parent cfa46e3b2c
commit c984f80a88
2 changed files with 80 additions and 3 deletions
@@ -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)