Skip to content

Commit 8ff59fd

Browse files
authored
Merge pull request #41 from cuappdev/claire/ticketlinks
Added ticket links to game objects
2 parents 5925182 + 8573e2e commit 8ff59fd

6 files changed

Lines changed: 37 additions & 13 deletions

File tree

src/models/game.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class Game:
1717
- `time` The time of the game. (optional)
1818
- `box_score` The scoring summary of the game (optional)
1919
- `score_breakdown` The scoring breakdown of the game (optional)
20+
- 'ticket_link' The ticket link for the game (optional)
2021
"""
2122

2223
def __init__(
@@ -35,6 +36,7 @@ def __init__(
3536
score_breakdown=None,
3637
team=None,
3738
utc_date=None,
39+
ticket_link=None,
3840
):
3941
self.id = id if id else str(ObjectId())
4042
self.city = city
@@ -50,6 +52,7 @@ def __init__(
5052
self.score_breakdown = score_breakdown
5153
self.team = team
5254
self.utc_date = utc_date
55+
self.ticket_link = ticket_link
5356

5457
def to_dict(self):
5558
"""
@@ -70,6 +73,7 @@ def to_dict(self):
7073
"score_breakdown": self.score_breakdown,
7174
"team": self.team,
7275
"utc_date": self.utc_date,
76+
"ticket_link": self.ticket_link,
7377
}
7478

7579
@staticmethod
@@ -92,4 +96,5 @@ def from_dict(data) -> None:
9296
score_breakdown=data.get("score_breakdown"),
9397
team=data.get("team"),
9498
utc_date=data.get("utc_date"),
99+
ticket_link=data.get("ticket_link"),
95100
)

src/mutations/create_game.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class Arguments:
1717
box_score = String(required=False)
1818
score_breakdown = String(required=False)
1919
utc_date = String(required=False)
20+
ticket_link = String(required=False)
2021

2122
game = Field(lambda: GameType)
2223

@@ -34,7 +35,8 @@ def mutate(
3435
time=None,
3536
box_score=None,
3637
score_breakdown=None,
37-
utc_date=None
38+
utc_date=None,
39+
ticket_link=None
3840
):
3941
game_data = {
4042
"city": city,
@@ -48,7 +50,8 @@ def mutate(
4850
"time": time,
4951
"box_score": box_score,
5052
"score_breakdown": score_breakdown,
51-
"utc_date": utc_date
53+
"utc_date": utc_date,
54+
"ticket_link": ticket_link
5255
}
5356
new_game = GameService.create_game(game_data)
5457
return CreateGame(game=new_game)

src/queries/game_query.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class GameQuery(ObjectType):
2020
sport=String(required=True),
2121
state=String(required=True),
2222
time=String(required=True),
23+
ticket_link=String(required=False),
2324
)
2425
games_by_sport = List(GameType, sport=String(required=True))
2526
games_by_gender = List(GameType, gender=String(required=True))
@@ -40,13 +41,13 @@ def resolve_game(self, info, id):
4041
return GameService.get_game_by_id(id)
4142

4243
def resolve_game_by_data(
43-
self, info, city, date, gender, opponent_id, sport, state, time, location=None
44+
self, info, city, date, gender, opponent_id, sport, state, time, location=None, ticket_link=None
4445
):
4546
"""
4647
Resolver for retrieving a game by its data.
4748
"""
4849
return GameService.get_game_by_data(
49-
city, date, gender, location, opponent_id, sport, state, time
50+
city, date, gender, location, opponent_id, sport, state, time, ticket_link
5051
)
5152

5253
def resolve_games_by_sport(self, info, sport):

src/scrapers/games_scraper.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,14 @@ def parse_schedule_page(url, sport, gender):
153153
else:
154154
game_data["box_score"] = None
155155
game_data["score_breakdown"] = None
156-
156+
157+
ticket_link_tag = game_item.select_one(GAME_TICKET_LINK)
158+
ticket_link = (
159+
ticket_link_tag["href"] if ticket_link_tag else None
160+
)
161+
game_data["ticket_link"] = (
162+
ticket_link if ticket_link else None
163+
)
157164
process_game_data(game_data)
158165

159166

@@ -270,7 +277,8 @@ def process_game_data(game_data):
270277
"utc_date": utc_date_str,
271278
"city": city,
272279
"location": location,
273-
"state": state
280+
"state": state,
281+
"ticket_link": game_data["ticket_link"]
274282
}
275283

276284
current_team = TeamService.get_team_by_id(curr_game.opponent_id)
@@ -295,7 +303,8 @@ def process_game_data(game_data):
295303
"time": game_time,
296304
"box_score": game_data["box_score"],
297305
"score_breakdown": game_data["score_breakdown"],
298-
"utc_date": utc_date_str
306+
"utc_date": utc_date_str,
307+
"ticket_link": game_data["ticket_link"]
299308
}
300309

301310
GameService.create_game(game_data)

src/types.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ class GameType(ObjectType):
8888
- `time`: The time of the game. (optional)
8989
- `box_score`: The box score of the game.
9090
- `score_breakdown`: The score breakdown of the game.
91+
- `ticket_link`: The ticket link of the game. (optional)
9192
"""
9293

9394
id = String(required=False)
@@ -104,11 +105,11 @@ class GameType(ObjectType):
104105
score_breakdown = List(List(String), required=False)
105106
team = Field(TeamType, required=False)
106107
utc_date = String(required=False)
107-
108+
ticket_link = String(required=False)
108109
def __init__(
109-
self, id, city, date, gender, location, opponent_id, result, sport, state, time, box_score=None, score_breakdown=None, utc_date=None
110+
self, id, city, date, gender, location, opponent_id, result, sport, state, time, box_score=None, score_breakdown=None, utc_date=None, ticket_link=None
110111
):
111-
self.id = id
112+
self.id = id
112113
self.city = city
113114
self.date = date
114115
self.gender = gender
@@ -121,7 +122,7 @@ def __init__(
121122
self.box_score = box_score
122123
self.score_breakdown = score_breakdown
123124
self.utc_date = utc_date
124-
125+
self.ticket_link = ticket_link
125126
@staticmethod
126127
def team_to_team_type(team_obj):
127128
if team_obj is None:
@@ -138,7 +139,7 @@ def resolve_team(parent, info):
138139
# getting team id - team could be None in older data
139140
team_id = parent.team if parent.team is not None else parent.opponent_id
140141
if team_id and isinstance(team_id, str):
141-
# promise to get team object once the dataloader is ready
142+
# promise to get team object once the dataloader is ready
142143
promise = info.context["team_loader"].load(team_id)
143144
return promise.then(GameType.team_to_team_type)
144145
return None

src/utils/constants.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
# The tag for the box score
4141
BOX_SCORE_TAG = ".sidearm-schedule-game-links-boxscore a"
4242

43+
# The tag for the game ticket link
44+
GAME_TICKET_LINK = ".sidearm-schedule-game-links-tickets a"
45+
4346
# HTML Tags
4447
TAG_TABLE = 'table'
4548
TAG_SECTION = 'section'
@@ -125,4 +128,6 @@
125128
CHANNEL_ID = "UClSQOi2gnn9bi7mcgQrAVKA"
126129

127130
# The maximum number of videos to retrieve
128-
VIDEO_LIMIT = 20
131+
VIDEO_LIMIT = 20
132+
133+

0 commit comments

Comments
 (0)