This commit is contained in:
doms9 2025-08-28 12:18:30 -04:00
parent 22d53cf707
commit 00000d9b50
3 changed files with 73 additions and 36 deletions

View file

@ -5,10 +5,10 @@ from pathlib import Path
import httpx import httpx
from scrape import fstv, tvpass from scrape import fstv, tvpass
m3u8_file = Path(__file__).parent / "TV.m3u8"
base_url = "https://s.id/ePwXT" base_url = "https://s.id/ePwXT"
m3u8_file = Path(__file__).parent / "TV.m3u8"
client = httpx.AsyncClient( client = httpx.AsyncClient(
timeout=5, timeout=5,
follow_redirects=True, follow_redirects=True,

View file

@ -1,22 +1,61 @@
{ {
"_timestamp": 1756394172.403869, "_timestamp": 1756397743.720503,
"urls": { "urls": {
"[MLB] Washington Nationals @ New York Yankees": "https://tvpass.org/live/mlb-15/sd", "[MLB] Boston Red Sox @ Baltimore Orioles (SD)": "https://tvpass.org/live/mlb-17/sd",
"[MLB] Atlanta Braves @ Miami Marlins": "https://tvpass.org/live/mlb-07/sd", "[MLB] Boston Red Sox @ Baltimore Orioles (HD)": "https://tvpass.org/live/mlb-17/hd",
"[MLB] Tampa Bay Rays @ Cleveland Guardians": "https://tvpass.org/live/mlb-30/sd", "[MLB] Arizona Diamondbacks @ Milwaukee Brewers (SD)": "https://tvpass.org/live/mlb-16/sd",
"[MLB] San Diego Padres @ Seattle Mariners": "https://tvpass.org/live/mlb-10/sd", "[MLB] Arizona Diamondbacks @ Milwaukee Brewers (HD)": "https://tvpass.org/live/mlb-16/hd",
"[MLB] Boston Red Sox @ Baltimore Orioles": "https://tvpass.org/live/mlb-17/sd", "[MLB] Colorado Rockies @ Houston Astros (SD)": "https://tvpass.org/live/mlb-06/sd",
"[MLB] Minnesota Twins @ Toronto Blue Jays": "https://tvpass.org/live/mlb-12/sd", "[MLB] Colorado Rockies @ Houston Astros (HD)": "https://tvpass.org/live/mlb-06/hd",
"[MLB] Philadelphia Phillies @ New York Mets": "https://tvpass.org/live/mlb-24/sd", "[MLB] Pittsburgh Pirates @ St. Louis Cardinals (SD)": "https://tvpass.org/live/mlb-08/sd",
"[NBATV] Las Vegas Aces @ Atlanta Dream": "https://tvpass.org/live/NBATV/sd", "[MLB] Pittsburgh Pirates @ St. Louis Cardinals (HD)": "https://tvpass.org/live/mlb-08/hd",
"[MLB] Kansas City Royals @ Chicago White Sox": "https://tvpass.org/live/mlb-03/sd", "[MLB] Chicago Cubs @ San Francisco Giants (SD)": "https://tvpass.org/live/mlb-27/sd",
"[MLB] Arizona Diamondbacks @ Milwaukee Brewers": "https://tvpass.org/live/mlb-16/sd", "[MLB] Chicago Cubs @ San Francisco Giants (HD)": "https://tvpass.org/live/mlb-27/hd",
"[MLB] Pittsburgh Pirates @ St. Louis Cardinals": "https://tvpass.org/live/mlb-08/sd", "[NCAAF] Boise State Broncos @ South Florida Bulls (SD)": "https://tvpass.org/live/ESPN/sd",
"[WNBA] Connecticut Sun @ Dallas Wings": "https://tvpass.org/live/WNBA02/sd", "[NCAAF] Boise State Broncos @ South Florida Bulls (HD)": "https://tvpass.org/live/ESPN/hd",
"[MLB] Los Angeles Angels @ Texas Rangers": "https://tvpass.org/live/mlb-13/sd", "[NCAAF] Ohio Bobcats @ Rutgers Scarlet Knights (SD)": "https://tvpass.org/live/BTN/sd",
"[MLB] Colorado Rockies @ Houston Astros": "https://tvpass.org/live/mlb-06/sd", "[NCAAF] Ohio Bobcats @ Rutgers Scarlet Knights (HD)": "https://tvpass.org/live/BTN/hd",
"[MLB] Cincinnati Reds @ Los Angeles Dodgers": "https://tvpass.org/live/mlb-14/sd", "[NCAAF] Lafayette Leopards @ Bowling Green Falcons (SD)": "https://tvpass.org/live/NCAAF03/sd",
"[MLB] Chicago Cubs @ San Francisco Giants": "https://tvpass.org/live/mlb-27/sd", "[NCAAF] Lafayette Leopards @ Bowling Green Falcons (HD)": "https://tvpass.org/live/NCAAF03/hd",
"[MLB] Detroit Tigers @ Oakland Athletics": "https://tvpass.org/live/mlb-19/sd" "[MLB] Atlanta Braves @ Philadelphia Phillies (SD)": "https://tvpass.org/live/mlb-18/sd",
"[MLB] Atlanta Braves @ Philadelphia Phillies (HD)": "https://tvpass.org/live/mlb-18/hd",
"[WNBA] Washington Mystics @ New York Liberty (SD)": "https://tvpass.org/live/WNBA01/sd",
"[WNBA] Washington Mystics @ New York Liberty (HD)": "https://tvpass.org/live/WNBA01/hd",
"[NCAAF] Wyoming Cowboys @ Akron Zips (SD)": "https://tvpass.org/live/NCAAF06/sd",
"[NCAAF] Wyoming Cowboys @ Akron Zips (HD)": "https://tvpass.org/live/NCAAF06/hd",
"[NCAAF] East Carolina Pirates @ NC State Wolfpack (SD)": "https://tvpass.org/live/ACCNetwork/sd",
"[NCAAF] East Carolina Pirates @ NC State Wolfpack (HD)": "https://tvpass.org/live/ACCNetwork/hd",
"[NCAAF] St. Francis (PA) Red Flash @ UL Monroe Warhawks (SD)": "https://tvpass.org/live/NCAAF07/sd",
"[NCAAF] St. Francis (PA) Red Flash @ UL Monroe Warhawks (HD)": "https://tvpass.org/live/NCAAF07/hd",
"[NCAAF] Delaware State Hornets @ Delaware Blue Hens (SD)": "https://tvpass.org/live/NCAAF10/sd",
"[NCAAF] Delaware State Hornets @ Delaware Blue Hens (HD)": "https://tvpass.org/live/NCAAF10/hd",
"[NCAAF] Jacksonville State Gamecocks @ UCF Knights (SD)": "https://tvpass.org/live/NCAAF08/sd",
"[NCAAF] Jacksonville State Gamecocks @ UCF Knights (HD)": "https://tvpass.org/live/NCAAF08/hd",
"[MLB] Miami Marlins @ New York Mets (SD)": "https://tvpass.org/live/mlb-24/sd",
"[MLB] Miami Marlins @ New York Mets (HD)": "https://tvpass.org/live/mlb-24/hd",
"[NCAAF] Central Arkansas Bears @ Missouri Tigers (SD)": "https://tvpass.org/live/SECN/sd",
"[NCAAF] Central Arkansas Bears @ Missouri Tigers (HD)": "https://tvpass.org/live/SECN/hd",
"[NCAAF] Elon Phoenix @ Duke Blue Devils (SD)": "https://tvpass.org/live/NCAAF12/sd",
"[NCAAF] Elon Phoenix @ Duke Blue Devils (HD)": "https://tvpass.org/live/NCAAF12/hd",
"[NCAAF] UT Martin Skyhawks @ Oklahoma State Cowboys (SD)": "https://tvpass.org/live/NCAAF14/sd",
"[NCAAF] UT Martin Skyhawks @ Oklahoma State Cowboys (HD)": "https://tvpass.org/live/NCAAF14/hd",
"[MLB] New York Yankees @ Chicago White Sox (SD)": "https://tvpass.org/live/mlb-03/sd",
"[MLB] New York Yankees @ Chicago White Sox (HD)": "https://tvpass.org/live/mlb-03/hd",
"[NCAAF] Buffalo Bulls @ Minnesota Golden Gophers (SD)": "https://tvpass.org/live/FoxSports1/sd",
"[NCAAF] Buffalo Bulls @ Minnesota Golden Gophers (HD)": "https://tvpass.org/live/FoxSports1/hd",
"[NCAAF] Stephen F. Austin Lumberjacks @ Houston Cougars (SD)": "https://tvpass.org/live/NCAAF15/sd",
"[NCAAF] Stephen F. Austin Lumberjacks @ Houston Cougars (HD)": "https://tvpass.org/live/NCAAF15/hd",
"[WNBA] Seattle Storm @ Minnesota Lynx (SD)": "https://tvpass.org/live/WNBA02/sd",
"[WNBA] Seattle Storm @ Minnesota Lynx (HD)": "https://tvpass.org/live/WNBA02/hd",
"[NCAAF] Alabama State Hornets @ UAB Blazers (SD)": "https://tvpass.org/live/NCAAF18/sd",
"[NCAAF] Alabama State Hornets @ UAB Blazers (HD)": "https://tvpass.org/live/NCAAF18/hd",
"[NCAAF] Nebraska Cornhuskers @ Cincinnati Bearcats (SD)": "https://tvpass.org/live/ESPN/sd",
"[NCAAF] Nebraska Cornhuskers @ Cincinnati Bearcats (HD)": "https://tvpass.org/live/ESPN/hd",
"[NCAAF] Miami (OH) RedHawks @ Wisconsin Badgers (SD)": "https://tvpass.org/live/BTN/sd",
"[NCAAF] Miami (OH) RedHawks @ Wisconsin Badgers (HD)": "https://tvpass.org/live/BTN/hd",
"[NCAAF] Stony Brook Seawolves @ San Diego State Aztecs (SD)": "https://tvpass.org/live/NCAAF21/sd",
"[NCAAF] Stony Brook Seawolves @ San Diego State Aztecs (HD)": "https://tvpass.org/live/NCAAF21/hd",
"[WNBA] Chicago Sky @ Phoenix Mercury (SD)": "https://tvpass.org/live/WNBA03/sd",
"[WNBA] Chicago Sky @ Phoenix Mercury (HD)": "https://tvpass.org/live/WNBA03/hd"
} }
} }

View file

@ -2,18 +2,18 @@ import json
import re import re
from datetime import datetime, timedelta from datetime import datetime, timedelta
from pathlib import Path from pathlib import Path
from urllib.parse import urlparse
import httpx import httpx
import pytz import pytz
base_url = "https://tvpass.org/playlist/m3u" base_url = "https://tvpass.org/playlist/m3u"
base_file = Path(__file__).parent / "tvpass.json" base_file = Path(__file__).parent / "tvpass.json"
urls: dict[str, str] = {}
TZ = pytz.timezone("America/New_York") TZ = pytz.timezone("America/New_York")
urls: dict[str, str] = {}
def cache_expired(t: float) -> bool: def cache_expired(t: float) -> bool:
now = datetime.now(TZ) now = datetime.now(TZ)
@ -64,29 +64,27 @@ async def main(client: httpx.AsyncClient) -> None:
if not (data := await fetch_m3u8(client)): if not (data := await fetch_m3u8(client)):
return return
for i, line in enumerate(data[:-1]): for i, line in enumerate(data):
if line.startswith("#EXTINF"): if line.startswith("#EXTINF"):
tvg_id_match = re.search(r'tvg-id="([^"]*)"', line) tvg_id_match = re.search(r'tvg-id="([^"]*)"', line)
tvg_name_match = re.search(r'tvg-name="([^"]*)"', line) tvg_name_match = re.search(r'tvg-name="([^"]*)"', line)
group_title_match = re.search(r'group-title="([^"]*)"', line)
tvg_id = tvg_id_match[1] if tvg_id_match else None tvg_id = tvg_id_match[1] if tvg_id_match else None
tvg_name = tvg_name_match[1] if tvg_name_match else None tvg_name = tvg_name_match[1] if tvg_name_match else None
sport = group_title_match[1] if group_title_match else None
if tvg_id == "": if tvg_id == "":
url = data[i + 1] url = data[i + 1]
if tvg_name: if tvg_name:
tvg_name = tvg_name.split("(")[0].strip() tvg_name = "(".join(tvg_name.split("(")[:-1]).strip()
if url.endswith("/sd"): if url.endswith("/sd"):
path_parts = urlparse(url).path.strip("/").split("/") urls[f"[{sport}] {tvg_name} (SD)"] = url
if len(path_parts) >= 2 and path_parts[-1] == "sd": elif url.endswith("/hd"):
sport = "".join(x for x in path_parts[1] if x.isalpha()).upper() urls[f"[{sport}] {tvg_name} (HD)"] = url
else:
sport = "UNKNWN"
urls[f"[{sport}] {tvg_name}"] = url
if urls: if urls:
save_cache(urls) save_cache(urls)