Liss, Alex (NYC-HUG) commited on
Commit
ef3bbde
·
1 Parent(s): d73640d

regenerating data files

Browse files
data/april_11_multimedia_data_collect/49ers_2024_column_definitions.csv ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ column_name,definition
2
+ game_id,Unique identifier for each game (format: YYYY_WK_HOME_AWAY)
3
+ player_id,Unique identifier for each player
4
+ player_name,Player name (Last.First format)
5
+ posteam,Team the player was on for this play
6
+ position,"Player position (QB, RB, WR, TE, OL, DL, LB, DB, etc.)"
7
+ team,Team the player was on for the season
8
+ passing_yards,Total passing yards
9
+ passing_tds,Total passing touchdowns
10
+ air_yards,Total air yards (distance ball traveled in the air)
11
+ yards_after_catch,Total yards after catch (YAC)
12
+ cpoe,Completion Percentage Over Expected (average)
13
+ qb_epa,Expected Points Added by quarterback
14
+ pass_attempts,Number of pass attempts
15
+ complete_passes,Number of completed passes
16
+ avg_air_yards,Average air yards per pass attempt
17
+ avg_yac,Average yards after catch per reception
18
+ pass_location_left,Number of passes thrown to the left side of the field
19
+ pass_location_middle,Number of passes thrown to the middle of the field
20
+ pass_location_right,Number of passes thrown to the right side of the field
21
+ pass_length_short,Number of short passes (0-9 yards)
22
+ pass_length_medium,Number of medium passes (10-19 yards)
23
+ pass_length_deep,Number of deep passes (20+ yards)
24
+ rushing_yards,Total rushing yards
25
+ rushing_tds,Total rushing touchdowns
26
+ rush_attempts,Number of rush attempts
27
+ first_downs_rush,Number of first downs achieved by rushing
28
+ xyac_mean,Expected Yards After Contact (mean)
29
+ xyac_median,Expected Yards After Contact (median)
30
+ xyac_success_rate,Expected Yards After Contact success rate
31
+ rush_epa,Expected Points Added by rushing plays
32
+ run_location_left,Number of rushes to the left side of the field
33
+ run_location_middle,Number of rushes to the middle of the field
34
+ run_location_right,Number of rushes to the right side of the field
35
+ run_gap_guard,Number of rushes through the guard gap
36
+ run_gap_tackle,Number of rushes through the tackle gap
37
+ run_gap_end,Number of rushes through the end gap
38
+ receiving_yards,Total receiving yards
39
+ receiving_tds,Total receiving touchdowns
40
+ receiving_attempts,Number of pass attempts targeting this player
41
+ first_downs_receiving,Number of first downs achieved by receiving
42
+ receiving_epa,Expected Points Added by receiving plays
43
+ avg_yac_y,Average yards after catch per reception
44
+ avg_air_yards_y,Average air yards per target
45
+ solo_tackles,Number of solo tackles
46
+ assisted_tackles,Number of assisted tackles
47
+ tackles_for_loss,Number of tackles for loss
48
+ qb_hits,Number of quarterback hits
49
+ sacks,Number of sacks (including half sacks)
50
+ interceptions,Number of interceptions
51
+ forced_fumbles,Number of forced fumbles
52
+ fumble_recoveries,Number of fumble recoveries
53
+ pass_defenses,Number of pass defenses (passes defended)
54
+ total_plays,Total number of plays
55
+ third_down_attempts,Number of third down attempts
56
+ third_down_conversions,Number of third down conversions
57
+ fourth_down_attempts,Number of fourth down attempts
58
+ fourth_down_conversions,Number of fourth down conversions
59
+ red_zone_attempts,Number of plays in the red zone (inside 20-yard line)
60
+ red_zone_touchdowns,Number of touchdowns scored in the red zone
61
+ avg_field_position,Average field position (yard line)
62
+ total_epa,Total Expected Points Added
data/april_11_multimedia_data_collect/49ers_2024_enhanced_stats.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/april_11_multimedia_data_collect/game_stats.py ADDED
@@ -0,0 +1,392 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import nfl_data_py as nfl
3
+ import warnings
4
+ warnings.filterwarnings("ignore")
5
+
6
+ # =============================================
7
+ # SECTION 1: BASIC STATS (ORIGINAL CODE)
8
+ # =============================================
9
+
10
+ # 1. Setup
11
+ season = 2024
12
+ team_abbr = "SF"
13
+
14
+ # 2. Load play-by-play data for the 2024 season
15
+ print("Loading play-by-play data...")
16
+ pbp_df = nfl.import_pbp_data(years=[season], downcast=True)
17
+
18
+ # 3. Filter for games involving the San Francisco 49ers
19
+ sf_games = pbp_df[(pbp_df['home_team'] == team_abbr) | (pbp_df['away_team'] == team_abbr)]
20
+
21
+ # 4. Get unique game IDs
22
+ game_ids = sf_games['game_id'].unique()
23
+
24
+ # 5. Create separate dataframes for passing, rushing, and receiving stats
25
+ # Passing stats
26
+ passing_stats = sf_games[sf_games['passer_player_id'].notna()].groupby(['game_id', 'passer_player_id', 'passer_player_name', 'posteam']).agg(
27
+ passing_yards=('passing_yards', 'sum'),
28
+ passing_tds=('pass_touchdown', 'sum'),
29
+ interceptions=('interception', 'sum')
30
+ ).reset_index()
31
+
32
+ # Rushing stats
33
+ rushing_stats = sf_games[sf_games['rusher_player_id'].notna()].groupby(['game_id', 'rusher_player_id', 'rusher_player_name', 'posteam']).agg(
34
+ rushing_yards=('rushing_yards', 'sum'),
35
+ rushing_tds=('rush_touchdown', 'sum')
36
+ ).reset_index()
37
+
38
+ # Receiving stats - we need to identify receiving touchdowns from the touchdown column
39
+ # First, create a flag for receiving touchdowns
40
+ sf_games['receiving_td'] = (sf_games['touchdown'] == 1) & (sf_games['play_type'] == 'pass') & (sf_games['receiver_player_id'].notna())
41
+
42
+ # Then group by receiver
43
+ receiving_stats = sf_games[sf_games['receiver_player_id'].notna()].groupby(['game_id', 'receiver_player_id', 'receiver_player_name', 'posteam']).agg(
44
+ receiving_yards=('receiving_yards', 'sum'),
45
+ receiving_tds=('receiving_td', 'sum')
46
+ ).reset_index()
47
+
48
+ # 6. Rename columns for consistency
49
+ passing_stats = passing_stats.rename(columns={'passer_player_id': 'player_id', 'passer_player_name': 'player_name'})
50
+ rushing_stats = rushing_stats.rename(columns={'rusher_player_id': 'player_id', 'rusher_player_name': 'player_name'})
51
+ receiving_stats = receiving_stats.rename(columns={'receiver_player_id': 'player_id', 'receiver_player_name': 'player_name'})
52
+
53
+ # 7. Merge all stats together
54
+ player_stats = pd.merge(passing_stats, rushing_stats, on=['game_id', 'player_id', 'player_name', 'posteam'], how='outer')
55
+ player_stats = pd.merge(player_stats, receiving_stats, on=['game_id', 'player_id', 'player_name', 'posteam'], how='outer')
56
+
57
+ # 8. Fill NaN values with 0
58
+ player_stats = player_stats.fillna(0)
59
+
60
+ # 9. Filter to only San Francisco 49ers players (on offense)
61
+ player_stats = player_stats[player_stats['posteam'] == team_abbr]
62
+
63
+ # 10. Load roster info to enrich with player position
64
+ roster_df = nfl.import_seasonal_rosters(years=[season])
65
+ player_stats = player_stats.merge(
66
+ roster_df[['player_id', 'position', 'team']],
67
+ on='player_id',
68
+ how='left'
69
+ )
70
+
71
+ # 11. Export to CSV
72
+ output_path = "49ers_2024_player_box_scores.csv"
73
+ player_stats.to_csv(output_path, index=False)
74
+ print(f"Saved basic player box scores to {output_path}")
75
+
76
+ # 12. Preview results
77
+ print("\nBasic Stats Preview:")
78
+ print(player_stats.head())
79
+
80
+ # =============================================
81
+ # SECTION 2: ENHANCED STATS
82
+ # =============================================
83
+
84
+ print("\nGenerating enhanced statistics...")
85
+
86
+ # 1. Advanced Passing Stats
87
+ advanced_passing = sf_games[sf_games['passer_player_id'].notna()].groupby(['game_id', 'passer_player_id', 'passer_player_name', 'posteam']).agg(
88
+ air_yards=('air_yards', 'sum'),
89
+ yards_after_catch=('yards_after_catch', 'sum'),
90
+ cpoe=('cpoe', 'mean'), # Completion Percentage Over Expected
91
+ qb_epa=('qb_epa', 'sum'), # QB-specific EPA
92
+ pass_attempts=('pass_attempt', 'sum'),
93
+ complete_passes=('complete_pass', 'sum'),
94
+ avg_air_yards=('air_yards', 'mean'),
95
+ avg_yac=('yards_after_catch', 'mean'),
96
+ pass_location_left=('pass_location', lambda x: (x == 'left').sum()),
97
+ pass_location_middle=('pass_location', lambda x: (x == 'middle').sum()),
98
+ pass_location_right=('pass_location', lambda x: (x == 'right').sum()),
99
+ pass_length_short=('pass_length', lambda x: (x == 'short').sum()),
100
+ pass_length_medium=('pass_length', lambda x: (x == 'medium').sum()),
101
+ pass_length_deep=('pass_length', lambda x: (x == 'deep').sum())
102
+ ).reset_index()
103
+
104
+ # 2. Advanced Rushing/Receiving Stats
105
+ advanced_rushing = sf_games[sf_games['rusher_player_id'].notna()].groupby(['game_id', 'rusher_player_id', 'rusher_player_name', 'posteam']).agg(
106
+ rush_attempts=('rush_attempt', 'sum'),
107
+ first_downs_rush=('first_down_rush', 'sum'),
108
+ xyac_mean=('xyac_mean_yardage', 'mean'),
109
+ xyac_median=('xyac_median_yardage', 'mean'),
110
+ xyac_success_rate=('xyac_success', 'mean'),
111
+ rush_epa=('epa', 'sum'),
112
+ run_location_left=('run_location', lambda x: (x == 'left').sum()),
113
+ run_location_middle=('run_location', lambda x: (x == 'middle').sum()),
114
+ run_location_right=('run_location', lambda x: (x == 'right').sum()),
115
+ run_gap_guard=('run_gap', lambda x: (x == 'guard').sum()),
116
+ run_gap_tackle=('run_gap', lambda x: (x == 'tackle').sum()),
117
+ run_gap_end=('run_gap', lambda x: (x == 'end').sum())
118
+ ).reset_index()
119
+
120
+ advanced_receiving = sf_games[sf_games['receiver_player_id'].notna()].groupby(['game_id', 'receiver_player_id', 'receiver_player_name', 'posteam']).agg(
121
+ receiving_attempts=('pass_attempt', 'sum'),
122
+ first_downs_receiving=('first_down_pass', 'sum'),
123
+ receiving_epa=('epa', 'sum'),
124
+ avg_yac=('yards_after_catch', 'mean'),
125
+ avg_air_yards=('air_yards', 'mean')
126
+ ).reset_index()
127
+
128
+ # 3. Defensive Player Stats
129
+ # Create a list of all defensive player IDs from various defensive play columns
130
+ defensive_player_ids = []
131
+ defensive_player_names = []
132
+
133
+ # Solo tackles
134
+ solo_tackle_players = sf_games[sf_games['solo_tackle_1_player_id'].notna()][['game_id', 'solo_tackle_1_player_id', 'solo_tackle_1_player_name', 'defteam']]
135
+ solo_tackle_players = solo_tackle_players.rename(columns={'solo_tackle_1_player_id': 'player_id', 'solo_tackle_1_player_name': 'player_name'})
136
+ defensive_player_ids.append(solo_tackle_players)
137
+
138
+ # Assisted tackles
139
+ assist_tackle_players = sf_games[sf_games['assist_tackle_1_player_id'].notna()][['game_id', 'assist_tackle_1_player_id', 'assist_tackle_1_player_name', 'defteam']]
140
+ assist_tackle_players = assist_tackle_players.rename(columns={'assist_tackle_1_player_id': 'player_id', 'assist_tackle_1_player_name': 'player_name'})
141
+ defensive_player_ids.append(assist_tackle_players)
142
+
143
+ # Sacks
144
+ sack_players = sf_games[sf_games['sack_player_id'].notna()][['game_id', 'sack_player_id', 'sack_player_name', 'defteam']]
145
+ sack_players = sack_players.rename(columns={'sack_player_id': 'player_id', 'sack_player_name': 'player_name'})
146
+ defensive_player_ids.append(sack_players)
147
+
148
+ # Interceptions
149
+ int_players = sf_games[sf_games['interception_player_id'].notna()][['game_id', 'interception_player_id', 'interception_player_name', 'defteam']]
150
+ int_players = int_players.rename(columns={'interception_player_id': 'player_id', 'interception_player_name': 'player_name'})
151
+ defensive_player_ids.append(int_players)
152
+
153
+ # Forced fumbles
154
+ ff_players = sf_games[sf_games['forced_fumble_player_1_player_id'].notna()][['game_id', 'forced_fumble_player_1_player_id', 'forced_fumble_player_1_player_name', 'forced_fumble_player_1_team']]
155
+ ff_players = ff_players.rename(columns={'forced_fumble_player_1_player_id': 'player_id', 'forced_fumble_player_1_player_name': 'player_name', 'forced_fumble_player_1_team': 'defteam'})
156
+ defensive_player_ids.append(ff_players)
157
+
158
+ # Fumble recoveries
159
+ fr_players = sf_games[sf_games['fumble_recovery_1_player_id'].notna()][['game_id', 'fumble_recovery_1_player_id', 'fumble_recovery_1_player_name', 'fumble_recovery_1_team']]
160
+ fr_players = fr_players.rename(columns={'fumble_recovery_1_player_id': 'player_id', 'fumble_recovery_1_player_name': 'player_name', 'fumble_recovery_1_team': 'defteam'})
161
+ defensive_player_ids.append(fr_players)
162
+
163
+ # Pass defenses
164
+ pd_players = sf_games[sf_games['pass_defense_1_player_id'].notna()][['game_id', 'pass_defense_1_player_id', 'pass_defense_1_player_name', 'defteam']]
165
+ pd_players = pd_players.rename(columns={'pass_defense_1_player_id': 'player_id', 'pass_defense_1_player_name': 'player_name'})
166
+ defensive_player_ids.append(pd_players)
167
+
168
+ # Combine all defensive player dataframes
169
+ defensive_players = pd.concat(defensive_player_ids, ignore_index=True)
170
+ defensive_players = defensive_players.drop_duplicates()
171
+
172
+ # Now calculate defensive stats for each player
173
+ defensive_stats = sf_games.groupby(['game_id', 'defteam']).agg(
174
+ solo_tackles=('solo_tackle', 'sum'),
175
+ assisted_tackles=('assist_tackle', 'sum'),
176
+ tackles_for_loss=('tackled_for_loss', 'sum'),
177
+ qb_hits=('qb_hit', 'sum'),
178
+ sacks=('sack', 'sum'),
179
+ interceptions=('interception', 'sum'),
180
+ forced_fumbles=('fumble_forced', 'sum'),
181
+ fumble_recoveries=('fumble_recovery_1_yards', lambda x: (x > 0).sum()),
182
+ pass_defenses=('pass_defense_1_player_id', lambda x: x.notna().sum())
183
+ ).reset_index()
184
+
185
+ # Create a function to calculate individual defensive player stats
186
+ def calculate_defensive_player_stats(player_id, player_name, game_id, team):
187
+ player_games = sf_games[sf_games['game_id'] == game_id]
188
+
189
+ # Solo tackles
190
+ solo_tackles = player_games[player_games['solo_tackle_1_player_id'] == player_id].shape[0]
191
+ solo_tackles += player_games[player_games['solo_tackle_2_player_id'] == player_id].shape[0]
192
+
193
+ # Assisted tackles
194
+ assist_tackles = player_games[player_games['assist_tackle_1_player_id'] == player_id].shape[0]
195
+ assist_tackles += player_games[player_games['assist_tackle_2_player_id'] == player_id].shape[0]
196
+ assist_tackles += player_games[player_games['assist_tackle_3_player_id'] == player_id].shape[0]
197
+ assist_tackles += player_games[player_games['assist_tackle_4_player_id'] == player_id].shape[0]
198
+
199
+ # Sacks
200
+ sacks = player_games[player_games['sack_player_id'] == player_id].shape[0]
201
+ sacks += player_games[player_games['half_sack_1_player_id'] == player_id].shape[0] * 0.5
202
+ sacks += player_games[player_games['half_sack_2_player_id'] == player_id].shape[0] * 0.5
203
+
204
+ # Interceptions
205
+ interceptions = player_games[player_games['interception_player_id'] == player_id].shape[0]
206
+
207
+ # Forced fumbles
208
+ forced_fumbles = player_games[player_games['forced_fumble_player_1_player_id'] == player_id].shape[0]
209
+ forced_fumbles += player_games[player_games['forced_fumble_player_2_player_id'] == player_id].shape[0]
210
+
211
+ # Fumble recoveries
212
+ fumble_recoveries = player_games[player_games['fumble_recovery_1_player_id'] == player_id].shape[0]
213
+ fumble_recoveries += player_games[player_games['fumble_recovery_2_player_id'] == player_id].shape[0]
214
+
215
+ # Pass defenses
216
+ pass_defenses = player_games[player_games['pass_defense_1_player_id'] == player_id].shape[0]
217
+ pass_defenses += player_games[player_games['pass_defense_2_player_id'] == player_id].shape[0]
218
+
219
+ # Tackles for loss
220
+ tackles_for_loss = player_games[player_games['tackle_for_loss_1_player_id'] == player_id].shape[0]
221
+ tackles_for_loss += player_games[player_games['tackle_for_loss_2_player_id'] == player_id].shape[0]
222
+
223
+ # QB hits
224
+ qb_hits = player_games[player_games['qb_hit_1_player_id'] == player_id].shape[0]
225
+ qb_hits += player_games[player_games['qb_hit_2_player_id'] == player_id].shape[0]
226
+
227
+ return pd.Series({
228
+ 'solo_tackles': solo_tackles,
229
+ 'assisted_tackles': assist_tackles,
230
+ 'tackles_for_loss': tackles_for_loss,
231
+ 'qb_hits': qb_hits,
232
+ 'sacks': sacks,
233
+ 'interceptions': interceptions,
234
+ 'forced_fumbles': forced_fumbles,
235
+ 'fumble_recoveries': fumble_recoveries,
236
+ 'pass_defenses': pass_defenses
237
+ })
238
+
239
+ # Apply the function to each defensive player
240
+ defensive_player_stats = []
241
+ for _, row in defensive_players.iterrows():
242
+ stats = calculate_defensive_player_stats(row['player_id'], row['player_name'], row['game_id'], row['defteam'])
243
+ stats['game_id'] = row['game_id']
244
+ stats['player_id'] = row['player_id']
245
+ stats['player_name'] = row['player_name']
246
+ stats['posteam'] = row['defteam'] # Use defteam as posteam for consistency
247
+ defensive_player_stats.append(stats)
248
+
249
+ # Convert to DataFrame
250
+ defensive_player_stats_df = pd.DataFrame(defensive_player_stats)
251
+
252
+ # 4. Additional Context Stats
253
+ context_stats = sf_games.groupby(['game_id', 'posteam']).agg(
254
+ total_plays=('play_id', 'count'),
255
+ third_down_attempts=('down', lambda x: (x == 3).sum()),
256
+ third_down_conversions=('third_down_converted', 'sum'),
257
+ fourth_down_attempts=('down', lambda x: (x == 4).sum()),
258
+ fourth_down_conversions=('fourth_down_converted', 'sum'),
259
+ red_zone_attempts=('yardline_100', lambda x: (x <= 20).sum()),
260
+ red_zone_touchdowns=('touchdown', lambda x: ((x == 1) & (sf_games['yardline_100'] <= 20)).sum()),
261
+ avg_field_position=('yardline_100', 'mean'),
262
+ total_epa=('epa', 'sum')
263
+ ).reset_index()
264
+
265
+ # Rename columns for consistency
266
+ advanced_passing = advanced_passing.rename(columns={'passer_player_id': 'player_id', 'passer_player_name': 'player_name'})
267
+ advanced_rushing = advanced_rushing.rename(columns={'rusher_player_id': 'player_id', 'rusher_player_name': 'player_name'})
268
+ advanced_receiving = advanced_receiving.rename(columns={'receiver_player_id': 'player_id', 'receiver_player_name': 'player_name'})
269
+
270
+ # Merge all enhanced stats
271
+ enhanced_stats = pd.merge(advanced_passing, advanced_rushing, on=['game_id', 'player_id', 'player_name', 'posteam'], how='outer')
272
+ enhanced_stats = pd.merge(enhanced_stats, advanced_receiving, on=['game_id', 'player_id', 'player_name', 'posteam'], how='outer')
273
+
274
+ # Add defensive player stats
275
+ enhanced_stats = pd.merge(enhanced_stats, defensive_player_stats_df, on=['game_id', 'player_id', 'player_name', 'posteam'], how='outer')
276
+
277
+ # Add roster information
278
+ enhanced_stats = enhanced_stats.merge(
279
+ roster_df[['player_id', 'position', 'team']],
280
+ on='player_id',
281
+ how='left'
282
+ )
283
+
284
+ # Fill NaN values with 0
285
+ enhanced_stats = enhanced_stats.fillna(0)
286
+
287
+ # Filter to only San Francisco 49ers players
288
+ enhanced_stats = enhanced_stats[enhanced_stats['posteam'] == team_abbr]
289
+
290
+ # Export enhanced stats
291
+ enhanced_output_path = "49ers_2024_enhanced_stats.csv"
292
+ enhanced_stats.to_csv(enhanced_output_path, index=False)
293
+ print(f"Saved enhanced player statistics to {enhanced_output_path}")
294
+
295
+ # Preview enhanced stats
296
+ print("\nEnhanced Stats Preview:")
297
+ print(enhanced_stats.head())
298
+
299
+ # =============================================
300
+ # SECTION 3: COLUMN DEFINITIONS
301
+ # =============================================
302
+
303
+ print("\nGenerating column definitions...")
304
+
305
+ # Create a dictionary of column definitions
306
+ column_definitions = {
307
+ # Basic identifiers
308
+ 'game_id': 'Unique identifier for each game (format: YYYY_WK_HOME_AWAY)',
309
+ 'player_id': 'Unique identifier for each player',
310
+ 'player_name': 'Player name (Last.First format)',
311
+ 'posteam': 'Team the player was on for this play',
312
+ 'position': 'Player position (QB, RB, WR, TE, OL, DL, LB, DB, etc.)',
313
+ 'team': 'Team the player was on for the season',
314
+
315
+ # Passing stats
316
+ 'passing_yards': 'Total passing yards',
317
+ 'passing_tds': 'Total passing touchdowns',
318
+ 'air_yards': 'Total air yards (distance ball traveled in the air)',
319
+ 'yards_after_catch': 'Total yards after catch (YAC)',
320
+ 'cpoe': 'Completion Percentage Over Expected (average)',
321
+ 'qb_epa': 'Expected Points Added by quarterback',
322
+ 'pass_attempts': 'Number of pass attempts',
323
+ 'complete_passes': 'Number of completed passes',
324
+ 'avg_air_yards': 'Average air yards per pass attempt',
325
+ 'avg_yac': 'Average yards after catch per reception',
326
+ 'pass_location_left': 'Number of passes thrown to the left side of the field',
327
+ 'pass_location_middle': 'Number of passes thrown to the middle of the field',
328
+ 'pass_location_right': 'Number of passes thrown to the right side of the field',
329
+ 'pass_length_short': 'Number of short passes (0-9 yards)',
330
+ 'pass_length_medium': 'Number of medium passes (10-19 yards)',
331
+ 'pass_length_deep': 'Number of deep passes (20+ yards)',
332
+
333
+ # Rushing stats
334
+ 'rushing_yards': 'Total rushing yards',
335
+ 'rushing_tds': 'Total rushing touchdowns',
336
+ 'rush_attempts': 'Number of rush attempts',
337
+ 'first_downs_rush': 'Number of first downs achieved by rushing',
338
+ 'xyac_mean': 'Expected Yards After Contact (mean)',
339
+ 'xyac_median': 'Expected Yards After Contact (median)',
340
+ 'xyac_success_rate': 'Expected Yards After Contact success rate',
341
+ 'rush_epa': 'Expected Points Added by rushing plays',
342
+ 'run_location_left': 'Number of rushes to the left side of the field',
343
+ 'run_location_middle': 'Number of rushes to the middle of the field',
344
+ 'run_location_right': 'Number of rushes to the right side of the field',
345
+ 'run_gap_guard': 'Number of rushes through the guard gap',
346
+ 'run_gap_tackle': 'Number of rushes through the tackle gap',
347
+ 'run_gap_end': 'Number of rushes through the end gap',
348
+
349
+ # Receiving stats
350
+ 'receiving_yards': 'Total receiving yards',
351
+ 'receiving_tds': 'Total receiving touchdowns',
352
+ 'receiving_attempts': 'Number of pass attempts targeting this player',
353
+ 'first_downs_receiving': 'Number of first downs achieved by receiving',
354
+ 'receiving_epa': 'Expected Points Added by receiving plays',
355
+ 'avg_yac_y': 'Average yards after catch per reception',
356
+ 'avg_air_yards_y': 'Average air yards per target',
357
+
358
+ # Defensive stats
359
+ 'solo_tackles': 'Number of solo tackles',
360
+ 'assisted_tackles': 'Number of assisted tackles',
361
+ 'tackles_for_loss': 'Number of tackles for loss',
362
+ 'qb_hits': 'Number of quarterback hits',
363
+ 'sacks': 'Number of sacks (including half sacks)',
364
+ 'interceptions': 'Number of interceptions',
365
+ 'forced_fumbles': 'Number of forced fumbles',
366
+ 'fumble_recoveries': 'Number of fumble recoveries',
367
+ 'pass_defenses': 'Number of pass defenses (passes defended)',
368
+
369
+ # Context stats
370
+ 'total_plays': 'Total number of plays',
371
+ 'third_down_attempts': 'Number of third down attempts',
372
+ 'third_down_conversions': 'Number of third down conversions',
373
+ 'fourth_down_attempts': 'Number of fourth down attempts',
374
+ 'fourth_down_conversions': 'Number of fourth down conversions',
375
+ 'red_zone_attempts': 'Number of plays in the red zone (inside 20-yard line)',
376
+ 'red_zone_touchdowns': 'Number of touchdowns scored in the red zone',
377
+ 'avg_field_position': 'Average field position (yard line)',
378
+ 'total_epa': 'Total Expected Points Added'
379
+ }
380
+
381
+ # Create a DataFrame from the dictionary
382
+ column_definitions_df = pd.DataFrame({
383
+ 'column_name': list(column_definitions.keys()),
384
+ 'definition': list(column_definitions.values())
385
+ })
386
+
387
+ # Export column definitions
388
+ column_definitions_path = "49ers_2024_column_definitions.csv"
389
+ column_definitions_df.to_csv(column_definitions_path, index=False)
390
+ print(f"Saved column definitions to {column_definitions_path}")
391
+
392
+ print("\nScript completed successfully!")
data/april_11_multimedia_data_collect/match_highlights.py CHANGED
@@ -1,14 +1,17 @@
1
  import csv
