iptv/M3U8/scrapers/utils/config.py

53 lines
1.4 KiB
Python
Raw Normal View History

2025-09-19 15:44:02 -04:00
import json
2025-09-24 12:30:55 -04:00
import re
2025-09-04 09:59:19 -04:00
from datetime import datetime
2025-09-19 15:44:02 -04:00
from pathlib import Path
2025-09-03 15:00:17 -04:00
import pytz
TZ = pytz.timezone("America/New_York")
2025-09-04 09:59:19 -04:00
now = datetime.now(TZ)
2025-09-19 15:44:02 -04:00
live_img = "https://i.gyazo.com/978f2eb4a199ca5b56b447aded0cb9e3.png"
leagues_file = Path(__file__).parent / "leagues.json"
2025-09-13 21:04:01 -04:00
2025-09-19 02:05:40 -04:00
2025-09-24 12:30:55 -04:00
class Leagues:
def __init__(self) -> None:
self.data = json.loads(leagues_file.read_text(encoding="utf-8"))
2025-09-20 23:26:18 -04:00
2025-09-24 12:30:55 -04:00
def teams(self, league: str) -> list[str]:
return self.data["teams"].get(league, [])
2025-09-23 20:55:52 -04:00
2025-09-24 12:30:55 -04:00
def info(self, name: str) -> tuple[str | None, str]:
name = name.upper()
2025-09-21 15:24:47 -04:00
2025-09-24 12:30:55 -04:00
if match := next(
(
(tvg_id, league_data.get("logo"))
for tvg_id, leagues in self.data["leagues"].items()
for league_entry in leagues
for league_name, league_data in league_entry.items()
if name == league_name or name in league_data.get("names", [])
),
None,
):
tvg_id, logo = match
2025-09-21 15:24:47 -04:00
2025-09-24 12:30:55 -04:00
return (tvg_id, logo or live_img)
return (None, live_img)
def is_valid(self, event: str, league: str) -> bool:
if match := re.search(r"(\-|vs.?)", event):
t1, t2 = event.split(match[1])
return any(t in self.teams(league) for t in (t1.strip(), t2.strip()))
return event.lower() == "nfl redzone" if league == "NFL" else False
leagues = Leagues()