Ajout de la source French-Stream (french-stream.lat) : séries et films

- Scraper DataLife Engine : recherche AJAX, fiches par saison, épisodes via
  ep-data.php (VF/VOSTFR), films via film_api.php, nouveautés /series/
- Config YAML externalisée (sélecteurs réparables sans coder)
- Domaines étendus : uqload.vc, vidzy.cc/.live
- 11 tests (126 au total)
This commit is contained in:
Roman
2026-09-25 14:08:10 +00:00
parent 89d9a98f80
commit 79a44297fd
7 changed files with 629 additions and 9 deletions
+2 -2
View File
@@ -1,4 +1,4 @@
"""Extracteur Uqload (uqload.to/.co/.com/.io) — page embed → mp4/m3u8.
"""Extracteur Uqload (uqload.to/.co/.com/.io/.vc) — page embed → mp4/m3u8.
La page embed contient un jwplayer configuré dans du JS packé
(p,a,c,k,e,d) : `sources:[{file:"https://.../master.m3u8?..."}]`.
@@ -24,7 +24,7 @@ _PATTERNS = (
@register_hoster
class UqloadExtractor(HosterExtractor):
name = "uqload"
domains = ("uqload.to", "uqload.co", "uqload.com", "uqload.io")
domains = ("uqload.to", "uqload.co", "uqload.com", "uqload.io", "uqload.vc")
async def extract(self, embed_url: str) -> VideoLink:
html = await fetch(embed_url)
+2 -2
View File
@@ -1,4 +1,4 @@
"""Extracteur Vidzy (vidzy.org) — page embed videojs → m3u8.
"""Extracteur Vidzy (vidzy.org/.cc/.live) — page embed videojs → m3u8.
La page embed ne contient pas l'URL vidéo en clair : le script videojs appelle
une fonction de décodage inline `atob(s)` + reverse + XOR, avec une graine
@@ -45,7 +45,7 @@ def _decode(b64: str, hostname: str) -> str | None:
@register_hoster
class VidzyExtractor(HosterExtractor):
name = "vidzy"
domains = ("vidzy.org",)
domains = ("vidzy.org", "vidzy.cc", "vidzy.live")
async def extract(self, embed_url: str) -> VideoLink:
html = await fetch(embed_url)