refactor: flatten app/scoreboard/ subpackage and rename files for clarity
This commit is contained in:
73
app/standings.py
Normal file
73
app/standings.py
Normal file
@@ -0,0 +1,73 @@
|
||||
import logging
|
||||
import sqlite3
|
||||
|
||||
import requests
|
||||
|
||||
from app.config import DB_PATH
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def create_standings_table(conn):
|
||||
cursor = conn.cursor()
|
||||
cursor.execute("""
|
||||
CREATE TABLE IF NOT EXISTS standings (
|
||||
team_common_name TEXT,
|
||||
league_sequence INTEGER,
|
||||
league_l10_sequence INTEGER
|
||||
)
|
||||
""")
|
||||
conn.commit()
|
||||
|
||||
|
||||
def truncate_standings_table(conn):
|
||||
cursor = conn.cursor()
|
||||
cursor.execute("DELETE FROM standings")
|
||||
conn.commit()
|
||||
|
||||
|
||||
def insert_standings_info(conn, standings_info):
|
||||
cursor = conn.cursor()
|
||||
for team in standings_info:
|
||||
cursor.execute(
|
||||
"""
|
||||
INSERT INTO standings (team_common_name, league_sequence, league_l10_sequence)
|
||||
VALUES (?, ?, ?)
|
||||
""",
|
||||
(
|
||||
team["team_common_name"],
|
||||
team["league_sequence"],
|
||||
team["league_l10_sequence"],
|
||||
),
|
||||
)
|
||||
conn.commit()
|
||||
|
||||
|
||||
def extract_standings_info():
|
||||
url = "https://api-web.nhle.com/v1/standings/now"
|
||||
try:
|
||||
response = requests.get(url, timeout=10)
|
||||
response.raise_for_status()
|
||||
standings_data = response.json()
|
||||
standings_info = []
|
||||
for team in standings_data.get("standings", []):
|
||||
team_info = {
|
||||
"team_common_name": team["teamCommonName"]["default"],
|
||||
"league_sequence": team["leagueSequence"],
|
||||
"league_l10_sequence": team["leagueL10Sequence"],
|
||||
}
|
||||
standings_info.append(team_info)
|
||||
return standings_info
|
||||
except requests.RequestException as e:
|
||||
logger.error("Failed to fetch standings: %s", e)
|
||||
return None
|
||||
|
||||
|
||||
def update_nhl_standings():
|
||||
conn = sqlite3.connect(DB_PATH)
|
||||
create_standings_table(conn)
|
||||
truncate_standings_table(conn)
|
||||
standings_info = extract_standings_info()
|
||||
if standings_info:
|
||||
insert_standings_info(conn, standings_info)
|
||||
conn.close()
|
||||
Reference in New Issue
Block a user