2
  import re
 
 
3
  from collections import defaultdict
4
 
 
5
  # Define file paths
6
- YOUTUBE_HIGHLIGHTS_PATH = "ifx-sandbox/data/april_11_multimedia_data_collect/youtube_highlights.csv"
7
- PLAYERS_ROSTER_PATH = "ifx-sandbox/data/april_11_multimedia_data_collect/niners_players_headshots_with_socials_merged.csv"
8
- GAMES_SCHEDULE_PATH = "ifx-sandbox/data/nfl-2024-san-francisco-49ers-with-results.csv"
9
- OUTPUT_PLAYERS_PATH = "ifx-sandbox/data/niners_output/players_with_highlights.csv"
10
- OUTPUT_GAMES_PATH = "ifx-sandbox/data/niners_output/games_with_highlights.csv"
11
- OUTPUT_TEAM_VIDEOS_PATH = "ifx-sandbox/data/niners_output/team_highlights.csv"
12
 
13
  def load_youtube_highlights():
14
  """Load YouTube highlights data from CSV file."""
 
1
  import csv
2
  import re
3
+ import os
4
+ from pathlib import Path
5
  from collections import defaultdict
6
 
7
+
8
  # Define file paths
9
+ YOUTUBE_HIGHLIGHTS_PATH = "youtube_highlights.csv"
10
+ PLAYERS_ROSTER_PATH = "niners_players_headshots_with_socials_merged.csv"
11
+ GAMES_SCHEDULE_PATH = "nfl-2024-san-francisco-49ers-with-results.csv"
12
+ OUTPUT_PLAYERS_PATH = "new_niners_players_with_highlights.csv"
13
+ OUTPUT_GAMES_PATH = "new_games_with_highlights.csv"
14
+ OUTPUT_TEAM_VIDEOS_PATH = "new_team_highlights.csv"
15
 
