58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
import logging
|
|
|
|
from dateutil.parser import parse
|
|
from django.conf import settings
|
|
from django.utils import timezone
|
|
from pysportsdb import TheSportsDbClient
|
|
from sports.models import Sport
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
API_KEY = getattr(settings, "THESPORTSDB_API_KEY", "2")
|
|
client = TheSportsDbClient(api_key=API_KEY)
|
|
|
|
|
|
def lookup_event_from_thesportsdb(event_id: str) -> dict:
|
|
|
|
try:
|
|
event = client.lookup_event(event_id)["events"][0]
|
|
except TypeError:
|
|
return {}
|
|
|
|
if not event or type(event) != dict:
|
|
return {}
|
|
sport, _created = Sport.objects.get_or_create(
|
|
thesportsdb_id=event.get("strSport")
|
|
)
|
|
|
|
try:
|
|
start = parse(event.get("strTimestamp"))
|
|
except:
|
|
start = timezone.now()
|
|
|
|
data_dict = {
|
|
"EventId": event_id,
|
|
"ItemType": sport.default_event_type,
|
|
"Name": event.get("strEvent"),
|
|
"AltName": event.get("strEventAlternate"),
|
|
"Start": start,
|
|
"Provider_thesportsdb": event.get("idEvent"),
|
|
"RunTime": sport.default_event_run_time_seconds,
|
|
"Sport": event.get("strSport"),
|
|
"Season": event.get("strSeason"),
|
|
"LeagueId": event.get("idLeague"),
|
|
"LeagueName": event.get("strLeague"),
|
|
"HomeTeamId": event.get("idHomeTeam"),
|
|
"HomeTeamName": event.get("strHomeTeam"),
|
|
"AwayTeamId": event.get("idAwayTeam"),
|
|
"AwayTeamName": event.get("strAwayTeam"),
|
|
"RoundId": event.get("intRound"),
|
|
"PlaybackPosition": None,
|
|
"UtcTimestamp": timezone.now().strftime("%Y-%m-%d %H:%M:%S.%f%z"),
|
|
"IsPaused": False,
|
|
"PlayedToCompletion": False,
|
|
"Source": "Vrobbler",
|
|
}
|
|
|
|
return data_dict
|