e
This commit is contained in:
parent
69cf0b4754
commit
00000d9b81
9 changed files with 30 additions and 8 deletions
|
|
@ -25,6 +25,7 @@ async def get_events(
|
|||
base_url: str,
|
||||
cached_hrefs: set[str],
|
||||
) -> list[dict[str, str]]:
|
||||
|
||||
log.info(f'Scraping from "{base_url}"')
|
||||
|
||||
try:
|
||||
|
|
@ -80,6 +81,7 @@ async def process_event(
|
|||
url: str,
|
||||
url_num: int,
|
||||
) -> tuple[str, str]:
|
||||
|
||||
try:
|
||||
r = await client.get(url)
|
||||
r.raise_for_status()
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ async def write_to_cert(
|
|||
url: str,
|
||||
cert: Path,
|
||||
) -> None:
|
||||
|
||||
try:
|
||||
r = await client.get(url)
|
||||
r.raise_for_status()
|
||||
|
|
@ -94,6 +95,7 @@ async def process_event(
|
|||
url_num: int,
|
||||
context: BrowserContext,
|
||||
) -> str | None:
|
||||
|
||||
page = await context.new_page()
|
||||
|
||||
captured: list[str] = []
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ async def process_event(
|
|||
url: str,
|
||||
url_num: int,
|
||||
) -> str | None:
|
||||
|
||||
try:
|
||||
r = await client.get(url)
|
||||
r.raise_for_status()
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ async def process_event(
|
|||
url_num: int,
|
||||
context: BrowserContext,
|
||||
) -> str | None:
|
||||
|
||||
page = await context.new_page()
|
||||
|
||||
captured: list[str] = []
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ async def process_event(
|
|||
url_num: int,
|
||||
context: BrowserContext,
|
||||
) -> str | None:
|
||||
|
||||
page = await context.new_page()
|
||||
|
||||
captured: list[str] = []
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ class Cache:
|
|||
per_entry: bool = True,
|
||||
index: bool = False,
|
||||
) -> dict[str, dict[str, str | float]]:
|
||||
|
||||
try:
|
||||
data: dict = json.loads(self.file.read_text(encoding="utf-8"))
|
||||
except (FileNotFoundError, json.JSONDecodeError):
|
||||
|
|
|
|||
|
|
@ -35,7 +35,12 @@ class Time(datetime):
|
|||
return self.__class__.fromtimestamp(dt.timestamp(), tz=ZONES[tzone])
|
||||
|
||||
@classmethod
|
||||
def from_str(cls, s: str, fmt: str | None = None) -> "Time":
|
||||
def from_str(
|
||||
cls,
|
||||
s: str,
|
||||
fmt: str | None = None,
|
||||
) -> "Time":
|
||||
|
||||
pattern = re.compile(r"\b(ET|UTC|EST|EDT)\b")
|
||||
|
||||
match = pattern.search(s)
|
||||
|
|
@ -99,7 +104,12 @@ class Leagues:
|
|||
|
||||
return (None, self.live_img)
|
||||
|
||||
def is_valid(self, event: str, league: str) -> bool:
|
||||
def is_valid(
|
||||
self,
|
||||
event: str,
|
||||
league: str,
|
||||
) -> bool:
|
||||
|
||||
pattern = re.compile(r"\s+(?:-|vs\.?|at)\s+", flags=re.IGNORECASE)
|
||||
|
||||
if pattern.search(event):
|
||||
|
|
@ -109,7 +119,12 @@ class Leagues:
|
|||
|
||||
return event.lower() == "nfl redzone" if league == "NFL" else False
|
||||
|
||||
def get_tvg_info(self, sport: str, event: str) -> tuple[str | None, str]:
|
||||
def get_tvg_info(
|
||||
self,
|
||||
sport: str,
|
||||
event: str,
|
||||
) -> tuple[str | None, str]:
|
||||
|
||||
match sport:
|
||||
case "American Football":
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -84,6 +84,7 @@ class Network:
|
|||
got_one: asyncio.Event,
|
||||
patterns: list[str] | None = None,
|
||||
) -> None:
|
||||
|
||||
if not patterns:
|
||||
patterns = ["amazonaws", "knitcdn"]
|
||||
|
||||
|
|
|
|||
|
|
@ -36,10 +36,7 @@ SPORT_ENDPOINTS = [
|
|||
]
|
||||
|
||||
|
||||
async def get_api_data(
|
||||
client: httpx.AsyncClient,
|
||||
url: str,
|
||||
) -> list[dict[str, Any]]:
|
||||
async def get_api_data(client: httpx.AsyncClient, url: str) -> list[dict[str, Any]]:
|
||||
try:
|
||||
r = await client.get(url, timeout=10)
|
||||
r.raise_for_status()
|
||||
|
|
@ -137,6 +134,7 @@ async def process_event(
|
|||
await iframe.click("button.vds-play-button")
|
||||
except TimeoutError:
|
||||
log.warning("Play button not found inside iframe.")
|
||||
return
|
||||
|
||||
wait_task = asyncio.create_task(got_one.wait())
|
||||
|
||||
|
|
@ -218,7 +216,7 @@ async def get_events(
|
|||
{
|
||||
"sport": sport,
|
||||
"event": name,
|
||||
"link": f"https://www.watchfooty.live/en/stream/{match_id}",
|
||||
"link": urljoin(base_url, f"stream/{match_id}"),
|
||||
"logo": logo,
|
||||
"timestamp": event_dt.timestamp(),
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue