Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/models/game.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class Game:
- `time` The time of the game. (optional)
- `box_score` The scoring summary of the game (optional)
- `score_breakdown` The scoring breakdown of the game (optional)
- 'ticket_link' The ticket link for the game (optional)
"""

def __init__(
Expand All @@ -35,6 +36,7 @@ def __init__(
score_breakdown=None,
team=None,
utc_date=None,
ticket_link=None,
):
self.id = id if id else str(ObjectId())
self.city = city
Expand All @@ -50,6 +52,7 @@ def __init__(
self.score_breakdown = score_breakdown
self.team = team
self.utc_date = utc_date
self.ticket_link = ticket_link

def to_dict(self):
"""
Expand All @@ -70,6 +73,7 @@ def to_dict(self):
"score_breakdown": self.score_breakdown,
"team": self.team,
"utc_date": self.utc_date,
"ticket_link": self.ticket_link,
}

@staticmethod
Expand All @@ -92,4 +96,5 @@ def from_dict(data) -> None:
score_breakdown=data.get("score_breakdown"),
team=data.get("team"),
utc_date=data.get("utc_date"),
ticket_link=data.get("ticket_link"),
)
7 changes: 5 additions & 2 deletions src/mutations/create_game.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class Arguments:
box_score = String(required=False)
score_breakdown = String(required=False)
utc_date = String(required=False)
ticket_link = String(required=False)

game = Field(lambda: GameType)

Expand All @@ -34,7 +35,8 @@ def mutate(
time=None,
box_score=None,
score_breakdown=None,
utc_date=None
utc_date=None,
ticket_link=None
):
game_data = {
"city": city,
Expand All @@ -48,7 +50,8 @@ def mutate(
"time": time,
"box_score": box_score,
"score_breakdown": score_breakdown,
"utc_date": utc_date
"utc_date": utc_date,
"ticket_link": ticket_link
}
new_game = GameService.create_game(game_data)
return CreateGame(game=new_game)
5 changes: 3 additions & 2 deletions src/queries/game_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class GameQuery(ObjectType):
sport=String(required=True),
state=String(required=True),
time=String(required=True),
ticket_link=String(required=False),
)
games_by_sport = List(GameType, sport=String(required=True))
games_by_gender = List(GameType, gender=String(required=True))
Expand All @@ -40,13 +41,13 @@ def resolve_game(self, info, id):
return GameService.get_game_by_id(id)

def resolve_game_by_data(
self, info, city, date, gender, opponent_id, sport, state, time, location=None
self, info, city, date, gender, opponent_id, sport, state, time, location=None, ticket_link=None
):
"""
Resolver for retrieving a game by its data.
"""
return GameService.get_game_by_data(
city, date, gender, location, opponent_id, sport, state, time
city, date, gender, location, opponent_id, sport, state, time, ticket_link
)

def resolve_games_by_sport(self, info, sport):
Expand Down
15 changes: 12 additions & 3 deletions src/scrapers/games_scraper.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,14 @@ def parse_schedule_page(url, sport, gender):
else:
game_data["box_score"] = None
game_data["score_breakdown"] = None


ticket_link_tag = game_item.select_one(GAME_TICKET_LINK)
ticket_link = (
ticket_link_tag["href"] if ticket_link_tag else None
)
game_data["ticket_link"] = (
ticket_link if ticket_link else None
)
process_game_data(game_data)


Expand Down Expand Up @@ -270,7 +277,8 @@ def process_game_data(game_data):
"utc_date": utc_date_str,
"city": city,
"location": location,
"state": state
"state": state,
"ticket_link": game_data["ticket_link"]
}

current_team = TeamService.get_team_by_id(curr_game.opponent_id)
Expand All @@ -295,7 +303,8 @@ def process_game_data(game_data):
"time": game_time,
"box_score": game_data["box_score"],
"score_breakdown": game_data["score_breakdown"],
"utc_date": utc_date_str
"utc_date": utc_date_str,
"ticket_link": game_data["ticket_link"]
}

GameService.create_game(game_data)
11 changes: 6 additions & 5 deletions src/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ class GameType(ObjectType):
- `time`: The time of the game. (optional)
- `box_score`: The box score of the game.
- `score_breakdown`: The score breakdown of the game.
- `ticket_link`: The ticket link of the game. (optional)
"""

id = String(required=False)
Expand All @@ -104,11 +105,11 @@ class GameType(ObjectType):
score_breakdown = List(List(String), required=False)
team = Field(TeamType, required=False)
utc_date = String(required=False)

ticket_link = String(required=False)
def __init__(
self, id, city, date, gender, location, opponent_id, result, sport, state, time, box_score=None, score_breakdown=None, utc_date=None
self, id, city, date, gender, location, opponent_id, result, sport, state, time, box_score=None, score_breakdown=None, utc_date=None, ticket_link=None
):
self.id = id
self.id = id
self.city = city
self.date = date
self.gender = gender
Expand All @@ -121,7 +122,7 @@ def __init__(
self.box_score = box_score
self.score_breakdown = score_breakdown
self.utc_date = utc_date

self.ticket_link = ticket_link
@staticmethod
def team_to_team_type(team_obj):
if team_obj is None:
Expand All @@ -138,7 +139,7 @@ def resolve_team(parent, info):
# getting team id - team could be None in older data
team_id = parent.team if parent.team is not None else parent.opponent_id
if team_id and isinstance(team_id, str):
# promise to get team object once the dataloader is ready
# promise to get team object once the dataloader is ready
promise = info.context["team_loader"].load(team_id)
return promise.then(GameType.team_to_team_type)
return None
Expand Down
7 changes: 6 additions & 1 deletion src/utils/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@
# The tag for the box score
BOX_SCORE_TAG = ".sidearm-schedule-game-links-boxscore a"

# The tag for the game ticket link
GAME_TICKET_LINK = ".sidearm-schedule-game-links-tickets a"

# HTML Tags
TAG_TABLE = 'table'
TAG_SECTION = 'section'
Expand Down Expand Up @@ -125,4 +128,6 @@
CHANNEL_ID = "UClSQOi2gnn9bi7mcgQrAVKA"

# The maximum number of videos to retrieve
VIDEO_LIMIT = 20
VIDEO_LIMIT = 20