feat: Add misandrist insults and big CS2 events matches fetch from HLTV.org
This commit is contained in:
119
models/cs_models.py
Normal file
119
models/cs_models.py
Normal file
@@ -0,0 +1,119 @@
|
||||
import datetime
|
||||
|
||||
class Event:
|
||||
def __init__(self, event_id:int, name:str, logo_url:str = None) -> None:
|
||||
self.__event_id = event_id
|
||||
self.__name = name
|
||||
self.__logo_url = logo_url
|
||||
|
||||
@property
|
||||
def event_id(self):
|
||||
return self.__event_id
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self.__name
|
||||
|
||||
@property
|
||||
def logo_url(self):
|
||||
return self.__logo_url
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
return {
|
||||
'event_id': self.event_id,
|
||||
'name': self.name,
|
||||
'logo_url': self.logo_url
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data: dict) -> 'Event':
|
||||
return cls(data['event_id'], data['name'], data.get('logo_url'))
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f"<Event event_id={self.event_id} name='{self.name}'>"
|
||||
|
||||
|
||||
class Team:
|
||||
def __init__(self, name:str, logo_url:str) -> None:
|
||||
self.__name = name
|
||||
self.__logo_url = logo_url
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self.__name
|
||||
|
||||
@property
|
||||
def logo_url(self):
|
||||
return self.__logo_url
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
return {
|
||||
'name': self.name,
|
||||
'logo_url': self.logo_url
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data: dict) -> 'Team':
|
||||
return cls(data['name'], data['logo_url'])
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f"<Team logo_url='{self.logo_url}' name='{self.name}'>"
|
||||
|
||||
class Match:
|
||||
def __init__(self, url:str, format:str, event:Event, teams:list[Team], date=None):
|
||||
self.__date = date
|
||||
self.__url = url
|
||||
self.__format = format
|
||||
self.__event = event
|
||||
self.__teams = tuple(teams)
|
||||
|
||||
@property
|
||||
def date(self):
|
||||
return self.__date
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
return self.__url
|
||||
|
||||
@property
|
||||
def format(self):
|
||||
return self.__format
|
||||
|
||||
@property
|
||||
def event(self):
|
||||
return self.__event
|
||||
|
||||
@property
|
||||
def teams(self):
|
||||
return self.__teams
|
||||
|
||||
@property
|
||||
def date_iso(self):
|
||||
return self.__date.isoformat()
|
||||
|
||||
@property
|
||||
def teams_names(self):
|
||||
return (self.__teams[0].name, self.__teams[1].name)
|
||||
|
||||
@property
|
||||
def teams_logos(self):
|
||||
return (self.__teams[0].logo_url, self.__teams[1].logo_url)
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
return {
|
||||
'url': self.url,
|
||||
'format': self.format,
|
||||
'event': self.event.to_dict(),
|
||||
'teams': [team.to_dict() for team in self.teams],
|
||||
'date': self.date.isoformat() if self.date else None
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data: dict) -> 'Match':
|
||||
event = Event.from_dict(data['event'])
|
||||
teams = [Team.from_dict(team_data) for team_data in data['teams']]
|
||||
date = datetime.datetime.fromisoformat(data['date']) if data['date'] else None
|
||||
return cls(data['url'], data['format'], event, teams, date)
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f"<Match date='{self.date}' url='{self.url}' format='{self.url}' event={self.event} teams='{','.join(self.teams_names)}'>"
|
||||
Reference in New Issue
Block a user