80 lines
2.4 KiB
Python
80 lines
2.4 KiB
Python
"""
|
|
List Matches for Sept 13, 2025 (Top Leagues)
|
|
============================================
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import json
|
|
import psycopg2
|
|
from psycopg2.extras import RealDictCursor
|
|
from datetime import datetime
|
|
|
|
project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
sys.path.insert(0, project_root)
|
|
|
|
def get_clean_dsn() -> str:
|
|
return "postgresql://suggestbet:SuGGesT2026SecuRe@localhost:15432/boilerplate_db"
|
|
|
|
def list_matches():
|
|
print("📅 Matches on Sept 13, 2025 (Top Leagues)")
|
|
print("="*60)
|
|
|
|
# Load Top Leagues
|
|
leagues_path = os.path.join(project_root, "top_leagues.json")
|
|
try:
|
|
with open(leagues_path, 'r') as f:
|
|
top_leagues = json.load(f)
|
|
league_ids = tuple(str(lid) for lid in top_leagues)
|
|
print(f"📋 Loaded {len(top_leagues)} top leagues.")
|
|
except Exception as e:
|
|
print(f"❌ Error loading top_leagues.json: {e}")
|
|
return
|
|
|
|
# Date Range
|
|
start_dt = datetime(2025, 9, 13, 0, 0, 0)
|
|
end_dt = datetime(2025, 9, 13, 23, 59, 59)
|
|
start_ts = int(start_dt.timestamp() * 1000)
|
|
end_ts = int(end_dt.timestamp() * 1000)
|
|
|
|
dsn = get_clean_dsn()
|
|
conn = psycopg2.connect(dsn)
|
|
cur = conn.cursor(cursor_factory=RealDictCursor)
|
|
|
|
# Fetch Matches
|
|
query = """
|
|
SELECT m.id, m.match_name, m.home_team_id, m.away_team_id,
|
|
m.mst_utc, m.league_id, m.status, m.score_home, m.score_away,
|
|
t1.name as home_team, t2.name as away_team,
|
|
l.name as league_name
|
|
FROM matches m
|
|
LEFT JOIN teams t1 ON m.home_team_id = t1.id
|
|
LEFT JOIN teams t2 ON m.away_team_id = t2.id
|
|
LEFT JOIN leagues l ON m.league_id = l.id
|
|
WHERE m.mst_utc BETWEEN %s AND %s
|
|
AND m.league_id IN %s
|
|
ORDER BY m.mst_utc ASC
|
|
"""
|
|
|
|
cur.execute(query, (start_ts, end_ts, league_ids))
|
|
rows = cur.fetchall()
|
|
|
|
print(f"📊 Found {len(rows)} matches.")
|
|
print("-" * 60)
|
|
|
|
for r in rows:
|
|
time_str = datetime.fromtimestamp(r['mst_utc']/1000).strftime('%H:%M')
|
|
score = f"{r['score_home']} - {r['score_away']}" if r['score_home'] is not None else "v"
|
|
status = r['status']
|
|
|
|
print(f"⚽ {time_str} | {r['league_name']}")
|
|
print(f" {r['home_team']} {score} {r['away_team']} ({status})")
|
|
print(f" ID: {r['id']}")
|
|
print("-" * 40)
|
|
|
|
cur.close()
|
|
conn.close()
|
|
|
|
if __name__ == "__main__":
|
|
list_matches()
|