develope_kkyu
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 3 본문
https://developerkkyu37.tistory.com/70
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 2
https://developerkkyu37.tistory.com/69 [Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기(배포) - 1 MLB-StatsAPI와 streamlit 라이브러리를 이용해서 mlb 기록확인을 할 수 있는 사이트를 만들어보려고 한다. stream
developerkkyu37.tistory.com
MLB 시범경기가 시작하긴 했지만 아직 정식으로 시즌이 시작하지 않았기 때문에 오늘의 경기결과를 보여주는 Home 페이지는 나중에 제작하기로 하고 일단 경기를 검색할 수 있는 Scores페이지를 만들어보도록 한다.
처음 목표는 사이드바를 만들고 날짜 선택과 팀 선택을 만드는 것이다.
python 기본 모듈인 datetime을 사용한다.
from datetime import datetime
다음으로 날짜를 입력할 수 있는 사이드바를 만든다. date_input은 날짜를 선택할 수 있는 UI함수이다. date에 선택한 날짜가 담긴다.
date = st.sidebar.date_input('날짜 선택')
MLB에는 30개의 팀이 있는데 2개의 리그로 나뉘어지고 또 이 리그는 3개의 지구로 나뉘게 된다. 따라서 팀선택을 위해서는 먼저 리그를 선택하고 다시 그 리그에 대한 지구를 선택해야한다.
league = st.sidebar.selectbox('리그 선택',('내셔널 리그', '아메리칸 리그'))
if league == '내셔널 리그':
region = st.sidebar.selectbox('지구 선택',('동부', '중부', '서부'))
if region == '동부':
team = st.sidebar.selectbox('팀선택', ('애틀랜타 브레이브스', '마이애미 말린스', '뉴욕 매츠', '필라델피아 필리스', '워싱턴 내셔널스'))
elif region == '중부':
team = st.sidebar.selectbox('팀선택', ('시카고 컵스', '신시내티 레즈', '밀워키 브루어스', '피츠버그 파이리츠', '세인트루이스 카디널스'))
elif region == '서부':
team = st.sidebar.selectbox('팀선택', ('애리조나 다이아몬드백스', '콜로라도 로키스', '로스앤젤레스 다저스', '샌디에이고 파드리스', '샌프란시스코 자이언츠'))
elif league == '아메리칸 리그':
region = st.sidebar.selectbox('지구 선택',('동부', '중부', '서부'))
if region == '동부':
team = st.sidebar.selectbox('팀선택', ('볼티모어 오리올스', '보스턴 레드삭스', '뉴욕 양키스', '템파베이 레이스', '토론토 블루제이스'))
elif region == '중부':
team = st.sidebar.selectbox('팀선택', ('시카고 화이트삭스', '클리블랜드 가디언스', '디트로이트 타이거스', '캔자스시티 로열스', '미네소타 트윈스'))
elif region == '서부':
team = st.sidebar.selectbox('팀선택', ('휴스턴 애스트로스', '로스앤젤레스 에인절스', '오클랜드 애슬레틱스', '시애틀 매리너스', '텍사스 레인저스'))
MLB-StatsAPI에서 원한는 팀 경기 결과를 검색하기 위해서는 날짜와 팀id를 알아야한다.
팀 id는 이렇게 되있기 때문에 입력받은 값은 팀 id로 바꿔주어야한다.
지구 | 구단명 | Team_Id |
아메리칸 리그 | ||
동부 | 볼티모어 오리올스 (Baltimore Orioles) | 110 |
보스턴 레드삭스(Boston Red Sox) | 111 | |
뉴욕 양키스(Newyork Yankees) | 147 | |
템파베이 레이스 (Tampa Bay Rays) | 139 | |
토론토 블루제이스 (Toronto Blue Jays) | 141 | |
중부 | 시카고 화이트삭스 (Chicago White Sox) | 145 |
클리블랜드 가디언즈 (Cleveland Guardians) | 114 | |
디트로이트 타이거즈 (Detroit Tigers) | 116 | |
캔자스시티 로열스 (Kansas City Royals) | 118 | |
미네소타 트윈스 (Minnesota Twins) | 142 | |
서부 | 휴스턴 애스트로스 (Houston Astros) | 117 |
로스엔젤레스 에인절스 (Los Angeles Angels) | 108 | |
오클랜드 애슬레틱스 (Oakland Athletics) | 133 | |
시애틀 매리너스 (Seattle Mariners) | 136 | |
텍사스 레인저스 (Texas Rangers) | 140 | |
내셔널 리그 | ||
동부 | 애틀란타 브레이브스 (Atlanta Braves) | 144 |
마이애미 말린스 (Miami Marlins) | 146 | |
뉴욕 메츠 (New York Mets) | 121 | |
필라델피아 필리스 (Philadelphia Phillies) | 143 | |
워싱턴 내셔널스 (Washington Nationals) | 120 | |
중부 | 시카고 컵스 (Chicago Cubs) | 112 |
신시내티 레즈 (Cincinnati Reds) | 113 | |
밀워키 브루어스 (Milwaukee Brewers) | 158 | |
피츠버그 파이리츠 (Pittsburgh Pirates) | 134 | |
세인트루이스 카디널스 (St. Louis Cardinals) | 138 | |
서부 | 애리조나 다이아몬드백스 (Arizona Diamondbacks) | 109 |
로스엔젤레스 다저스 (Los Angeles Dodgers) | 119 | |
콜로라도 로키스 (Colorado Rockies) | 115 | |
샌디에이고 파드리스 (San Diego Padres) | 135 | |
샌프란시스코 자이언츠 (San Francisco Giants) | 137 |
표 출처 : https://minding-deep-learning.tistory.com/64
[MLB Stats API] 파이썬 패키지로 MLB Stats API 사용해보기
Fangraph나 MLB savant 홈페이지에서 직접 csv, DB파일을 다운로드 받는 것이 아닌 MLB서버에 연결된 API로 손쉽게 데이터를 구할 수 있는 방법을 야구공작소 글을 보며 알게되었다. 그 중 파이썬으로 API
minding-deep-learning.tistory.com
if team == '애틀랜타 브레이브스':
team_id = 144
elif team == '마이애미 말린스':
team_id = 146
elif team == '뉴욕 매츠':
team_id = 121
elif team == '필라델피아 필리스':
team_id = 143
elif team == '워싱턴 내셔널스':
team_id = 120
elif team == '시카고 컵스':
team_id = 112
elif team == '신시내티 레즈':
team_id = 113
elif team == '밀워키 브루어스':
team_id = 158
elif team == '피츠버그 파이리츠':
team_id = 134
elif team == '세인트루이스 카디널스':
team_id = 138
elif team == '애리조나 다이아몬드백스':
team_id = 109
elif team == '콜로라도 로키스':
team_id = 115
elif team == '로스앤젤레스 다저스':
team_id = 119
elif team == '샌디에이고 파드리스':
team_id = 135
elif team == '샌프란시스코 자이언츠':
team_id = 137
elif team == '볼티모어 오리올스':
team_id = 110
elif team == '보스턴 레드삭스':
team_id = 111
elif team == '뉴욕 양키스':
team_id = 147
elif team == '템파베이 레이스':
team_id = 139
elif team == '토론토 블루제이스':
team_id = 141
elif team == '시카고 화이트삭스':
team_id = 145
elif team == '클리블랜드 가디언스':
team_id = 114
elif team == '디트로이트 타이거스':
team_id = 116
elif team == '캔자스시티 로열스':
team_id = 118
elif team == '미네소타 트윈스':
team_id = 142
elif team == '휴스턴 애스트로스':
team_id = 117
elif team == '로스앤젤레스 에인절스':
team_id = 108
elif team == '오클랜드 애슬레틱스':
team_id = 133
elif team == '시애틀 매리너스':
team_id = 136
elif team == '텍사스 레인저스':
team_id = 140
날짜도 미국식으로 바꿔주어야 하기 때문에 앞서 입력 받은 date를 변환해준다. strftime 함수를 이용해 날짜 형식을 바꿔준다.
date = date.strftime("%m/%d/%Y")
scores = statsapi.schedule(start_date=date,team=team_id)
2022년 8월 31일 샌디에이고의 경기 정보
[
0:{
"game_id":662033
"game_datetime":"2022-08-31T19:45:00Z"
"game_date":"2022-08-31"
"game_type":"R"
"status":"Final"
"away_name":"San Diego Padres"
"home_name":"San Francisco Giants"
"away_id":135
"home_id":137
"doubleheader":"N"
"game_num":1
"home_probable_pitcher":"Alex Wood"
"away_probable_pitcher":"Joe Musgrove"
"home_pitcher_note":""
"away_pitcher_note":""
"away_score":5
"home_score":4
"current_inning":9
"inning_state":"Bottom"
"venue_id":2395
"venue_name":"Oracle Park"
"national_broadcasts":[]
"series_status":"SD wins 3-0"
"winning_team":"San Diego Padres"
"losing_team":"San Francisco Giants"
"winning_pitcher":"Joe Musgrove"
"losing_pitcher":"Alex Wood"
"save_pitcher":"Josh Hader"
"summary":"2022-08-31 - San Diego Padres (5) @ San Francisco Giants (4) (Final)"
}
]
'Python' 카테고리의 다른 글
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 5 (0) | 2023.03.04 |
---|---|
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 4 (0) | 2023.02.27 |
[오류 해결] TypeError: unsupported operand type(s) for &: ‘str’ and ‘str’ (0) | 2023.02.19 |
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 2 (0) | 2023.02.11 |
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기(배포) - 1 (0) | 2023.02.09 |