From 00000d94e4212763b23780f0faf083b409bda5ed Mon Sep 17 00:00:00 2001 From: doms9 <96013514+doms9@users.noreply.github.com> Date: Tue, 16 Sep 2025 15:55:08 -0400 Subject: [PATCH] e --- .gitignore | 3 +- M3U8/scrapers/caches/ppv_api.json | 1270 ----------------------------- M3U8/scrapers/utils/config.py | 36 +- 3 files changed, 21 insertions(+), 1288 deletions(-) delete mode 100644 M3U8/scrapers/caches/ppv_api.json diff --git a/.gitignore b/.gitignore index 6fe984d..5576aa3 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,5 @@ wheels/ # Misc .python-version stuff/ -cached-ca.pem \ No newline at end of file +cached-ca.pem +ppv_api.json diff --git a/M3U8/scrapers/caches/ppv_api.json b/M3U8/scrapers/caches/ppv_api.json deleted file mode 100644 index 0ab1fe5..0000000 --- a/M3U8/scrapers/caches/ppv_api.json +++ /dev/null @@ -1,1270 +0,0 @@ -{ - "success": true, - "timestamp": 1758031510, - "READ_ME": "Interested in using our API? Contact us for more information.", - "performance": 0.006815910339355469, - "streams": [ - { - "category": "Baseball", - "id": 36, - "always_live": false, - "streams": [ - { - "id": 11432, - "name": "Atlanta Braves vs. Washington Nationals", - "tag": "MASN", - "poster": "https://ppvs.su/assets/thumb/4c60e3148ee25b1460e9da1651643fc3-thumbnail.jpg", - "blurhash": "L5FxMm||Md$kspjtayfQ0wJjyDNt", - "colors": [ - "#cc1042", - "#aa0003" - ], - "uri_name": "mlb/2025-09-16/2886-wsh", - "starts_at": 1758042300, - "ends_at": 1758053100, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/2886-wsh", - "viewers": "0", - "substreams": [] - }, - { - "id": 11433, - "name": "Chicago Cubs vs. Pittsburgh Pirates", - "tag": "SportsNet PIT", - "poster": "https://ppvs.su/assets/thumb/e216669a1ca4aeaaa36df595d5b7f8ff-thumbnail.jpg", - "blurhash": "L9E2Rd0I+[58s.WXayjZ00=okr={", - "colors": [ - "#0d3282", - "#fbb62a" - ], - "uri_name": "mlb/2025-09-16/7305-pit", - "starts_at": 1758062400, - "ends_at": 1758073200, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/7305-pit", - "viewers": "0", - "substreams": [] - }, - { - "id": 11434, - "name": "Cleveland Guardians vs. Detroit Tigers", - "tag": "FanDuel SN DET", - "poster": "https://ppvs.su/assets/thumb/38b41ebdacc78bc0ce72a94aa425e2cb-thumbnail.jpg", - "blurhash": "L36@{E+b00GaR*RjWBof00F{~W+a", - "colors": [ - "#0e213f", - "#0e213f" - ], - "uri_name": "mlb/2025-09-16/9343-det", - "starts_at": 1758062400, - "ends_at": 1758073200, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/9343-det", - "viewers": "0", - "substreams": [] - }, - { - "id": 11435, - "name": "Atlanta Braves vs. Washington Nationals", - "tag": "MASN", - "poster": "https://ppvs.su/assets/thumb/4c60e3148ee25b1460e9da1651643fc3-thumbnail.jpg", - "blurhash": "L5FxMm||Md$kspjtayfQ0wJjyDNt", - "colors": [ - "#cc1042", - "#aa0003" - ], - "uri_name": "mlb/2025-09-16/6734-wsh", - "starts_at": 1758062700, - "ends_at": 1758073500, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/6734-wsh", - "viewers": "0", - "substreams": [] - }, - { - "id": 11436, - "name": "Athletics vs. Boston Red Sox", - "tag": "NESN", - "poster": "https://ppvs.su/assets/thumb/4e8650fc155356a246c3cfd5860f38b7-thumbnail.jpg", - "blurhash": "L4B.D$3.h}M0j[ofaeWB00_*.8cr", - "colors": [ - "#010101", - "#ba2e37" - ], - "uri_name": "mlb/2025-09-16/6355-bos", - "starts_at": 1758062700, - "ends_at": 1758073500, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/6355-bos", - "viewers": "0", - "substreams": [] - }, - { - "id": 11437, - "name": "San Diego Padres vs. New York Mets", - "tag": "SNY", - "poster": "https://ppvs.su/assets/thumb/e2b2236067dd37b1b32094d15c6ad955-thumbnail.jpg", - "blurhash": "L37-Z?5301}+%2RkWBt600=}_35Y", - "colors": [ - "#2d221c", - "#002b6f" - ], - "uri_name": "mlb/2025-09-16/8381-nym", - "starts_at": 1758064200, - "ends_at": 1758075000, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/8381-nym", - "viewers": "0", - "substreams": [] - }, - { - "id": 11438, - "name": "Toronto Blue Jays vs. Tampa Bay Rays", - "tag": "FanDuel SN Sun", - "poster": "https://ppvs.su/assets/thumb/9c4f4b8b710aca0dae6a9dfab93dcfad-thumbnail.jpg", - "blurhash": "L67xLP-@9ZEMoff7ayj[00E0?H-B", - "colors": [ - "#12478b", - "#092b5b" - ], - "uri_name": "mlb/2025-09-16/7730-tb", - "starts_at": 1758065700, - "ends_at": 1758076500, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/7730-tb", - "viewers": "0", - "substreams": [] - }, - { - "id": 11439, - "name": "Los Angeles Angels vs. Milwaukee Brewers", - "tag": "FanDuel SN WI", - "poster": "https://ppvs.su/assets/thumb/82b24450fd84c961217753e27a3a8794-thumbnail.jpg", - "blurhash": "LEAbS9{zn4xCj[f6ayju0yK3o}R-", - "colors": [ - "#b7001f", - "#132549" - ], - "uri_name": "mlb/2025-09-16/6479-mil", - "starts_at": 1758066000, - "ends_at": 1758076800, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/6479-mil", - "viewers": "0", - "substreams": [] - }, - { - "id": 11440, - "name": "Baltimore Orioles vs. Chicago White Sox", - "tag": "CHSN", - "poster": "https://ppvs.su/assets/thumb/efcccfa2b9ed5d7ac1cd4bcbc0ca5521-thumbnail.jpg", - "blurhash": "LLC;nc{|nOt7j[fQayj[0|K5ozV@", - "colors": [ - "#dd4601", - "#28231d" - ], - "uri_name": "mlb/2025-09-16/4082-chw", - "starts_at": 1758066000, - "ends_at": 1758076800, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/4082-chw", - "viewers": "0", - "substreams": [] - }, - { - "id": 11441, - "name": "New York Yankees vs. Minnesota Twins", - "tag": "Twins.TV", - "poster": "https://ppvs.su/assets/thumb/22fb065dfe0bff62be94a20f608cc588-thumbnail.jpg", - "blurhash": "L58;Q2}_4.0#xbofWBR*0056?b^i", - "colors": [ - "#002e84", - "#012b5b" - ], - "uri_name": "mlb/2025-09-16/5214-min", - "starts_at": 1758066000, - "ends_at": 1758076800, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/5214-min", - "viewers": "0", - "substreams": [] - }, - { - "id": 11442, - "name": "Seattle Mariners vs. Kansas City Royals", - "tag": "FanDuel SN KC", - "poster": "https://ppvs.su/assets/thumb/7292f017bb5cd10f295989e515c8efae-thumbnail.jpg", - "blurhash": "L25~Lu~I0000t7WXWBoJ0004~q~q", - "colors": [ - "#0a2b54", - "#014586" - ], - "uri_name": "mlb/2025-09-16/5089-kc", - "starts_at": 1758066000, - "ends_at": 1758076800, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/5089-kc", - "viewers": "0", - "substreams": [] - }, - { - "id": 11443, - "name": "Texas Rangers vs. Houston Astros", - "tag": "Space City Home Network", - "poster": "https://ppvs.su/assets/thumb/1ddfbfc089ac3f825334b1e5dd3cbad4-thumbnail.jpg", - "blurhash": "L47d;D^-4o4.w{s9WVSh009X^+?I", - "colors": [ - "#003176", - "#012c61" - ], - "uri_name": "mlb/2025-09-16/2369-hou", - "starts_at": 1758067800, - "ends_at": 1758078600, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/2369-hou", - "viewers": "0", - "substreams": [] - }, - { - "id": 11444, - "name": "Miami Marlins vs. Colorado Rockies", - "tag": "Rockies.TV", - "poster": "https://ppvs.su/assets/thumb/74f5d3c6212a724e51f0dda4fc85b978-thumbnail.jpg", - "blurhash": "LF6cBJPXNdtmj[j[ayay8wr;xZRO", - "colors": [ - "#01a1df", - "#323467" - ], - "uri_name": "mlb/2025-09-16/3051-col", - "starts_at": 1758069600, - "ends_at": 1758080400, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/3051-col", - "viewers": "0", - "substreams": [] - }, - { - "id": 11445, - "name": "San Francisco Giants vs. Arizona Diamondbacks", - "tag": "DBACKS.TV", - "poster": "https://ppvs.su/assets/thumb/579f47884ea1324f816fa58532c6fc58-thumbnail.jpg", - "blurhash": "LHHuIe}Wi^wJoLj[ayf60yI;kWS#", - "colors": [ - "#fd5a21", - "#a61830" - ], - "uri_name": "mlb/2025-09-16/5726-ari", - "starts_at": 1758073200, - "ends_at": 1758084000, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/5726-ari", - "viewers": "0", - "substreams": [] - }, - { - "id": 11446, - "name": "Philadelphia Phillies vs. Los Angeles Dodgers", - "tag": "Sportsnet LA", - "poster": "https://ppvs.su/assets/thumb/24b6e89106328fc02c279bf22852211c-thumbnail.jpg", - "blurhash": "LQCEw?|rw0nNoMj[ayay5OE%bvkW", - "colors": [ - "#e6192a", - "#00579a" - ], - "uri_name": "mlb/2025-09-16/8204-lad", - "starts_at": 1758075000, - "ends_at": 1758085800, - "always_live": 0, - "locale": "en", - "category_name": "Baseball", - "iframe": "https://ppvs.su/embed/mlb/2025-09-16/8204-lad", - "viewers": "0", - "substreams": [] - } - ] - }, - { - "category": "Basketball", - "id": 37, - "always_live": false, - "streams": [ - { - "id": 11448, - "name": "Dream at Fever (Game 2)", - "tag": "ESPN", - "poster": "https://ppvs.su/assets/thumb/e497e9b8a59fa009021364c2ef855a49-thumbnail.jpg", - "blurhash": "L*JXR:|HofNwsAofSNa}aKr?jZSg", - "colors": [ - "#e94565", - "#20305d" - ], - "uri_name": "wnba/09-16-2025/atl-ind", - "starts_at": 1758065400, - "ends_at": 1758075300, - "always_live": 0, - "locale": "en", - "category_name": "Basketball", - "iframe": "https://ppvs.su/embed/wnba/09-16-2025/atl-ind", - "viewers": "0", - "substreams": [] - }, - { - "id": 11447, - "name": "Aces at Storm (Game 2)", - "tag": "ESPN", - "poster": "https://ppvs.su/assets/thumb/812abea48e6247fa0ed192da9dacdfe4-thumbnail.jpg", - "blurhash": "LaF6Xs~Xt7M_t7t7WAfQWEofa|WC", - "colors": [ - "#b9b9bb", - "#2c5235" - ], - "uri_name": "wnba/09-16-2025/lva-sea", - "starts_at": 1758072600, - "ends_at": 1758082500, - "always_live": 0, - "locale": "en", - "category_name": "Basketball", - "iframe": "https://ppvs.su/embed/wnba/09-16-2025/lva-sea", - "viewers": "0", - "substreams": [] - } - ] - }, - { - "category": "Football", - "id": 34, - "always_live": false, - "streams": [ - { - "id": 11244, - "name": "PSV vs. Union SG", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/1e143f6ef8ea6885e0df7be8efee6415-thumbnail.jpg", - "blurhash": "L97-gv?FMt9vRoWVayoK009bx|=_", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-16/psv-usg", - "starts_at": 1758041100, - "ends_at": 1758051900, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-16/psv-usg", - "viewers": "1", - "substreams": [] - }, - { - "id": 11245, - "name": "Athletic Club vs. Arsenal", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/6cc0798d1cd168a100489bcdee272e92-thumbnail.jpg", - "blurhash": "L99QOoyXIQQ,%1oya{WB00Q-x|tm", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-16/ath-ars", - "starts_at": 1758041100, - "ends_at": 1758051900, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-16/ath-ars", - "viewers": "3", - "substreams": [] - }, - { - "id": 11246, - "name": "Real Madrid vs. Marseille", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/7643b7d0bbd5b7ec1459212458a99074-thumbnail.jpg", - "blurhash": "L95=lD=qMtETV_WCayj[4TETx|-N", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-16/rma-mar", - "starts_at": 1758049200, - "ends_at": 1758060000, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-16/rma-mar", - "viewers": "2", - "substreams": [] - }, - { - "id": 11247, - "name": "Benfica vs. Qaraba\u011f", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/1a4c3d87888ceb7a5c7a9d390d1930ef-thumbnail.jpg", - "blurhash": "L97UZKM|MaxtWEayfPj[00xux|M|", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-16/ben-qar", - "starts_at": 1758049200, - "ends_at": 1758060000, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-16/ben-qar", - "viewers": "0", - "substreams": [] - }, - { - "id": 11248, - "name": "Juventus vs. B. Dortmund", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/dc0b15f069401144079cc0217776da43-thumbnail.jpg", - "blurhash": "LEA^Y0%QRKM[j]fRfPfP00MutUtU", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-16/juv-bvb", - "starts_at": 1758049200, - "ends_at": 1758060000, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-16/juv-bvb", - "viewers": "0", - "substreams": [] - }, - { - "id": 11249, - "name": "Tottenham vs. Villarreal", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/123c6b1077d70dff38a1efb1b7217fdc-thumbnail.jpg", - "blurhash": "L95##.EAMt-Nj]a#ayj?4m$^x|Iw", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-16/tot-vil", - "starts_at": 1758049200, - "ends_at": 1758060000, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-16/tot-vil", - "viewers": "1", - "substreams": [] - }, - { - "id": 11250, - "name": "Olympiacos vs. Pafos", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/104c7aaad8c428f39dabb9674d6720b8-thumbnail.jpg", - "blurhash": "L98z.{#TI7O=NHWCayoc00KN%QrY", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-17/oly-paf", - "starts_at": 1758127500, - "ends_at": 1758138300, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-17/oly-paf", - "viewers": "0", - "substreams": [] - }, - { - "id": 11251, - "name": "Slavia Praha vs. Bod\u00f8/Glimt", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/e1013659b9ad285a268fbbb75b00ba8d-thumbnail.jpg", - "blurhash": "L97^+uM;Max%a$j@ayf600tHx|RZ", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-17/slp-bod", - "starts_at": 1758127500, - "ends_at": 1758138300, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-17/slp-bod", - "viewers": "0", - "substreams": [] - }, - { - "id": 11252, - "name": "Paris vs. Atalanta", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/c4fdfcb930c275d43a7941dea371ab5c-thumbnail.jpg", - "blurhash": "L96k#_ROMttTkDj?f6a#00tSx|RO", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-17/psg-ata", - "starts_at": 1758135600, - "ends_at": 1758146400, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-17/psg-ata", - "viewers": "0", - "substreams": [] - }, - { - "id": 11253, - "name": "Bayern M\u00fcnchen vs. Chelsea", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/86bd9a7659647e7e23837992c02db4fd-thumbnail.jpg", - "blurhash": "L89@GY+%I7Kbofazayj@00KIx|w4", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-17/bay-che", - "starts_at": 1758135600, - "ends_at": 1758146400, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-17/bay-che", - "viewers": "0", - "substreams": [] - }, - { - "id": 11254, - "name": "Liverpool vs. Atleti", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/055a470b8c5797706cab75c25a849d10-thumbnail.jpg", - "blurhash": "L97A{29cR1--kCjZf6bH0J=_tpE3", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-17/liv-atm", - "starts_at": 1758135600, - "ends_at": 1758146400, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-17/liv-atm", - "viewers": "0", - "substreams": [] - }, - { - "id": 11255, - "name": "Ajax vs. Inter", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/9cd8cb871842d1e43779d5863abd94db-thumbnail.jpg", - "blurhash": "L88;sK?ZMtE3ogj[f6ay00E2xz$~", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-17/ajx-int", - "starts_at": 1758135600, - "ends_at": 1758146400, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-17/ajx-int", - "viewers": "0", - "substreams": [] - }, - { - "id": 11256, - "name": "Club Brugge vs. Monaco", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/0f7aa82bde80806beb976484ca8e25e0-thumbnail.jpg", - "blurhash": "L96*knOrMtwJR-jbf6bF00w0x|OX", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-18/bru-mon", - "starts_at": 1758213900, - "ends_at": 1758224700, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-18/bru-mon", - "viewers": "0", - "substreams": [] - }, - { - "id": 11257, - "name": "Copenhagen vs. Leverkusen", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/9554aec2891b78380bc0ebc1dad80435-thumbnail.jpg", - "blurhash": "L897i7XpR1$bt7bbayae00r.tWI_", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-18/cph-lev", - "starts_at": 1758213900, - "ends_at": 1758224700, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-18/cph-lev", - "viewers": "0", - "substreams": [] - }, - { - "id": 11258, - "name": "Man City vs. Napoli", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/98a817a6c8f8eef1c941ebbcec3d8666-thumbnail.jpg", - "blurhash": "L87_v^]fMaAxj]f6ayfk00AKx|,,", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-18/mci-nap", - "starts_at": 1758222000, - "ends_at": 1758232800, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-18/mci-nap", - "viewers": "0", - "substreams": [] - }, - { - "id": 11259, - "name": "Frankfurt vs. Galatasaray", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/054bb6df8777a17f70f9b5f782420f6f-thumbnail.jpg", - "blurhash": "L9AA39]%MtAba#off6WB00Abx|,B", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-18/fra-gal", - "starts_at": 1758222000, - "ends_at": 1758232800, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-18/fra-gal", - "viewers": "0", - "substreams": [] - }, - { - "id": 11260, - "name": "Sporting CP vs. Kairat Almaty", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/2d829c0a0925fc49546b90c58fd6f8c5-thumbnail.jpg", - "blurhash": "L94{TAk:MteCWYf6ayfk4TZ*x|ko", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-18/spo-kai", - "starts_at": 1758222000, - "ends_at": 1758232800, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-18/spo-kai", - "viewers": "0", - "substreams": [] - }, - { - "id": 11261, - "name": "Newcastle vs. Barcelona", - "tag": "CBS Sports", - "poster": "https://ppvs.su/assets/thumb/a0e7710613728ed383a05a1b21781ebf-thumbnail.jpg", - "blurhash": "L97w:wAeMt,,w^Rlaxt500,,x|E,", - "colors": [ - "#011b66", - "#011b68" - ], - "uri_name": "ucl/2025-09-18/new-bar", - "starts_at": 1758222000, - "ends_at": 1758232800, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ucl/2025-09-18/new-bar", - "viewers": "0", - "substreams": [] - }, - { - "id": 11423, - "name": "OL vs. Angers SCO", - "tag": "Ligue 1+", - "poster": "https://ppvs.su/assets/thumb/66adfb740590c3329e16deddc6ae3135-thumbnail.jpg", - "blurhash": "LH8g%I%jNLIWt7j[j[ay00ITt6xt", - "colors": [ - "#0f23a8", - "#000000" - ], - "uri_name": "ligue-1/2025-09-19/lyn-anr", - "starts_at": 1758307500, - "ends_at": 1758318300, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ligue-1/2025-09-19/lyn-anr", - "viewers": "0", - "substreams": [] - }, - { - "id": 11409, - "name": "Liverpool vs. Everton", - "tag": "Premier League", - "poster": "https://ppvs.su/assets/thumb/79e18433f7868008f9bfabd70c418074-thumbnail.jpg", - "blurhash": "LJBLrQ{^idn$f7j@j[ay0cF3tRj[", - "colors": [ - "#c80f2e", - "#003197" - ], - "uri_name": "epl/2025-09-20/liv-eve", - "starts_at": 1758367800, - "ends_at": 1758378600, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/epl/2025-09-20/liv-eve", - "viewers": "0", - "substreams": [] - }, - { - "id": 11406, - "name": "Brighton and Hove Albion vs. Tottenham Hotspur", - "tag": "Premier League", - "poster": "https://ppvs.su/assets/thumb/c58b66ea28b8334ef3c597425b11fb2f-thumbnail.jpg", - "blurhash": "LF8OA9%jIVM}WCfkj[ay00Mw%Lxt", - "colors": [ - "#0158b9", - "#142458" - ], - "uri_name": "epl/2025-09-20/bha-tot", - "starts_at": 1758376800, - "ends_at": 1758387600, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/epl/2025-09-20/bha-tot", - "viewers": "0", - "substreams": [] - }, - { - "id": 11407, - "name": "Burnley vs. Nottingham Forest", - "tag": "Premier League", - "poster": "https://ppvs.su/assets/thumb/7f7d122c7beb53a5aa691c1cf31999db-thumbnail.jpg", - "blurhash": "L6FWIm1%L~JQniogofWB00|F%~sp", - "colors": [ - "#6d1d44", - "#e23234" - ], - "uri_name": "epl/2025-09-20/bur-nfo", - "starts_at": 1758376800, - "ends_at": 1758387600, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/epl/2025-09-20/bur-nfo", - "viewers": "0", - "substreams": [] - }, - { - "id": 11412, - "name": "West Ham United vs. Crystal Palace", - "tag": "Premier League", - "poster": "https://ppvs.su/assets/thumb/4590c6aa133a03869ded4ea6efc01dc5-thumbnail.jpg", - "blurhash": "L69jKA{H8{kDWYt7ofRj00F~?ung", - "colors": [ - "#78273a", - "#1d448f" - ], - "uri_name": "epl/2025-09-20/whu-cry", - "starts_at": 1758376800, - "ends_at": 1758387600, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/epl/2025-09-20/whu-cry", - "viewers": "0", - "substreams": [] - }, - { - "id": 11413, - "name": "Wolverhampton Wanderers vs. Leeds United", - "tag": "Premier League", - "poster": "https://ppvs.su/assets/thumb/9344104caca3da200a49ee914dcd1284-thumbnail.jpg", - "blurhash": "L4KmET8%Qk-.s,o0kCWX00.Ou6D+", - "colors": [ - "#fcb913", - "#ffcc01" - ], - "uri_name": "epl/2025-09-20/wol-lee", - "starts_at": 1758376800, - "ends_at": 1758387600, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/epl/2025-09-20/wol-lee", - "viewers": "0", - "substreams": [] - }, - { - "id": 11422, - "name": "FC Nantes vs. Rennes", - "tag": "beIN SPORTS 1", - "poster": "https://ppvs.su/assets/thumb/0ab1e4ba09b2f0bd76bc0f40594c0371-thumbnail.jpg", - "blurhash": "LNK93o.gbpotoefPfjfk03M#j^a$", - "colors": [ - "#ffdb01", - "#d7271a" - ], - "uri_name": "ligue-1/2025-09-20/nan-ren", - "starts_at": 1758380400, - "ends_at": 1758391200, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ligue-1/2025-09-20/nan-ren", - "viewers": "0", - "substreams": [] - }, - { - "id": 11410, - "name": "Manchester United vs. Chelsea", - "tag": "Premier League", - "poster": "https://ppvs.su/assets/thumb/956e416bd5f71ab0fbd2b45aaddc7ff4-thumbnail.jpg", - "blurhash": "LKDa[p{cm-xbjsf6j[j@0KKQtRRi", - "colors": [ - "#da281c", - "#064592" - ], - "uri_name": "epl/2025-09-20/mun-che", - "starts_at": 1758385800, - "ends_at": 1758396600, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/epl/2025-09-20/mun-che", - "viewers": "0", - "substreams": [] - }, - { - "id": 11420, - "name": "Brest vs. OGC Nice", - "tag": "Ligue 1+", - "poster": "https://ppvs.su/assets/thumb/11665a1b3be990a69b18193151714d17-thumbnail.jpg", - "blurhash": "L2Ie0K00D4.mwJoLkCWV00?w%~Hr", - "colors": [ - "#cf0a11", - "#da222a" - ], - "uri_name": "ligue-1/2025-09-20/brs-nic", - "starts_at": 1758387600, - "ends_at": 1758398400, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ligue-1/2025-09-20/brs-nic", - "viewers": "0", - "substreams": [] - }, - { - "id": 11408, - "name": "Fulham vs. Brentford", - "tag": "Premier League", - "poster": "https://ppvs.su/assets/thumb/192498bd8d83ff1486e36e9a1c8fcafd-thumbnail.jpg", - "blurhash": "LRKu..qFb^b^jta|fkj[00VYkCi_", - "colors": [ - "#ffffff", - "#fe0201" - ], - "uri_name": "epl/2025-09-20/ful-bre", - "starts_at": 1758394800, - "ends_at": 1758405600, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/epl/2025-09-20/ful-bre", - "viewers": "0", - "substreams": [] - }, - { - "id": 11421, - "name": "RC Lens vs. LOSC", - "tag": "Ligue 1+", - "poster": "https://ppvs.su/assets/thumb/4f756dd4ab9fc097ab69ab46173b9564-thumbnail.jpg", - "blurhash": "L1In]=0f8wKiqutlofRP00}t.m#m", - "colors": [ - "#c31315", - "#e51c14" - ], - "uri_name": "ligue-1/2025-09-20/len-lil", - "starts_at": 1758395100, - "ends_at": 1758405900, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/ligue-1/2025-09-20/len-lil", - "viewers": "0", - "substreams": [] - }, - { - "id": 11404, - "name": "Bournemouth vs. Newcastle United", - "tag": "Premier League", - "poster": "https://ppvs.su/assets/thumb/1d3a5696b6fa1085ffa3157aaffd17b8-thumbnail.jpg", - "blurhash": "LKC#Y@|uicwfe.flj[jY0eJStRSg", - "colors": [ - "#d72a1c", - "#251f1f" - ], - "uri_name": "epl/2025-09-21/bou-new", - "starts_at": 1758459600, - "ends_at": 1758470400, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/epl/2025-09-21/bou-new", - "viewers": "0", - "substreams": [] - }, - { - "id": 11411, - "name": "Sunderland vs. Aston Villa", - "tag": "Premier League", - "poster": "https://ppvs.su/assets/thumb/c337e35a8456d8c6f4a879f0e023ae2c-thumbnail.jpg", - "blurhash": "LEGtEg_ORm$KoKafj[oc00L2xuNe", - "colors": [ - "#ea162c", - "#94c0e3" - ], - "uri_name": "epl/2025-09-21/sun-avl", - "starts_at": 1758459600, - "ends_at": 1758470400, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/epl/2025-09-21/sun-avl", - "viewers": "0", - "substreams": [] - }, - { - "id": 11405, - "name": "Arsenal vs. Manchester City", - "tag": "Premier League", - "poster": "https://ppvs.su/assets/thumb/73d45f563979fb397cd1ea31d9e8b025-thumbnail.jpg", - "blurhash": "LIG7cE_OV{$$oLj[j[ay00PVtQNH", - "colors": [ - "#ee0107", - "#6caadb" - ], - "uri_name": "epl/2025-09-21/ars-mci", - "starts_at": 1758468600, - "ends_at": 1758479400, - "always_live": 0, - "locale": "en", - "category_name": "Football", - "iframe": "https://ppvs.su/embed/epl/2025-09-21/ars-mci", - "viewers": "0", - "substreams": [] - } - ] - }, - { - "category": "Wrestling", - "id": 38, - "always_live": false, - "streams": [ - { - "id": 11399, - "name": "WWE: NXT", - "tag": "Netflix", - "poster": "https://ppvs.su/assets/thumb/ef5595e08561ede45c52b36a0b62af76-thumbnail.jpg", - "blurhash": "LLGSDh4n00RjD%~qof4nD%%MWBj[", - "colors": [ - "#030303", - "#040404" - ], - "uri_name": "wwe/nxt/25-09-16", - "starts_at": 1758067200, - "ends_at": 1758078000, - "always_live": 0, - "locale": "en", - "category_name": "Wrestling", - "iframe": "https://ppvs.su/embed/wwe/nxt/25-09-16", - "viewers": "0", - "substreams": [] - }, - { - "id": 11400, - "name": "AEW: Wednesday Night Dynamite", - "tag": "TBS", - "poster": "https://ppvs.su/assets/thumb/b406ff9100d91b9210600260350246ff-thumbnail.jpg", - "blurhash": "LHExeyNWV6M|$dbtRir?ZtWZ~Bwg", - "colors": [ - "#152441", - "#9c4ec5" - ], - "uri_name": "aew/dynamite/25-09-17", - "starts_at": 1758153600, - "ends_at": 1758164400, - "always_live": 0, - "locale": "en", - "category_name": "Wrestling", - "iframe": "https://ppvs.su/embed/aew/dynamite/25-09-17", - "viewers": "0", - "substreams": [] - }, - { - "id": 11401, - "name": "TNA: Impact", - "tag": "AXS TV", - "poster": "https://ppvs.su/assets/thumb/78f581ee61589a76f6bcdeb095f95c12-thumbnail.jpg", - "blurhash": "L6GFdr].0|t700EfGZR*3;J-{gt6", - "colors": [ - "#030303", - "#050505" - ], - "uri_name": "tna/impact/25-09-18", - "starts_at": 1758240000, - "ends_at": 1758250800, - "always_live": 0, - "locale": "en", - "category_name": "Wrestling", - "iframe": "https://ppvs.su/embed/tna/impact/25-09-18", - "viewers": "0", - "substreams": [] - }, - { - "id": 11402, - "name": "WWE: Friday Night Smackdown", - "tag": "USA Network", - "poster": "https://ppvs.su/assets/thumb/ec7810b68fc39115ce3510bcf9687a63-thumbnail.jpg", - "blurhash": "LF4ezej]M?s{kFkDf2fKIUWGxsfT", - "colors": [ - "#001b65", - "#0001b4" - ], - "uri_name": "wwe/smackdown/25-09-19", - "starts_at": 1758326400, - "ends_at": 1758337200, - "always_live": 0, - "locale": "en", - "category_name": "Wrestling", - "iframe": "https://ppvs.su/embed/wwe/smackdown/25-09-19", - "viewers": "0", - "substreams": [] - }, - { - "id": 11362, - "name": "WWE: Wrestlepalooza", - "tag": "ESPN", - "poster": "https://ppvs.su/assets/thumb/20deb017e70b341d95f43ada087b71d4-thumbnail.jpg", - "blurhash": "L08gEF}~0Mw~]3?wxBrV00RkES59", - "colors": [ - "#010101", - "#000000" - ], - "uri_name": "wwe-wrestlepalooza", - "starts_at": 1758409200, - "ends_at": 1758427200, - "always_live": 0, - "locale": "en", - "category_name": "Wrestling", - "viewers": "0", - "substreams": [] - }, - { - "id": 11403, - "name": "AEW: Saturday Night Collision", - "tag": "TNT", - "poster": "https://ppvs.su/assets/thumb/6e29b1bb679dd5133c85bbaadc2c4b13-thumbnail.jpg", - "blurhash": "LDDk_9Na01of}mNwNMbF0TS#^cae", - "colors": [ - "#210e10", - "#160c0a" - ], - "uri_name": "aew/collision/25-09-20", - "starts_at": 1758412800, - "ends_at": 1758423600, - "always_live": 0, - "locale": "en", - "category_name": "Wrestling", - "iframe": "https://ppvs.su/embed/aew/collision/25-09-20", - "viewers": "0", - "substreams": [] - } - ] - }, - { - "category": "24/7 Streams", - "id": 14, - "always_live": true, - "streams": [ - { - "id": 5112, - "name": "24/7 South Park", - "tag": "24/7 channel", - "poster": "https://thumbs.poocloud.in/southpark/preview.jpg", - "blurhash": "", - "colors": [ - "#349150", - "#510080" - ], - "uri_name": "247-south-park", - "starts_at": 0, - "ends_at": 0, - "always_live": 1, - "locale": "en", - "category_name": "24/7 Streams", - "iframe": "https://ppvs.su/embed/247-south-park", - "viewers": "5", - "substreams": [] - }, - { - "id": 3663, - "name": "24/7 COWS", - "tag": "ppv.land", - "poster": "https://ppvs.su/assets/thumb/213d77252211e1926309f43b38263a4f-thumbnail.jpg", - "blurhash": "LLHBJBIU.SIV~WD%.7n#%#nOoJi{", - "colors": [ - "#8c797d", - "#746353" - ], - "uri_name": "247-cows", - "starts_at": 1737176400, - "ends_at": 1740772800, - "always_live": 1, - "locale": "en", - "category_name": "24/7 Streams", - "iframe": "https://ppvs.su/embed/247-cows", - "viewers": "0", - "substreams": [] - }, - { - "id": 8008, - "name": "24/7 Family\u200c\u200c\u200b\u200c\u200b\u200b\u200b\u200c\u200b\u200b\u200b\u200b\u200b\u200c\u200c\u200b\u200c\u200b\u200c\u200c\u200b\u200b\u200c\u200c\u200c\u200c\u200b\u200b\u200b\u200c\u200b\u200c Guy", - "tag": "24/7 channel", - "poster": "https://thumbs.poocloud.in/familyguy/preview.jpg", - "blurhash": "", - "colors": [ - "#349150", - "#510080" - ], - "uri_name": "247-family-guy", - "starts_at": 1737187200, - "ends_at": 1737190800, - "always_live": 1, - "locale": "en", - "category_name": "24/7 Streams", - "iframe": "https://ppvs.su/embed/247-family-guy", - "viewers": "0", - "substreams": [] - }, - { - "id": 5191, - "name": "24/7 The Simpsons", - "tag": "24/7 channel", - "poster": "https://thumbs.poocloud.in/thesimpsons/preview.jpg", - "blurhash": "", - "colors": [ - "#349150", - "#510080" - ], - "uri_name": "247-the-simpsons", - "starts_at": 1737196080, - "ends_at": 1737196080, - "always_live": 1, - "locale": "en", - "category_name": "24/7 Streams", - "iframe": "https://ppvs.su/embed/247-the-simpsons", - "viewers": "2", - "substreams": [] - }, - { - "id": 3716, - "name": "(North) Korean Central Television", - "tag": "9AM-10:30PM Pyongyang Time", - "poster": "https://ppvs.su/assets/thumb/7b1146f3a2bd19175749404e676d5127-thumbnail.jpg", - "blurhash": "L68p[-oM00R+L~jtF{bH0Kay~Vf6", - "colors": [ - "#000040", - "#000040" - ], - "uri_name": "korean-central-television", - "starts_at": 1737226800, - "ends_at": 1737237600, - "always_live": 1, - "locale": "en", - "category_name": "24/7 Streams", - "iframe": "https://ppvs.su/embed/korean-central-television", - "viewers": "0", - "substreams": [] - }, - { - "id": 10681, - "name": "Master stream test", - "tag": "South Park/PPV", - "poster": "https://ppvs.su/assets/thumb/c7caf570cf3494e7f9ad1ae3f3122242-thumbnail.jpg", - "blurhash": "L-K_5zRj~qt7?bj[xuofD%j[M{WB", - "colors": [ - "#fffafe", - "#fefcff" - ], - "uri_name": "master-stream-test-delete-12568", - "starts_at": 1756101600, - "ends_at": 1756116000, - "always_live": 1, - "locale": "en", - "category_name": "24/7 Streams", - "iframe": "https://ppvs.su/embed/master-stream-test-delete-12568", - "viewers": "1", - "substreams": [ - { - "id": 10682, - "name": "Family Guy", - "tag": "Family Guy/PPV", - "locale": "en", - "iframe": "https://ppvs.su/embed/" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/M3U8/scrapers/utils/config.py b/M3U8/scrapers/utils/config.py index abae9d5..78275b9 100644 --- a/M3U8/scrapers/utils/config.py +++ b/M3U8/scrapers/utils/config.py @@ -22,25 +22,27 @@ UA = ( ) LOGOS = { - "default": "https://i.gyazo.com/ec27417a9644ae517196494afa72d2b9.png", - "MLB": "https://i.gyazo.com/0fe7865ef2f06c9507791b24f04dbca8.png", - "NBA": "https://i.gyazo.com/773c23570f095a5d549c23b9401d83f4.png", - "NCAA": "https://i.gyazo.com/ca63b40c86e757436de9d34d369b24f8.png", - "NFL": "https://i.gyazo.com/fb4956d7a2fe54a1bac54cd81e1b3f11.png", - "NHL": "https://i.gyazo.com/526607d4e886d5ed1fecca4bff3115e2.png", - "WNBA": "https://i.gyazo.com/02d665a5704118d195dbcd5fa20d5462.png", - "La Liga": "https://i.gyazo.com/3ea07074f7faab98c00493f07f4c6661.png", - "Premier League": "https://i.gyazo.com/5cf939a9669647ec49c5ca61ab34789d.png", - "Serie A": "https://i.gyazo.com/38fd8ea613b0f02780d2314fd49f7595.png", - "Bundesliga": "https://i.gyazo.com/d608cd1fe95c288aba9e03a9b2f2b688.png", - "Ligue 1": "https://i.gyazo.com/e5cd3f3960ea0fc7a10f831b6c79d31d.png", - "Primeira Liga": "https://i.gyazo.com/0b9ff26408609ccb90bf45d60aa13500.png", - "MLS": "https://i.gyazo.com/014b639a369d2bd8a4b97d00a239f330.png", + "Bundesliga": "https://1000logos.net/wp-content/uploads/2020/09/Bundesliga-Logo-500x313.png", + "La Liga": "https://1000logos.net/wp-content/uploads/2019/01/Spanish-La-Liga-Logo-500x281.png", + "Ligue 1": "https://1000logos.net/wp-content/uploads/2019/01/Ligue-1-Logo-500x281.png", + "MLB": "https://1000logos.net/wp-content/uploads/2017/04/MLB-Logo-500x281.png", + "MLS": "https://1000logos.net/wp-content/uploads/2017/10/MLS-logo-500x393.png", + "NBA": "https://1000logos.net/wp-content/uploads/2025/08/Jerry-West-the-NBA-Logo-500x281.png", + "NCAA": "https://1000logos.net/wp-content/uploads/2021/12/NCAA-Logo-500x281.png", + "NFL": "https://1000logos.net/wp-content/uploads/2017/05/NFL-logo-500x338.png", + "NHL": "https://1000logos.net/wp-content/uploads/2017/05/NHL-Logo-500x333.png", + "Premier League": "https://1000logos.net/wp-content/uploads/2017/05/Premier-League-logo-500x210.png", + "Primeira Liga": "https://1000logos.net/wp-content/uploads/2022/01/Portuguese-Primeira-Liga-logo-500x281.png", + "Serie A": " https://1000logos.net/wp-content/uploads/2019/01/Italian-Serie-A-Logo-500x281.png", + "UEFA Champions League": "https://1000logos.net/wp-content/uploads/2022/01/UEFA-Champions-League-logo-500x281.png", + "WNBA": "https://1000logos.net/wp-content/uploads/2018/09/logo-wnba-500x287.png", + "default": "https://i.gyazo.com/978f2eb4a199ca5b56b447aded0cb9e3.png", } alias_map = { - "NCAA": ["NCAAF", "NCAAB", "CBB", "CFB"], + "NCAA": ["CBB", "CFB", "NCAAB", "NCAAF"], "Premier League": ["EPL"], + "UEFA Champions League": ["Champions League", "UCL"], } for base, aliases in alias_map.items(): @@ -100,7 +102,7 @@ def is_fresh( nearest_hr: bool, exp: int, ) -> bool: - ts = entry.get("timestamp", 31496400) + ts: float | int = entry.get("timestamp", 31496400) if nearest_hr: ts = near_hr(datetime.fromtimestamp(ts)) @@ -122,7 +124,7 @@ def load_cache( if per_entry: return {k: v for k, v in data.items() if is_fresh(v, nearest_hr, exp)} - ts = data.get("timestamp", 31496400) + ts: float | int = data.get("timestamp", 31496400) if nearest_hr: ts = near_hr(datetime.fromtimestamp(ts))