16
  def load_youtube_highlights():
17
  """Load YouTube highlights data from CSV file."""
data/april_11_multimedia_data_collect/new_final_april 11/roster_april_11.csv ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Player,Number,Pos,HT,WT,Age,Exp,College,status,player_id,headshot_url,instagram_url,highlight_video_url
2
+ Israel Abanikanda,20,RB,5-10,216,22,2,Pittsburgh,Active,c1f595b7-9043-4569-9ff6-97e0f31a5ba5,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/wo7d9oli06eki4mnh3i8.png,https://www.instagram.com/izzygetsbusy__/?hl=en,
3
+ Brandon Allen,17,QB,6-2,209,32,8,Arkansas,Active,86f109ac-c967-4c17-af5c-97395270c489,#N/A,#N/A,#N/A
4
+ Evan Anderson,69,DL,6-3,326,23,R,Florida Atlantic,Active,7774475d-ab11-4247-a631-9c7d29ba9745,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/ng7oamywxvqgkx6l6kqc.png,https://www.instagram.com/klamps8/?hl=en,
5
+ Tre Avery,36,CB,5-11,181,28,3,Rutgers,Active,59e3afa0-cb40-4f8e-9052-88b9af20e074,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/a7kfv7xjftqlaqghk6sg,https://www.instagram.com/t.avery21/?hl=en,
6
+ Robert Beal Jr.,51,DL,6-4,250,25,2,Georgia,Active,dcecbaa2-2803-4716-a729-45e1c80d6ab8,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/jwwhmt5d8mi0vdb8nfic.jpg,https://www.instagram.com/oursf49ers/reel/C_CVQxxp2ti/,
7
+ Tatum Bethune,48,LB,6-0,299,24,R,Florida State,Active,f51beff4-e90c-4b73-9253-8699c46a94ff,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/vl08pinqpmoubdf0zy5s.png,https://www.instagram.com/tatumx15/?hl=en,
8
+ Nick Bosa,97,DL,6-4,266,27,6,Ohio State,Active,9cf4b059-d05c-4d22-9ca3-c5aee41ebfdc,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/utiwswqvpkiwtocijwhz.jpg,https://www.instagram.com/nbsmallerbear/?hl=en,https://www.youtube.com/watch?v=URvcwUEQYMw
9
+ Jake Brendel,64,OL,6-4,299,32,7,UCLA,Active,b7c1b4e2-4d9c-47cc-8ac2-b6e0d2493157,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/svsb41aekpzt3m9snilw.jpg,https://www.instagram.com/jake.brendel/?hl=en,
10
+ Ji'Ayir Brown,27,S,5-11,202,25,2,Penn State,Active,e5950f0d-0d24-4e2f-b96a-36ebedb604a9,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/urillpic02z774n09xvf.jpg,https://www.instagram.com/_tiig/?hl=en,
11
+ Chris Conley,18,WR,6-3,205,32,10,Georgia,Active,f35d154a-0a53-476e-b0c2-49ae5d33b7eb,#N/A,#N/A,#N/A
12
+ Jacob Cowing,19,WR,5-9,171,24,R,Arizona,Active,564daa89-38f8-4c8a-8760-de1923f9a681,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/lg7aao0umc21oioufqdx.png,https://www.instagram.com/jaycowing_/?hl=en,
13
+ Kalia Davis,93,DL,6-2,310,26,3,Central Florida,Active,9ecde51b-8b49-40a3-ba42-e8c5787c279c,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/rmnxj3sh7pyldmcxqe32.jpg,https://www.instagram.com/ucf.football/p/C3No6rTugDe/,https://www.youtube.com/watch?v=xE4jfmV7kGg
14
+ Khalil Davis,50,DL,6-2,315,28,4,Nebraska,Active,5162b93a-4f44-45fd-8d6b-f5714f4c7e91,#N/A,#N/A,#N/A
15
+ Joshua Dobbs,5,QB,6-3,220,30,8,Tennessee,Active,44b1d8d5-663c-485b-94d3-c72540441aa0,#N/A,#N/A,#N/A
16
+ Jordan Elliott,92,DL,6-4,303,27,5,Missouri,Active,f037f86a-6952-49a5-b6d3-6ce43b8e1d3d,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/xbyky8r2yuzusd2tmrw8.jpg,https://www.instagram.com/jordanelliott_nbcs/,
17
+ Luke Farrell,89,TE,6-5,250,27,4,Ohio State,Active,ba2cf281-cffa-4de5-9db9-2109331e455d,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/f2z7wpmx7ngtxcqqedla,https://www.instagram.com/lukefarrell89/?hl=en,
18
+ Tashaun Gipson Sr.,43,S,6-1,212,34,13,Wyoming,Active,14026aa2-5f8c-45bf-9b92-0971d92127e6,#N/A,#N/A,#N/A
19
+ Jalen Graham,41,LB,6-3,220,25,2,Purdue,Active,00d1db69-8b43-4d34-bbf8-17d4f00a8b71,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/pbl2a1ujopvwqrfct0jp.jpg,https://www.instagram.com/thexniners/p/CruR8IPrSV7/,
20
+ Richie Grant,27,S,6-0,200,27,4,UCF,Active,c737a041-c713-43f6-8205-f409b349e2b6,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/szeswtvt6jmbu3so3phd,https://www.instagram.com/richiegrant_/?hl=en,
21
+ Renardo Green,0,CB,6-0,186,24,R,Florida State,Active,21d23c5c-28c0-4b66-8d17-2f5c76de48ed,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/v79obx9v7tgcjjlo6hiy.png,https://www.instagram.com/dondada.8/?hl=en,https://www.youtube.com/watch?v=iIooO2pTjt4
22
+ Yetur Gross-Matos,94,DL,6-5,265,27,5,Penn State,Active,cde0a59d-19ab-44c9-ba02-476b0762e4a8,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/etuaajmvhbc5qkebgoow.jpg,https://www.instagram.com/__lobo99/?hl=en,
23
+ Isaac Guerendo,31,RB,6-0,221,24,R,Louisville,Active,4ca8e082-d358-46bf-af14-9eaab40f4fe9,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/b66rpzr9iauo5rdprvka.png,https://www.instagram.com/isaac_guerendo/?hl=en,
24
+ Charlie Heck,75,OL,6-8,311,28,5,North Carolina,Active,7d809297-6d2f-4515-ab3c-1ce3eb47e7a6,#N/A,#N/A,#N/A
25
+ Matt Hennessy,61,OL,6-3,315,27,4,Temple,Active,2f95e3de-03de-4827-a4a7-aaed42817861,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/zk8b21o8ncxnyu0gyf23,https://www.instagram.com/matt___hennessy/?hl=en,
26
+ Jauan Jennings,15,WR,6-3,212,27,4,Tennessee,Active,16794171-c7a0-4a0e-9790-6ab3b2cd3380,https://static.clubs.nfl.com/image/private/t_thumb_squared_2x/f_auto/49ers/wxsq7f4ajmhfs6tn4dg2.jpg,https://www.instagram.com/u_aintjj/?hl=en,https://www.youtube.com/watch?v=kFkNlmUQVu0
27
+ Mac Jones,10,QB,6-3,200,26,4,Alabama,Active,18df1544-69a6-460c-802e-7d262e83111d,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/pedpdxybeus7mrovsoko,https://www.instagram.com/macjones_10/?hl=en,https://www.youtube.com/watch?v=TylWJVa84VE
28
+ George Kittle,85,TE,6-4,250,31,8,Iowa,Active,3fe4cd72-43e3-40ea-8016-abb2b01503c7,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/elheepobwn1ahqwtfwat.jpg,https://www.instagram.com/gkittle/?hl=en,https://www.youtube.com/watch?v=RzMVbATV95w
29
+ Deommodore Lenoir,2,DB,5-10,200,25,4,Oregon,Active,79a00b55-fa24-45d8-a43f-772694b7776d,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/f9fnuvbpcxku9ibt9qs8.jpg,https://www.instagram.com/deommo.lenoir/?hl=en,https://www.youtube.com/watch?v=h-uvula5tNo
30
+ Nick McCloud,35,CB,6-1,193,26,4,Notre Dame,Active,c3b8f82b-92c0-4a5d-85ef-7ddaec7d3a87,#N/A,#N/A,#N/A
31
+ Colton McKivitz,68,OL,6-6,301,28,5,West Virginia,Active,63b288c1-4434-4120-867c-cee4dadd8c8a,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/jugvoxjabgsbcfbuqfew.jpg,https://www.instagram.com/cmckivitz53/?hl=en,
32
+ Jake Moody,4,K,6-1,210,25,2,Michigan,Active,9328e072-e82e-41ef-a132-ed54b649a5ca,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/ygputwsbutemszr8xxkw.jpg,https://www.instagram.com/jmoods_/?hl=en,
33
+ Malik Mustapha,6,S,5-10,206,22,R,Wake Forest,Active,6cb2d19f-f0a4-4ece-9190-76345d1abc54,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/eyrgxgpbrycd9x8glk0j.png,https://www.instagram.com/stapha/,
34
+ Pat O'Donnell,40,P,6-4,220,34,10,Miami,Active,61a0a607-be7b-429d-b492-59523fad023e,#N/A,#N/A,#N/A
35
+ Sam Okuayinonu,91,DL,6-1,269,26,2,Maryland,Active,c81b6283-b1aa-40d6-a825-f01410912435,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/fyolr2zk2nplfbdze75l.jpg,https://www.instagram.com/sam.ok97/?hl=en,
36
+ Ricky Pearsall,14,WR,6-3,192,24,R,Florida,Active,27bf8c9c-7193-4f43-9533-32f1293d1bf0,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/to7q7w4kjiajseb4ljcx.png,https://www.instagram.com/ricky.pearsall/?hl=en,
37
+ Jason Pinnock,41,CB,6-0,205,25,4,Pittsburgh,Active,57f29e6b-9082-4637-af4b-0d123ef4542d,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/on29awacb9frijyggtgt,https://www.instagram.com/jpinny15/?hl=en,
38
+ Austen Pleasants,62,OT,6-7,328,27,1,Ohio,Active,d000d0a3-a7ba-442d-92af-0d407340aa2f,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/wsbs5emdyzuc1sudbcls.png,https://www.instagram.com/oursf49ers/p/DDr48a4PdcO/?hl=en,
39
+ Dominick Puni,77,OL,6-5,313,25,R,Kansas,Active,aeb5a55c-4554-4116-9de0-76910e66e154,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/tq1snozjpjrgrjoflrfg.png,https://www.instagram.com/dompuni/?hl=en,
40
+ Brock Purdy,13,QB,6-1,220,25,3,Iowa State,Active,787758c9-4e9a-44f2-af68-c58165d0bc03,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/wt42ykvuxpngm4m1axxn.png,https://www.instagram.com/brock.purdy13/?hl=en,https://www.youtube.com/watch?v=O-ft3FPYwiA
41
+ Demarcus Robinson,14,WR,6-1,203,30,9,Florida,Active,c97d60e5-8c92-4d2e-b782-542ca7aa7799,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/lakf0xue1qqb7ed4p6ge,https://www.instagram.com/demarcusrobinson/?hl=en,https://www.youtube.com/watch?v=1vwP8vs-mXI
42
+ Eric Saubert,82,TE,6-5,248,30,7,Drake,Active,67214339-8a36-45b9-8b25-439d97b06703,#N/A,#N/A,#N/A
43
+ Patrick Taylor Jr.,32,RB,6-2,217,26,4,Memphis,Active,4bf9f546-d80c-4cb4-8692-73d8ac68d1f1,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/hochjncae0hqcoveuexq.jpg,https://www.instagram.com/patricktaylor/?hl=en,
44
+ Tre Tomlinson,,CB,5-9,177,25,2,TCU,Active,ad3e3f2e-ee06-4406-8874-ea1921c52328,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/n5pfv126xw0psc0d1ydz,https://www.instagram.com/trevius/?hl=en,
45
+ Jake Tonges,88,TE,6-4,240,25,2,California,Active,ad391cbf-b874-4b1e-905b-2736f2b69332,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/la3z5y6u7tix6rnq2m5l.jpg,https://www.instagram.com/jaketonges/?hl=en,
46
+ Fred Warner,54,LB,6-3,230,28,7,Brigham Young,Active,cdd0eadc-19e2-4ca1-bba5-6846c9ac642b,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/zo4ftfar4bshrbipceuk.jpg,https://www.instagram.com/fred_warner/?hl=en,https://www.youtube.com/watch?v=IwBlFktlNwY
47
+ Jon Weeks,46,LS,5-10,245,39,15,Baylor,Active,587c7609-ba56-4d22-b1e6-c12576c428fd,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/d9fvm74pu4vyinveopbf,https://www.instagram.com/jonweeks46/?hl=en,https://www.youtube.com/watch?v=FO_iJ1IEOQU
48
+ Brayden Willis,9,TE,6-4,240,25,2,Oklahoma,Active,d1b16c10-c5b3-4157-bd9d-7f289f17df81,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/xmo7hsuho3ehmsjwvthc.jpg,https://www.instagram.com/brayden_willis/?hl=en,https://www.youtube.com/watch?v=3KNc8s3Xwos
49
+ Dee Winters,53,LB,5-11,227,24,2,TCU,Active,514f3569-5435-48bb-bc74-6b08d3d78ca9,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/ggf13riajo0kn0y6kbu0.jpg,https://www.instagram.com/dwints_/?hl=en,
50
+ Rock Ya-Sin,33,CB,5-11,195,28,6,Temple,Active,cb00e672-232a-4137-a259-f3cf0382d466,#N/A,#N/A,#N/A
51
+ Isaac Yiadom,22,CB,6-1,232,29,7,Boston College,Active,3227c040-7d18-4803-b4b4-799667344a6d,#N/A,#N/A,#N/A
52
+ Nick Zakelj,63,OL,6-6,316,25,3,Fordham,Active,59845c40-7efc-4514-9ed6-c29d983fba31,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/o92tva22zezdz4aksadl.jpg,https://www.instagram.com/nickzakelj/?hl=en,
53
+ Player,#,Pos,HT,WT,Age,Exp,College,Reserve/Future,724825a5-7a0b-422d-946e-ce9512ad7add,#N/A,#N/A,#N/A
54
+ Isaac Alarcon,67,OL,6-7,320,26,1,Tecnológico de Monterrey,Reserve/Future,262ea245-93dc-4c61-aa41-868bc4cc5dcf,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/mlhuuxukyusodzlfsmnv.jpg,https://www.instagram.com/isaac_algar/?hl=en,
55
+ Russell Gage,84,WR,6-0,184,29,7,LSU,Reserve/Future,1537733f-8218-4c45-9a0a-e00ff349a9d1,#N/A,#N/A,#N/A
56
+ Isaiah Hodgins,87,WR,6-3,200,26,4,Oregon State,Reserve/Future,f4c2cec2-d0b4-45a9-ac1b-478ce1a32b2c,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/ax1oft9kqida0eokvtes.jpg,https://www.instagram.com/isaiahhodgins/?hl=en,
57
+ Quindell Johnson,,S,6-2,208,25,2,Memphis,Reserve/Future,7bee6f18-bd56-4920-a132-107c8af22bef,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/uga90lawcfxjcqna7opb,https://www.instagram.com/p/DFGnwNlymc9/,https://www.youtube.com/watch?v=VU2gRl8rgqw
58
+ Jalen McKenzie,76,OT,6-5,315,25,1,USC,Reserve/Future,473d4c85-cc2c-4020-9381-c49a7236ad68,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/gffxpns1ayxyjccymr6d.jpg,https://www.instagram.com/jay_peez70/?hl=en,
59
+ Brandon Aiyuk,11,WR,6-0,200,27,5,Arizona State,Reserve/Injured,577eb875-f886-400d-8b14-ec28a2cc5eae,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/khwofxjjwx0hcaigzxhw.png,https://www.instagram.com/brandonaiyuk/?hl=en,https://www.youtube.com/watch?v=TlAgJDpoOYk
60
+ Aaron Banks,65,OL,6-5,325,27,4,Notre Dame,Reserve/Injured,e665afb5-904a-4e86-a6da-1d859cc81f90,#N/A,#N/A,#N/A
61
+ Ben Bartch,78,OL,6-6,315,26,5,St. John's (MN),Reserve/Injured,6a1545de-63fd-4c04-bc27-58ba334e7a91,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/aqaslodzr7y0yvh5zzxa.jpg,https://www.instagram.com/bartchben/,
62
+ Tre Brown,22,CB,5-10,185,27,4,Oklahoma,Reserve/Injured,839c425d-d9b0-4b60-8c68-80d14ae382f7,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/dpemqrrweakt8dci3qfb,https://www.instagram.com/tre_brown25/?hl=en,
63
+ Spencer Burford,74,OL,6-4,300,24,3,Texas-San Antonio,Reserve/Injured,31da633a-a7f1-4ec4-a715-b04bb85e0b5f,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/lje3ae25dntkdudp6eex.jpg,https://www.instagram.com/spence__74/?hl=en,
64
+ Luke Gifford,57,LB,6-3,243,29,6,Nebraska,Reserve/Injured,069b6392-804b-4fcb-8654-d67afad1fd91,https://static.www.nfl.com/image/private/t_thumb_squared_2x/f_auto/league/mhdbbzj8amttnpd1nbpn,https://www.instagram.com/luke_gifford/?hl=en,
65
+ Kevin Givens,90,DL,6-1,285,28,5,Penn State,Reserve/Injured,a9f79e66-ff50-49eb-ae50-c442d23955fc,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/mstmgft0e0ancdzspboy.jpg,https://www.instagram.com/49ers/p/DAg_Pvpz1vV/,
66
+ Darrell Luter Jr.,28,CB,6-0,190,24,2,South Alabama,Reserve/Injured,741c6fa0-0254-4f85-9066-6d46fcc1026e,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/g5rohvooet9g5w7rlhrh.jpg,https://www.instagram.com/_d.ray4k/?hl=en,
67
+ Jordan Mason,24,RB,5-11,223,25,3,Georgia Tech,Reserve/Injured,89531f13-baf0-43d6-b9f4-42a95482753a,#N/A,#N/A,#N/A
68
+ Christian McCaffrey,23,RB,5-11,210,28,8,Stanford,Reserve/Injured,052ec36c-e430-4698-9270-d925fe5bcaf4,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/a8fka6shomakkbllljgt.jpg,https://www.instagram.com/christianmccaffrey/?hl=en,https://www.youtube.com/watch?v=cu78Okf6VSo
69
+ Elijah Mitchell,25,RB,5-10,200,26,4,Louisiana,Reserve/Injured,7dfc6f25-07a8-4618-954b-b9dd96cee86e,#N/A,#N/A,#N/A
70
+ Jaylon Moore,76,OL,6-4,311,27,4,Western Michigan,Reserve/Injured,c800d89e-031f-4180-b824-8fd307cf6d2b,#N/A,#N/A,#N/A
71
+ George Odum,30,S,6-1,202,31,7,Central Arkansas,Reserve/Injured,26e72658-4503-47c4-ad74-628545e2402a,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/sqpxhoycdpegkyjn6ooc.jpg,https://www.instagram.com/george.w.odum/?hl=en,
72
+ Curtis Robinson,36,LB,6-3,235,26,3,Stanford,Reserve/Injured,072a3483-b063-48fd-bc9c-5faa9b845425,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/x3xyzgeapcafr0gicl5y.jpg,https://www.instagram.com/curtis_robinsonn/?hl=en,https://www.youtube.com/watch?v=8wyHHbXoFZI
73
+ Trent Williams,71,T,6-5,320,36,15,Oklahoma,Reserve/Injured,bb8b42ad-6042-40cd-b08c-2dc3a5cfc737,https://static.clubs.nfl.com/image/private/t_thumb_squared_2x/f_auto/49ers/bnq8i5urjualxre5caqz.jpg,https://www.instagram.com/trentwilliams71/?hl=en,https://www.youtube.com/watch?v=k7FDcmcawL0
74
+ Mitch Wishnowsky,3,P,6-2,220,33,6,Utah,Reserve/Injured,fe86f2c6-8576-4e77-b1df-a3df995eccf8,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/mkf1xr1x8nr9l55oq72a.jpg,https://www.instagram.com/mitchwish3/?hl=en,https://www.youtube.com/watch?v=ZkH6eWs5Yd8
data/april_11_multimedia_data_collect/new_final_april 11/schedule_with_result_april_11.csv ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Match Number,Round Number,Date,Location,HomeTeam,AwayTeam,Result,game_result,game_id,Summary,highlight_video_url
2
+ 1,1,10/9/24 0:15,Levi's Stadium,San Francisco 49ers,New York Jets,32 - 19,Win,7d5492b7-6372-4ab6-b878-a6ad10936f3b,"Quarterback Brock Purdy threw for 231 yards, with running back Jordan Mason rushing for 147 yards.",https://www.youtube.com/watch?v=igOb4mfV7To
3
+ 28,2,15/09/2024 17:00,U.S. Bank Stadium,Minnesota Vikings,San Francisco 49ers,23 - 17,Loss,9c37ef4a-8887-4e16-a0e9-53dd21d0ed1c,"Purdy passed for 319 yards; Mason added 100 rushing yards, but the 49ers fell short.",https://www.youtube.com/watch?v=jTJw2uf-Pdg
4
+ 38,3,22/09/2024 20:25,SoFi Stadium,Los Angeles Rams,San Francisco 49ers,27 - 24,Loss,b8c3e7f7-81ed-48c4-9a49-0897cac450e5,Purdy threw for 292 yards; Jauan Jennings had 175 receiving yards in a close loss.,https://www.youtube.com/watch?v=Y1dnhN-1ryU
5
+ 55,4,29/09/2024 20:05,Levi's Stadium,San Francisco 49ers,New England Patriots,30 - 13,Win,b4b49323-c84d-4414-bbd4-de399145db28,Brock Purdy threw for 288 yards and a touchdown; Fred Warner returned an interception for a touchdown.,https://www.youtube.com/watch?v=NCUjGFJILLo
6
+ 70,5,6/10/24 20:05,Levi's Stadium,San Francisco 49ers,Arizona Cardinals,23 - 24,Loss,efe67377-f218-4629-94d6-b0a28dae81b4,"Kyler Murray led a comeback, including a 50-yard touchdown run; Chad Ryland kicked the game-winning field goal.",https://www.youtube.com/watch?v=v62sybG_3Lk
7
+ 92,6,11/10/24 0:15,Lumen Field,Seattle Seahawks,San Francisco 49ers,24 - 36,Win,be924e35-6c00-470a-a82e-f77e89f2fca9,Geno Smith's late 13-yard touchdown run secured the Seahawks' victory.,https://www.youtube.com/watch?v=LaDE1QBC3Cc
8
+ 96,7,20/10/2024 20:25,Levi's Stadium,San Francisco 49ers,Kansas City Chiefs,18 - 28,Loss,c0efcedb-e8a0-4058-8ae8-df418a829c22,Specific game details are not available.,https://www.youtube.com/watch?v=4_xM1tOK-28
9
+ 109,8,28/10/2024 00:20,Levi's Stadium,San Francisco 49ers,Dallas Cowboys,30 - 24,Win,9d3c8085-3864-4c86-9a47-6d91f9561e68,Specific game details are not available.,https://www.youtube.com/watch?v=7nTBwPljD-Q
10
+ 149,10,10/11/24 18:00,Raymond James Stadium,Tampa Bay Buccaneers,San Francisco 49ers,20 - 23,Win,8c117905-4d53-4bfb-a85e-d4d0a52262a8,"The 49ers narrowly avoided a collapse, with Jake Moody's game-winning field goal.",https://www.youtube.com/watch?v=607mv01G8UU
11
+ 158,11,17/11/2024 21:05,Levi's Stadium,San Francisco 49ers,Seattle Seahawks,17 - 20,Loss,6ee0f83e-d738-43c7-95e2-472bdaa9c2e8,Geno Smith's last-minute touchdown run ended the Seahawks' losing streak against the 49ers.,https://www.youtube.com/watch?v=VMPRSGk7bUg
12
+ 169,12,24/11/2024 21:25,Lambeau Field,Green Bay Packers,San Francisco 49ers,38 - 10,Loss,89aeb6ec-c102-442f-a2b2-862a58f08c72,"Despite losing Deebo Samuel early, the 49ers secured a narrow victory.",https://www.youtube.com/watch?v=rtBtGh02HvA
13
+ 181,13,2/12/24 1:20,Highmark Stadium,Buffalo Bills,San Francisco 49ers,35 - 10,Loss,051a9bbd-41b1-4946-b366-2202b9b84646,"Josh Allen scored touchdowns passing, rushing, and receiving, leading the Bills to victory.",
14
+ 199,14,8/12/24 21:25,Levi's Stadium,San Francisco 49ers,Chicago Bears,38 - 13,Win,2bfc3060-5975-4c60-8cf2-cd359c318bcb,Specific game details are not available.,https://www.youtube.com/watch?v=qmzSVmVNaFg
15
+ 224,15,13/12/2024 01:15,Levi's Stadium,San Francisco 49ers,Los Angeles Rams,6 - 12,Loss,07182afe-36bf-44e4-a464-52a56e9e325d,"In a rainy defensive battle, the Rams secured victory with four field goals.",https://www.youtube.com/watch?v=3JfiboQ6ZC8
16
+ 228,16,22/12/2024 21:25,Hard Rock Stadium,Miami Dolphins,San Francisco 49ers,29 - 17,Loss,0be9a14c-0017-46b8-96e8-7c446e78ea84,A high-scoring game marked by a scuffle involving Jauan Jennings; the 49ers fell short.,
17
+ 246,17,31/12/2024 01:15,Levi's Stadium,San Francisco 49ers,Detroit Lions,34 - 40,Loss,a6af1ef1-eece-43c2-b98f-c20494003cfe,Specific game details are not available.,https://www.youtube.com/watch?v=AooNLyum7Ng
18
+ 257,18,5/1/25 21:25,State Farm Stadium,Arizona Cardinals,San Francisco 49ers,47 - 24,Loss,2c95b37b-b32d-4b30-a582-f04b8cbf12e4,Specific game details are not available.,https://www.youtube.com/watch?v=HfqGFWVdf9w
data/april_11_multimedia_data_collect/new_games_with_highlights.csv ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ match_number,round_number,date,location,home_team,away_team,result,game_result,opponent,highlight_video_url
2
+ 1,1,10/09/2024 00:15,Levi's Stadium,San Francisco 49ers,New York Jets,32 - 19,Win,New York Jets,https://www.youtube.com/watch?v=igOb4mfV7To
3
+ 28,2,15/09/2024 17:00,U.S. Bank Stadium,Minnesota Vikings,San Francisco 49ers,23 - 17,Loss,Minnesota Vikings,https://www.youtube.com/watch?v=jTJw2uf-Pdg
4
+ 38,3,22/09/2024 20:25,SoFi Stadium,Los Angeles Rams,San Francisco 49ers,27 - 24,Loss,Los Angeles Rams,https://www.youtube.com/watch?v=Y1dnhN-1ryU
5
+ 55,4,29/09/2024 20:05,Levi's Stadium,San Francisco 49ers,New England Patriots,30 - 13,Win,New England Patriots,https://www.youtube.com/watch?v=NCUjGFJILLo
6
+ 70,5,06/10/2024 20:05,Levi's Stadium,San Francisco 49ers,Arizona Cardinals,23 - 24,Loss,Arizona Cardinals,https://www.youtube.com/watch?v=v62sybG_3Lk
7
+ 92,6,11/10/2024 00:15,Lumen Field,Seattle Seahawks,San Francisco 49ers,24 - 36,Win,Seattle Seahawks,https://www.youtube.com/watch?v=LaDE1QBC3Cc
8
+ 96,7,20/10/2024 20:25,Levi's Stadium,San Francisco 49ers,Kansas City Chiefs,18 - 28,Loss,Kansas City Chiefs,https://www.youtube.com/watch?v=4_xM1tOK-28
9
+ 109,8,28/10/2024 00:20,Levi's Stadium,San Francisco 49ers,Dallas Cowboys,30 - 24,Win,Dallas Cowboys,https://www.youtube.com/watch?v=7nTBwPljD-Q
10
+ 149,10,10/11/2024 18:00,Raymond James Stadium,Tampa Bay Buccaneers,San Francisco 49ers,20 - 23,Win,Tampa Bay Buccaneers,https://www.youtube.com/watch?v=607mv01G8UU
11
+ 158,11,17/11/2024 21:05,Levi's Stadium,San Francisco 49ers,Seattle Seahawks,17 - 20,Loss,Seattle Seahawks,https://www.youtube.com/watch?v=VMPRSGk7bUg
12
+ 169,12,24/11/2024 21:25,Lambeau Field,Green Bay Packers,San Francisco 49ers,38 - 10,Loss,Green Bay Packers,https://www.youtube.com/watch?v=rtBtGh02HvA
13
+ 181,13,02/12/2024 01:20,Highmark Stadium,Buffalo Bills,San Francisco 49ers,35 - 10,Loss,Buffalo Bills,
14
+ 199,14,08/12/2024 21:25,Levi's Stadium,San Francisco 49ers,Chicago Bears,38 - 13,Win,Chicago Bears,https://www.youtube.com/watch?v=qmzSVmVNaFg
15
+ 224,15,13/12/2024 01:15,Levi's Stadium,San Francisco 49ers,Los Angeles Rams,6 - 12,Loss,Los Angeles Rams,https://www.youtube.com/watch?v=3JfiboQ6ZC8
16
+ 228,16,22/12/2024 21:25,Hard Rock Stadium,Miami Dolphins,San Francisco 49ers,29 - 17,Loss,Miami Dolphins,
17
+ 246,17,31/12/2024 01:15,Levi's Stadium,San Francisco 49ers,Detroit Lions,34 - 40,Loss,Detroit Lions,https://www.youtube.com/watch?v=AooNLyum7Ng
18
+ 257,18,05/01/2025 21:25,State Farm Stadium,Arizona Cardinals,San Francisco 49ers,47 - 24,Loss,Arizona Cardinals,https://www.youtube.com/watch?v=HfqGFWVdf9w
data/april_11_multimedia_data_collect/new_niners_players_with_highlights.csv ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name,headshot_url,instagram_url,highlight_video_url
2
+ Israel Abanikanda,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/wo7d9oli06eki4mnh3i8.png,https://www.instagram.com/izzygetsbusy__/?hl=en,
3
+ Brandon Aiyuk,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/khwofxjjwx0hcaigzxhw.png,https://www.instagram.com/brandonaiyuk/?hl=en,https://www.youtube.com/watch?v=TlAgJDpoOYk
4
+ Isaac Alarcon,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/mlhuuxukyusodzlfsmnv.jpg,https://www.instagram.com/isaac_algar/?hl=en,
5
+ Evan Anderson,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/ng7oamywxvqgkx6l6kqc.png,https://www.instagram.com/klamps8/?hl=en,
6
+ Tre Avery,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/a7kfv7xjftqlaqghk6sg,https://www.instagram.com/t.avery21/?hl=en,
7
+ Alex Barrett,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/bm0ay22de39d1enrxwiq.jpg,https://www.instagram.com/alex.barrett/?hl=en,
8
+ Ben Bartch,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/aqaslodzr7y0yvh5zzxa.jpg,https://www.instagram.com/bartchben/,
9
+ Robert Beal Jr.,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/jwwhmt5d8mi0vdb8nfic.jpg,https://www.instagram.com/oursf49ers/reel/C_CVQxxp2ti/,
10
+ Tatum Bethune,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/vl08pinqpmoubdf0zy5s.png,https://www.instagram.com/tatumx15/?hl=en,
11
+ Nick Bosa,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/utiwswqvpkiwtocijwhz.jpg,https://www.instagram.com/nbsmallerbear/?hl=en,https://www.youtube.com/watch?v=URvcwUEQYMw
12
+ Jake Brendel,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/svsb41aekpzt3m9snilw.jpg,https://www.instagram.com/jake.brendel/?hl=en,
13
+ Ji'Ayir Brown,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/urillpic02z774n09xvf.jpg,https://www.instagram.com/_tiig/?hl=en,
14
+ Tre Brown,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/dpemqrrweakt8dci3qfb,https://www.instagram.com/tre_brown25/?hl=en,
15
+ Spencer Burford,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/lje3ae25dntkdudp6eex.jpg,https://www.instagram.com/spence__74/?hl=en,
16
+ Jacob Cowing,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/lg7aao0umc21oioufqdx.png,https://www.instagram.com/jaycowing_/?hl=en,
17
+ Kalia Davis,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/rmnxj3sh7pyldmcxqe32.jpg,https://www.instagram.com/ucf.football/p/C3No6rTugDe/,https://www.youtube.com/watch?v=xE4jfmV7kGg
18
+ Jordan Elliott,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/xbyky8r2yuzusd2tmrw8.jpg,https://www.instagram.com/jordanelliott_nbcs/,
19
+ Luke Farrell,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/f2z7wpmx7ngtxcqqedla,https://www.instagram.com/lukefarrell89/?hl=en,
20
+ Russell Gage Jr.,https://static.www.nfl.com/image/private/t_thumb_squared_2x/f_auto/league/lkqhshv0dss1b9c6mdnj,https://www.instagram.com/w8k3mupruss/?hl=en,
21
+ Jonathan Garvin,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/rapfcxut6vu50vcevswe.png,https://www.instagram.com/thesfniners/p/DCmgF8KSw2A/?hl=en,
22
+ Luke Gifford,https://static.www.nfl.com/image/private/t_thumb_squared_2x/f_auto/league/mhdbbzj8amttnpd1nbpn,https://www.instagram.com/luke_gifford/?hl=en,
23
+ Kevin Givens,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/mstmgft0e0ancdzspboy.jpg,https://www.instagram.com/49ers/p/DAg_Pvpz1vV/,
24
+ Jalen Graham,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/pbl2a1ujopvwqrfct0jp.jpg,https://www.instagram.com/thexniners/p/CruR8IPrSV7/,
25
+ Richie Grant,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/szeswtvt6jmbu3so3phd,https://www.instagram.com/richiegrant_/?hl=en,
26
+ Renardo Green,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/v79obx9v7tgcjjlo6hiy.png,https://www.instagram.com/dondada.8/?hl=en,https://www.youtube.com/watch?v=iIooO2pTjt4
27
+ Yetur Gross-Matos,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/etuaajmvhbc5qkebgoow.jpg,https://www.instagram.com/__lobo99/?hl=en,
28
+ Isaac Guerendo,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/b66rpzr9iauo5rdprvka.png,https://www.instagram.com/isaac_guerendo/?hl=en,
29
+ Sebastian Gutierrez,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/am9sywgkga6jq65hvboe.jpg,https://www.instagram.com/sebastiandev1/?hl=en,
30
+ Matt Hennessy,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/zk8b21o8ncxnyu0gyf23,https://www.instagram.com/matt___hennessy/?hl=en,
31
+ Isaiah Hodgins,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/ax1oft9kqida0eokvtes.jpg,https://www.instagram.com/isaiahhodgins/?hl=en,
32
+ Drake Jackson,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/y2luyplzpvbzokyfbmla.jpg,https://www.instagram.com/thefreak/?hl=en,
33
+ Tarron Jackson,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/pnqrjp76bgpkmacxma3r,https://www.instagram.com/tarron_jackson/?hl=en,
34
+ Jauan Jennings,https://static.clubs.nfl.com/image/private/t_thumb_squared_2x/f_auto/49ers/wxsq7f4ajmhfs6tn4dg2.jpg,https://www.instagram.com/u_aintjj/?hl=en,https://www.youtube.com/watch?v=kFkNlmUQVu0
35
+ Quindell Johnson,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/uga90lawcfxjcqna7opb,https://www.instagram.com/p/DFGnwNlymc9/,https://www.youtube.com/watch?v=VU2gRl8rgqw
36
+ Zack Johnson,https://static.www.nfl.com/image/private/t_thumb_squared_2x/f_auto/league/n4hy8uzhcl5cl0ricwoa,https://www.instagram.com/zack.johnson.68/,https://www.youtube.com/watch?v=yDAcyWJi6qQ
37
+ Mac Jones,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/pedpdxybeus7mrovsoko,https://www.instagram.com/macjones_10/?hl=en,https://www.youtube.com/watch?v=TylWJVa84VE
38
+ Kyle Juszczyk,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/ywdz6y2pfzndqgmxxfbj.jpg,https://www.instagram.com/juicecheck44/?hl=en,https://www.youtube.com/watch?v=PZCVP0l8uVk
39
+ George Kittle,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/elheepobwn1ahqwtfwat.jpg,https://www.instagram.com/gkittle/?hl=en,https://www.youtube.com/watch?v=RzMVbATV95w
40
+ Deommodore Lenoir,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/f9fnuvbpcxku9ibt9qs8.jpg,https://www.instagram.com/deommo.lenoir/?hl=en,https://www.youtube.com/watch?v=h-uvula5tNo
41
+ Chase Lucas,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/gjeejt5pbagnipodhdz4.jpg,https://www.instagram.com/chase_lucas24/?hl=en,
42
+ Darrell Luter Jr.,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/g5rohvooet9g5w7rlhrh.jpg,https://www.instagram.com/_d.ray4k/?hl=en,
43
+ Jaylen Mahoney,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/yv9inbia05nyxppuajv0.png,https://www.instagram.com/jaylenmahoney_/,
44
+ Christian McCaffrey,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/a8fka6shomakkbllljgt.jpg,https://www.instagram.com/christianmccaffrey/?hl=en,https://www.youtube.com/watch?v=cu78Okf6VSo
45
+ Jalen McKenzie,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/gffxpns1ayxyjccymr6d.jpg,https://www.instagram.com/jay_peez70/?hl=en,
46
+ Colton McKivitz,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/jugvoxjabgsbcfbuqfew.jpg,https://www.instagram.com/cmckivitz53/?hl=en,
47
+ Jake Moody,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/ygputwsbutemszr8xxkw.jpg,https://www.instagram.com/jmoods_/?hl=en,
48
+ Tanner Mordecai,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/y8gipodnkeapgmegnxs1.png,https://www.instagram.com/t_mordecai/?hl=en,
49
+ Malik Mustapha,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/eyrgxgpbrycd9x8glk0j.png,https://www.instagram.com/stapha/,
50
+ Siran Neal,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/muhthfs6owkkpsyop1e6,https://www.instagram.com/siranneal/?hl=en,
51
+ Drake Nugent,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/qyb4kurtbv9uflmupfnc.png,https://www.instagram.com/drakenugent9/?hl=en,
52
+ George Odum,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/sqpxhoycdpegkyjn6ooc.jpg,https://www.instagram.com/george.w.odum/?hl=en,
53
+ Sam Okuayinonu,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/fyolr2zk2nplfbdze75l.jpg,https://www.instagram.com/sam.ok97/?hl=en,
54
+ Terique Owens,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/okhin0uwdon2nimvbtwd.png,https://www.instagram.com/terique_owens/?hl=en,
55
+ Ricky Pearsall,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/to7q7w4kjiajseb4ljcx.png,https://www.instagram.com/ricky.pearsall/?hl=en,
56
+ Jason Pinnock,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/on29awacb9frijyggtgt,https://www.instagram.com/jpinny15/?hl=en,
57
+ Austen Pleasants,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/wsbs5emdyzuc1sudbcls.png,https://www.instagram.com/oursf49ers/p/DDr48a4PdcO/?hl=en,
58
+ Mason Pline,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/mvjlaxpu8bu33ohspqot.png,https://www.instagram.com/mpline12/?hl=en,
59
+ Dominick Puni,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/tq1snozjpjrgrjoflrfg.png,https://www.instagram.com/dompuni/?hl=en,
60
+ Brock Purdy,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/wt42ykvuxpngm4m1axxn.png,https://www.instagram.com/brock.purdy13/?hl=en,https://www.youtube.com/watch?v=O-ft3FPYwiA
61
+ Curtis Robinson,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/x3xyzgeapcafr0gicl5y.jpg,https://www.instagram.com/curtis_robinsonn/?hl=en,https://www.youtube.com/watch?v=8wyHHbXoFZI
62
+ Demarcus Robinson,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/lakf0xue1qqb7ed4p6ge,https://www.instagram.com/demarcusrobinson/?hl=en,https://www.youtube.com/watch?v=1vwP8vs-mXI
63
+ Patrick Taylor Jr.,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/hochjncae0hqcoveuexq.jpg,https://www.instagram.com/patricktaylor/?hl=en,
64
+ Trent Taylor,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/j8lom4fnsveujt8hykef.jpg,https://www.instagram.com/trent5taylor/?hl=en,https://www.youtube.com/watch?v=kiEy31sL0co
65
+ Tre Tomlinson,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/n5pfv126xw0psc0d1ydz,https://www.instagram.com/trevius/?hl=en,
66
+ Jake Tonges,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/la3z5y6u7tix6rnq2m5l.jpg,https://www.instagram.com/jaketonges/?hl=en,
67
+ Fred Warner,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/zo4ftfar4bshrbipceuk.jpg,https://www.instagram.com/fred_warner/?hl=en,https://www.youtube.com/watch?v=IwBlFktlNwY
68
+ Jon Weeks,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/d9fvm74pu4vyinveopbf,https://www.instagram.com/jonweeks46/?hl=en,https://www.youtube.com/watch?v=FO_iJ1IEOQU
69
+ DaShaun White,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/mjnpmkw3ar6zcj2hxxzd,https://www.instagram.com/demoeto/?hl=en,https://www.youtube.com/watch?v=mk4aHkdYaUQ
70
+ Trent Williams,https://static.clubs.nfl.com/image/private/t_thumb_squared_2x/f_auto/49ers/bnq8i5urjualxre5caqz.jpg,https://www.instagram.com/trentwilliams71/?hl=en,https://www.youtube.com/watch?v=k7FDcmcawL0
71
+ Brayden Willis,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/xmo7hsuho3ehmsjwvthc.jpg,https://www.instagram.com/brayden_willis/?hl=en,https://www.youtube.com/watch?v=3KNc8s3Xwos
72
+ Dee Winters,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/ggf13riajo0kn0y6kbu0.jpg,https://www.instagram.com/dwints_/?hl=en,
73
+ Mitch Wishnowsky,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/mkf1xr1x8nr9l55oq72a.jpg,https://www.instagram.com/mitchwish3/?hl=en,https://www.youtube.com/watch?v=ZkH6eWs5Yd8
74
+ Nick Zakelj,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/o92tva22zezdz4aksadl.jpg,https://www.instagram.com/nickzakelj/?hl=en,
data/april_11_multimedia_data_collect/new_team_highlights.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/april_11_multimedia_data_collect/nfl-2024-san-francisco-49ers-with-results.csv ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Match Number,Round Number,Date,Location,Home Team,Away Team,Result,game_result
2
+ 1,1,10/09/2024 00:15,Levi's Stadium,San Francisco 49ers,New York Jets,32 - 19,Win
3
+ 28,2,15/09/2024 17:00,U.S. Bank Stadium,Minnesota Vikings,San Francisco 49ers,23 - 17,Loss
4
+ 38,3,22/09/2024 20:25,SoFi Stadium,Los Angeles Rams,San Francisco 49ers,27 - 24,Loss
5
+ 55,4,29/09/2024 20:05,Levi's Stadium,San Francisco 49ers,New England Patriots,30 - 13,Win
6
+ 70,5,06/10/2024 20:05,Levi's Stadium,San Francisco 49ers,Arizona Cardinals,23 - 24,Loss
7
+ 92,6,11/10/2024 00:15,Lumen Field,Seattle Seahawks,San Francisco 49ers,24 - 36,Win
8
+ 96,7,20/10/2024 20:25,Levi's Stadium,San Francisco 49ers,Kansas City Chiefs,18 - 28,Loss
9
+ 109,8,28/10/2024 00:20,Levi's Stadium,San Francisco 49ers,Dallas Cowboys,30 - 24,Win
10
+ 149,10,10/11/2024 18:00,Raymond James Stadium,Tampa Bay Buccaneers,San Francisco 49ers,20 - 23,Win
11
+ 158,11,17/11/2024 21:05,Levi's Stadium,San Francisco 49ers,Seattle Seahawks,17 - 20,Loss
12
+ 169,12,24/11/2024 21:25,Lambeau Field,Green Bay Packers,San Francisco 49ers,38 - 10,Loss
13
+ 181,13,02/12/2024 01:20,Highmark Stadium,Buffalo Bills,San Francisco 49ers,35 - 10,Loss
14
+ 199,14,08/12/2024 21:25,Levi's Stadium,San Francisco 49ers,Chicago Bears,38 - 13,Win
15
+ 224,15,13/12/2024 01:15,Levi's Stadium,San Francisco 49ers,Los Angeles Rams,6 - 12,Loss
16
+ 228,16,22/12/2024 21:25,Hard Rock Stadium,Miami Dolphins,San Francisco 49ers,29 - 17,Loss
17
+ 246,17,31/12/2024 01:15,Levi's Stadium,San Francisco 49ers,Detroit Lions,34 - 40,Loss
18
+ 257,18,05/01/2025 21:25,State Farm Stadium,Arizona Cardinals,San Francisco 49ers,47 - 24,Loss
data/april_11_multimedia_data_collect/niners_players_with_highlights.csv ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name,headshot_url,instagram_url,highlight_video_url
2
+ Israel Abanikanda,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/wo7d9oli06eki4mnh3i8.png,https://www.instagram.com/izzygetsbusy__/?hl=en,
3
+ Brandon Aiyuk,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/khwofxjjwx0hcaigzxhw.png,https://www.instagram.com/brandonaiyuk/?hl=en,https://www.youtube.com/watch?v=TlAgJDpoOYk
4
+ Isaac Alarcon,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/mlhuuxukyusodzlfsmnv.jpg,https://www.instagram.com/isaac_algar/?hl=en,
5
+ Evan Anderson,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/ng7oamywxvqgkx6l6kqc.png,https://www.instagram.com/klamps8/?hl=en,
6
+ Tre Avery,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/a7kfv7xjftqlaqghk6sg,https://www.instagram.com/t.avery21/?hl=en,
7
+ Alex Barrett,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/bm0ay22de39d1enrxwiq.jpg,https://www.instagram.com/alex.barrett/?hl=en,
8
+ Ben Bartch,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/aqaslodzr7y0yvh5zzxa.jpg,https://www.instagram.com/bartchben/,
9
+ Robert Beal Jr.,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/jwwhmt5d8mi0vdb8nfic.jpg,https://www.instagram.com/oursf49ers/reel/C_CVQxxp2ti/,
10
+ Tatum Bethune,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/vl08pinqpmoubdf0zy5s.png,https://www.instagram.com/tatumx15/?hl=en,
11
+ Nick Bosa,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/utiwswqvpkiwtocijwhz.jpg,https://www.instagram.com/nbsmallerbear/?hl=en,https://www.youtube.com/watch?v=URvcwUEQYMw
12
+ Jake Brendel,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/svsb41aekpzt3m9snilw.jpg,https://www.instagram.com/jake.brendel/?hl=en,
13
+ Ji'Ayir Brown,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/urillpic02z774n09xvf.jpg,https://www.instagram.com/_tiig/?hl=en,
14
+ Tre Brown,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/dpemqrrweakt8dci3qfb,https://www.instagram.com/tre_brown25/?hl=en,
15
+ Spencer Burford,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/lje3ae25dntkdudp6eex.jpg,https://www.instagram.com/spence__74/?hl=en,
16
+ Jacob Cowing,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/lg7aao0umc21oioufqdx.png,https://www.instagram.com/jaycowing_/?hl=en,
17
+ Kalia Davis,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/rmnxj3sh7pyldmcxqe32.jpg,https://www.instagram.com/ucf.football/p/C3No6rTugDe/,https://www.youtube.com/watch?v=xE4jfmV7kGg
18
+ Jordan Elliott,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/xbyky8r2yuzusd2tmrw8.jpg,https://www.instagram.com/jordanelliott_nbcs/,
19
+ Luke Farrell,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/f2z7wpmx7ngtxcqqedla,https://www.instagram.com/lukefarrell89/?hl=en,
20
+ Russell Gage Jr.,https://static.www.nfl.com/image/private/t_thumb_squared_2x/f_auto/league/lkqhshv0dss1b9c6mdnj,https://www.instagram.com/w8k3mupruss/?hl=en,
21
+ Jonathan Garvin,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/rapfcxut6vu50vcevswe.png,https://www.instagram.com/thesfniners/p/DCmgF8KSw2A/?hl=en,
22
+ Luke Gifford,https://static.www.nfl.com/image/private/t_thumb_squared_2x/f_auto/league/mhdbbzj8amttnpd1nbpn,https://www.instagram.com/luke_gifford/?hl=en,
23
+ Kevin Givens,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/mstmgft0e0ancdzspboy.jpg,https://www.instagram.com/49ers/p/DAg_Pvpz1vV/,
24
+ Jalen Graham,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/pbl2a1ujopvwqrfct0jp.jpg,https://www.instagram.com/thexniners/p/CruR8IPrSV7/,
25
+ Richie Grant,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/szeswtvt6jmbu3so3phd,https://www.instagram.com/richiegrant_/?hl=en,
26
+ Renardo Green,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/v79obx9v7tgcjjlo6hiy.png,https://www.instagram.com/dondada.8/?hl=en,https://www.youtube.com/watch?v=iIooO2pTjt4
27
+ Yetur Gross-Matos,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/etuaajmvhbc5qkebgoow.jpg,https://www.instagram.com/__lobo99/?hl=en,
28
+ Isaac Guerendo,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/b66rpzr9iauo5rdprvka.png,https://www.instagram.com/isaac_guerendo/?hl=en,
29
+ Sebastian Gutierrez,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/am9sywgkga6jq65hvboe.jpg,https://www.instagram.com/sebastiandev1/?hl=en,
30
+ Matt Hennessy,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/zk8b21o8ncxnyu0gyf23,https://www.instagram.com/matt___hennessy/?hl=en,
31
+ Isaiah Hodgins,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/ax1oft9kqida0eokvtes.jpg,https://www.instagram.com/isaiahhodgins/?hl=en,
32
+ Drake Jackson,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/y2luyplzpvbzokyfbmla.jpg,https://www.instagram.com/thefreak/?hl=en,
33
+ Tarron Jackson,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/pnqrjp76bgpkmacxma3r,https://www.instagram.com/tarron_jackson/?hl=en,
34
+ Jauan Jennings,https://static.clubs.nfl.com/image/private/t_thumb_squared_2x/f_auto/49ers/wxsq7f4ajmhfs6tn4dg2.jpg,https://www.instagram.com/u_aintjj/?hl=en,https://www.youtube.com/watch?v=kFkNlmUQVu0
35
+ Quindell Johnson,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/uga90lawcfxjcqna7opb,https://www.instagram.com/p/DFGnwNlymc9/,https://www.youtube.com/watch?v=VU2gRl8rgqw
36
+ Zack Johnson,https://static.www.nfl.com/image/private/t_thumb_squared_2x/f_auto/league/n4hy8uzhcl5cl0ricwoa,https://www.instagram.com/zack.johnson.68/,https://www.youtube.com/watch?v=yDAcyWJi6qQ
37
+ Mac Jones,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/pedpdxybeus7mrovsoko,https://www.instagram.com/macjones_10/?hl=en,https://www.youtube.com/watch?v=TylWJVa84VE
38
+ Kyle Juszczyk,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/ywdz6y2pfzndqgmxxfbj.jpg,https://www.instagram.com/juicecheck44/?hl=en,https://www.youtube.com/watch?v=PZCVP0l8uVk
39
+ George Kittle,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/elheepobwn1ahqwtfwat.jpg,https://www.instagram.com/gkittle/?hl=en,https://www.youtube.com/watch?v=RzMVbATV95w
40
+ Deommodore Lenoir,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/f9fnuvbpcxku9ibt9qs8.jpg,https://www.instagram.com/deommo.lenoir/?hl=en,https://www.youtube.com/watch?v=h-uvula5tNo
41
+ Chase Lucas,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/gjeejt5pbagnipodhdz4.jpg,https://www.instagram.com/chase_lucas24/?hl=en,
42
+ Darrell Luter Jr.,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/g5rohvooet9g5w7rlhrh.jpg,https://www.instagram.com/_d.ray4k/?hl=en,
43
+ Jaylen Mahoney,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/yv9inbia05nyxppuajv0.png,https://www.instagram.com/jaylenmahoney_/,
44
+ Christian McCaffrey,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/a8fka6shomakkbllljgt.jpg,https://www.instagram.com/christianmccaffrey/?hl=en,https://www.youtube.com/watch?v=cu78Okf6VSo
45
+ Jalen McKenzie,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/gffxpns1ayxyjccymr6d.jpg,https://www.instagram.com/jay_peez70/?hl=en,
46
+ Colton McKivitz,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/jugvoxjabgsbcfbuqfew.jpg,https://www.instagram.com/cmckivitz53/?hl=en,
47
+ Jake Moody,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/ygputwsbutemszr8xxkw.jpg,https://www.instagram.com/jmoods_/?hl=en,
48
+ Tanner Mordecai,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/y8gipodnkeapgmegnxs1.png,https://www.instagram.com/t_mordecai/?hl=en,
49
+ Malik Mustapha,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/eyrgxgpbrycd9x8glk0j.png,https://www.instagram.com/stapha/,
50
+ Siran Neal,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/muhthfs6owkkpsyop1e6,https://www.instagram.com/siranneal/?hl=en,
51
+ Drake Nugent,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/qyb4kurtbv9uflmupfnc.png,https://www.instagram.com/drakenugent9/?hl=en,
52
+ George Odum,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/sqpxhoycdpegkyjn6ooc.jpg,https://www.instagram.com/george.w.odum/?hl=en,
53
+ Sam Okuayinonu,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/fyolr2zk2nplfbdze75l.jpg,https://www.instagram.com/sam.ok97/?hl=en,
54
+ Terique Owens,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/okhin0uwdon2nimvbtwd.png,https://www.instagram.com/terique_owens/?hl=en,
55
+ Ricky Pearsall,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/to7q7w4kjiajseb4ljcx.png,https://www.instagram.com/ricky.pearsall/?hl=en,
56
+ Jason Pinnock,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/on29awacb9frijyggtgt,https://www.instagram.com/jpinny15/?hl=en,
57
+ Austen Pleasants,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/wsbs5emdyzuc1sudbcls.png,https://www.instagram.com/oursf49ers/p/DDr48a4PdcO/?hl=en,
58
+ Mason Pline,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/mvjlaxpu8bu33ohspqot.png,https://www.instagram.com/mpline12/?hl=en,
59
+ Dominick Puni,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/tq1snozjpjrgrjoflrfg.png,https://www.instagram.com/dompuni/?hl=en,
60
+ Brock Purdy,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_png/49ers/wt42ykvuxpngm4m1axxn.png,https://www.instagram.com/brock.purdy13/?hl=en,https://www.youtube.com/watch?v=O-ft3FPYwiA
61
+ Curtis Robinson,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/x3xyzgeapcafr0gicl5y.jpg,https://www.instagram.com/curtis_robinsonn/?hl=en,https://www.youtube.com/watch?v=8wyHHbXoFZI
62
+ Demarcus Robinson,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/lakf0xue1qqb7ed4p6ge,https://www.instagram.com/demarcusrobinson/?hl=en,https://www.youtube.com/watch?v=1vwP8vs-mXI
63
+ Patrick Taylor Jr.,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/hochjncae0hqcoveuexq.jpg,https://www.instagram.com/patricktaylor/?hl=en,
64
+ Trent Taylor,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/j8lom4fnsveujt8hykef.jpg,https://www.instagram.com/trent5taylor/?hl=en,https://www.youtube.com/watch?v=kiEy31sL0co
65
+ Tre Tomlinson,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/n5pfv126xw0psc0d1ydz,https://www.instagram.com/trevius/?hl=en,
66
+ Jake Tonges,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/la3z5y6u7tix6rnq2m5l.jpg,https://www.instagram.com/jaketonges/?hl=en,
67
+ Fred Warner,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/zo4ftfar4bshrbipceuk.jpg,https://www.instagram.com/fred_warner/?hl=en,https://www.youtube.com/watch?v=IwBlFktlNwY
68
+ Jon Weeks,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/d9fvm74pu4vyinveopbf,https://www.instagram.com/jonweeks46/?hl=en,https://www.youtube.com/watch?v=FO_iJ1IEOQU
69
+ DaShaun White,https://static.www.nfl.com/image/upload/t_thumb_squared_2x/f_auto/league/mjnpmkw3ar6zcj2hxxzd,https://www.instagram.com/demoeto/?hl=en,https://www.youtube.com/watch?v=mk4aHkdYaUQ
70
+ Trent Williams,https://static.clubs.nfl.com/image/private/t_thumb_squared_2x/f_auto/49ers/bnq8i5urjualxre5caqz.jpg,https://www.instagram.com/trentwilliams71/?hl=en,https://www.youtube.com/watch?v=k7FDcmcawL0
71
+ Brayden Willis,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/xmo7hsuho3ehmsjwvthc.jpg,https://www.instagram.com/brayden_willis/?hl=en,https://www.youtube.com/watch?v=3KNc8s3Xwos
72
+ Dee Winters,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/ggf13riajo0kn0y6kbu0.jpg,https://www.instagram.com/dwints_/?hl=en,
73
+ Mitch Wishnowsky,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/mkf1xr1x8nr9l55oq72a.jpg,https://www.instagram.com/mitchwish3/?hl=en,https://www.youtube.com/watch?v=ZkH6eWs5Yd8
74
+ Nick Zakelj,https://static.clubs.nfl.com/image/upload/t_thumb_squared_2x/f_auto/49ers/o92tva22zezdz4aksadl.jpg,https://www.instagram.com/nickzakelj/?hl=en,