Spaces:
No application file
No application file
| import os | |
| import json | |
| from pydantic import BaseModel, Field | |
| from typing import Literal, Optional, ClassVar | |
| from slugify import slugify | |
| class Event(BaseModel): | |
| id: str = Field(default_factory=slugify) | |
| game_name: str | |
| description: str | |
| event: str | |
| minute: str | |
| player: str | |
| team: str | |
| def from_row(cls, game_name: str, row_id: int, **kwargs): | |
| return cls( | |
| id=f"{game_name}_{row_id}", | |
| game_name=game_name, | |
| description=kwargs["description"], | |
| event=kwargs["event"], | |
| minute=kwargs["minute"], | |
| player=kwargs["player"], | |
| team=kwargs["team"], | |
| ) | |
| def event_vector_metadata(self): | |
| return { | |
| "type": "event", | |
| "game_name": self.game_name, | |
| "description": self.description, | |
| "event": self.event, | |
| "minute": self.minute, | |
| "player": self.player, | |
| "team": self.team, | |
| } | |
| def get_events(cls): | |
| for filename in os.listdir("/workspace/data/huge-league/games"): | |
| with open(os.path.join("/workspace/data/huge-league/games", filename), 'r') as f: | |
| data = json.load(f) | |
| for row_id, event in enumerate(data): | |
| yield cls.from_row(game_name=filename.split(".")[0], row_id=row_id, **event) | |