Skip to content

Latest commit

 

History

History
618 lines (451 loc) · 47.3 KB

File metadata and controls

618 lines (451 loc) · 47.3 KB
NiakVIO

English · Français

Le moteur communautaire qui agrège, teste, répare et maintient les providers Nuvio.

VO · VF  •  Mobile · Desktop · TV

Node Licence Nuvio


Ajouter NiakVIO à Nuvio

Manifest général — recommandé (Comment l’ajouter ?)

Tous les providers publiés : VF, VO et autres langues explicitement déclarées par les providers ou les flux.

https://raw.githubusercontent.com/niakw/NiakVIO/refs/heads/main/manifest.json

Manifest francophone (Comment l’ajouter ?)

Projection centrée sur les providers proposant du français lorsque cette langue est explicitement déclarée par le provider ou le flux.

https://raw.githubusercontent.com/niakw/NiakVIO/refs/heads/main/vf/manifest.json

Manifest VO sans anime (Comment l’ajouter ?)

Copie du manifest général en retirant les providers qui déclarent uniquement le type anime ou dont l'id / nom contient anim (insensible à la casse). Un provider mixte film/série/anime reste présent sauf si son identité indique clairement qu'il est orienté anime.

https://raw.githubusercontent.com/niakw/NiakVIO/refs/heads/main/no-anime/manifest.json

Manifest VF sans anime (Comment l’ajouter ?)

Copie du manifest francophone avec le même filtre déterministe : type anime seul, ou anim présent dans l'id / nom du provider.

https://raw.githubusercontent.com/niakw/NiakVIO/refs/heads/main/vf-no-anime/manifest.json

Badges StreamBadge — recommandé (Comment les ajouter ?)

Pour un réglage unique au niveau du compte Nuvio, utilisez le feed Fusion v2. Il emploie les variantes 96×40 avec chip sombre conçues pour rester lisibles sur fonds sombres comme clairs.

Fusion v2 — recommandé

https://raw.githubusercontent.com/niakw/NiakVIO/main/assets/stream-badges-fusion-v2.json

NuvioTV conserve localement les règles d'un feed déjà importé. Si l'ancien stream-badges-fusion.json avait déjà été ajouté, supprimez cet import puis ajoutez Fusion v2 : l'URL versionnée force un import frais des règles corrigées.

Feeds spécifiques si le client peut sélectionner le thème :

Fond sombre / gris

https://raw.githubusercontent.com/niakw/NiakVIO/main/assets/stream-badges-dark.json

Fond clair / blanc

https://raw.githubusercontent.com/niakw/NiakVIO/main/assets/stream-badges-light.json

Catalogue complet et mapping Core/Brain/UI : badge_catalog_v2_complete.json · mapping_core_brain_ui_v2_complete.json · documentation badges/assets.

Dans Nuvio, copiez l'URL du manifest souhaité dans la gestion des plugins/providers, puis ajoutez le feed badges dans les réglages StreamBadge lorsque cette fonction est disponible. Le feed StreamBadge est indépendant du manifest providers.

Les URL restent stables. NiakVIO peut faire évoluer derrière elles les bundles, versions, domaines, règles runtime, preuves et états d'activation.

NiakVIO ne stocke ni n'héberge de vidéo. Le projet maintient des manifests, des métadonnées, des règles de compatibilité et des bundles de providers consommés côté client.

Important

Références d'œuvres = fixtures de test. Les titres, années, saisons ou épisodes visibles dans ce README, le code, les logs CI et les artefacts servent uniquement d'identifiants déterministes de test pour vérifier le matching, la compatibilité et les régressions de type « mauvais média ». Leur présence ne constitue ni un catalogue, ni une mise à disposition, ni une recommandation, ni une déclaration sur les droits/licences d'un service tiers. NiakVIO ne doit pas publier de média, extrait, sous-titre, clé de déchiffrement, jeton d'accès ou URL complète de lecture. Les exceptions et limitations au droit d'auteur varient selon les pays : NiakVIO ne présume d'aucune exception locale et n'accorde aucun droit d'accès ou d'utilisation. Voir TESTING_NOTICE.md et DISCLAIMER.md.


Écosystème et sources

Clients Nuvio officiels

Repositories providers suivis

NiakVIO consulte plusieurs upstreams au lieu de dépendre d'une seule source ; les doublons canoniques sont éliminés avant Health/Repair :

La provenance et les licences tierces sont suivies dans PROVENANCE.json et THIRD_PARTY_NOTICES.md.


Pourquoi NiakVIO ?

Un provider peut fonctionner aujourd'hui puis casser demain à cause d'un domaine déplacé, d'une API modifiée, d'un lecteur remplacé, d'un token devenu obsolète ou d'une différence entre Mobile, Desktop et TV.

NiakVIO ajoute une couche de maintenance entre les repositories providers et Nuvio :

  • un point d'installation unique plutôt qu'une collection de manifests à gérer séparément ;
  • plusieurs upstreams observés, puis une seule entrée canonique déterministe retenue avant Health/Repair ;
  • réparation automatique bornée lorsque la meilleure variante connue ne fonctionne plus ;
  • contrôle réel du média, pas seulement de l'URL retournée ;
  • vérification de l'œuvre, de la saison et de l'épisode pour éviter les faux positifs ;
  • attention particulière au français sans inventer VF à partir d'un simple nom de domaine ;
  • preuves séparées Mobile, Desktop et TV ;
  • dernier état sain conservé lorsqu'une nouvelle observation est seulement inconclusive ;
  • publication atomique et fail-closed pour empêcher une génération partielle de remplacer silencieusement un état sain.

L'objectif n'est donc pas d'afficher le plus grand nombre possible de providers. L'objectif est de publier le plus de providers réellement utiles possible, avec suffisamment de preuves pour savoir pourquoi ils fonctionnent — ou pourquoi ils ne fonctionnent plus.


Ce que NiakVIO maintient automatiquement

Providers et variantes

Pour une même famille, NiakVIO peut disposer de plusieurs bundles issus des upstreams, d'un dernier état publié et d'un LKG. La sélection d'un sibling sain est tentée avant une réparation structurelle.

Domaines et routes

Le moteur distingue notamment :

  • hub d'information ;
  • domaine terminal ;
  • redirection ;
  • API ;
  • peer observé ;
  • domaine historique encore cohérent ;
  • route appartenant à un autre provider.

Une migration de domaine n'est pas promue simplement parce qu'un serveur répond en HTTP.

Extraction média

Lorsque cela est nécessaire, la récupération peut suivre la chaîne réelle :

provider
  → recherche / catalogue / API
  → fiche exacte de l'œuvre
  → saison / épisode
  → iframe / lecteur
  → JavaScript / XHR / JSON
  → playlist / média final

Les budgets de pages, embeds, hosts, fetches, taille de réponse et temps empêchent cette exploration de devenir une navigation sans limite.

Lecture réelle

Une URL n'est pas considérée comme valide uniquement parce qu'elle se termine par .m3u8 ou .mp4. Les contrôles peuvent confirmer ou rejeter :

  • playlist HLS réelle (#EXTM3U) ;
  • DASH/MPD ;
  • signatures de conteneurs ;
  • HTML ou JSON déguisé en média ;
  • publicité, preview ou asset parasite ;
  • redirection incohérente ;
  • premier segment ou contenu inaccessible ;
  • contexte Referer / Origin / headers nécessaire à la lecture.

Identité du contenu

Un flux jouable correspondant à la mauvaise œuvre est un échec, pas un succès.

Les preuves peuvent combiner titre, alias, année, type, saison, épisode, metadata catalogue/player, nom du média et durée attendue/mesurée.

Langues

La langue d'un flux n'est jamais déduite d'un seul indice. NiakVIO conserve en priorité les indications explicitement fournies par le provider ou le flux et peut les croiser avec les métadonnées disponibles. Les sous-titres ne sont ni inférés ni garantis par NiakVIO : seule une indication explicitement exposée par un provider ou dans la description/métadonnée d'un flux peut être affichée.


Compatibilité Nuvio

Les commits clients audités sont suivis dans automation/nuvio-client-upstreams.json et sources.json. Les Labs résolvent le HEAD officiel courant de chaque branche client suivie, vérifient le drift de contrat, puis utilisent ce SHA exact comme baseline en lecture seule.

Client Repository Preuve native retenue
Nuvio Mobile Android NuvioMedia/NuvioMobile chemin Android officiel et stack de lecture du client
Nuvio Mobile iOS NuvioMedia/NuvioMobile runtime plugin iOS Full + simulateur iOS + bridge lecteur MPV officiel
Nuvio Desktop NuvioMedia/NuvioDesktop bridges/lecteurs natifs macOS et Windows ; le stub Linux n'est pas une preuve lecteur
NuvioTV NuvioMedia/NuvioTV Android TV officiel avec Media3/ExoPlayer

Le contrat logique ARCHI 2 est commun, mais une preuve Desktop ne vaut jamais automatiquement preuve Mobile ou TV.

Les labs natifs parcourent les providers compatibles avec la plateforme, y compris les providers enabled:false. La couverture standard est désormais 1/1/1 par provider selon les types déclarés : au maximum une œuvre film, une œuvre série et une œuvre anime, chacune choisie dans la liste centrale de fixtures. Un provider n'est jamais rejoué sur une seconde œuvre du même type dans le Lab standard. Les routes non déclarées ne sont plus ajoutées comme probes automatiques ; leur découverte appartient au Learning/Deep ciblé. Ces Labs produisent des preuves health/lecteur mais ne bloquent pas le fonctionnement ni la publication normale.

Les snapshots AVD TV/Mobile Android restent réutilisables lorsqu'ils évitent une reconstruction coûteuse. Le cache Gradle est désactivé sur les Labs natifs pour préserver le quota de cache GitHub Actions, et leurs artifacts temporaires sont conservés 1 jour. Les retests ciblés par device restent disponibles manuellement.


Providers actifs & résultats natifs vérifiés

PROVIDERS ACTIFS NATIFS VERIFIES PREUVES LECTEUR DERNIERE PREUVE

Ici, NiakVIO n'affiche que des succès natifs réellement conservés. Une preuve signifie que le lecteur officiel Nuvio a atteint un état sain pour le provider + fixture de test + device exacts. L'absence de preuve n'est jamais maquillée en succès — et n'est pas non plus présentée comme un échec.

Cadre des œuvres citées : les titres/épisodes du tableau sont des fixtures de test, pas un catalogue ni une offre de contenu. Les résultats décrivent uniquement une observation technique sanitizée. Voir TESTING_NOTICE.md et DISCLAIMER.md.

14 providers disposent actuellement d'au moins une preuve lecteur native conservée, sur 4 cas de lecture distincts et 1 plateforme native déjà représentée. L'inventaire complet reste synchronisé automatiquement sur manifest.json.

📡 Couverture des lecteurs officiels

Cette vue distingue support du lecteur et preuve positive conservée : les cinq cibles natives sont suivies en permanence, même lorsqu'aucune preuve saine n'a encore été retenue pour l'une d'elles.

Lecteur officiel Preuves positives conservées Providers avec preuve Dernière preuve État
📺 TV 32 14 2026-08-23 ✅ Couvert par une preuve native
🤖 Mobile Android 0 0 🟡 Suivi actif · aucune preuve positive conservée
🍎 Mobile iOS 0 0 🟡 Suivi actif · aucune preuve positive conservée
🖥️ Desktop macOS 0 0 🟡 Suivi actif · aucune preuve positive conservée
🪟 Desktop Windows 0 0 🟡 Suivi actif · aucune preuve positive conservée

✅ Lectures natives confirmées

Provider Fixtures de test réellement validées Lecteurs officiels confirmés Preuves Dernière validation
  Cineby 📺 Breaking Bad S01E01 · Série
🎌 Jujutsu Kaisen S01E01 · Anime
🎬 Sinners 2025 · Film
🎬 Sinners · Film
📺 TV 4 2026-08-23
  VidEasy 📺 Breaking Bad S01E01 · Série
🎌 Jujutsu Kaisen S01E01 · Anime
🎬 Sinners 2025 · Film
🎬 Sinners · Film
📺 TV 4 2026-08-23
  Castle 📺 Breaking Bad S01E01 · Série
🎌 Jujutsu Kaisen S01E01 · Anime
🎬 Sinners 2025 · Film
📺 TV 3 2026-08-23
  HindMoviez 📺 Breaking Bad S01E01 · Série
🎌 Jujutsu Kaisen S01E01 · Anime
🎬 Sinners 2025 · Film
📺 TV 3 2026-08-23
  PlayIMDb 📺 Breaking Bad S01E01 · Série
🎌 Jujutsu Kaisen S01E01 · Anime
🎬 Sinners 2025 · Film
📺 TV 3 2026-08-23
  Purstream 📺 Breaking Bad S01E01 · Série
🎌 Jujutsu Kaisen S01E01 · Anime
🎬 Sinners 2025 · Film
📺 TV 3 2026-08-23
  VegaMovies 📺 Breaking Bad S01E01 · Série
🎌 Jujutsu Kaisen S01E01 · Anime
🎬 Sinners 2025 · Film
📺 TV 3 2026-08-23
  AnimeZeY 📺 Breaking Bad S01E01 · Série
🎌 Jujutsu Kaisen S01E01 · Anime
📺 TV 2 2026-08-23
  HDGharTV 📺 Breaking Bad S01E01 · Série
🎬 Sinners 2025 · Film
📺 TV 2 2026-08-23
  AnikotoTV 🎌 Jujutsu Kaisen S01E01 · Anime 📺 TV 1 2026-08-22
  Anime-Sama 🎌 Jujutsu Kaisen S01E01 · Anime 📺 TV 1 2026-08-23
  AnimeSama.co (DLE Mirror) 🎌 Jujutsu Kaisen S01E01 · Anime 📺 TV 1 2026-08-22
  HiAnime 🎌 Jujutsu Kaisen S01E01 · Anime 📺 TV 1 2026-08-22
  StreamZo 🎬 Sinners 2025 · Film 📺 TV 1 2026-08-23
🟢 Voir les 60 providers actifs — inventaire complet synchronisé au manifest

La liste ci-dessous décrit l'état de publication, pas une supposition sur la lecture. Les providers déjà prouvés natifs sont signalés ; les autres restent simplement actifs dans le manifest jusqu'à ce qu'une preuve positive soit conservée.

Provider Types publiés État de confiance public
  AnikotoTV 🎌 Anime · 🎬 Film · 📺 Série Preuve native conservée · 1 validation lecteur
  Anime-Sama 🎬 Film · 🎌 Anime · 📺 Série Preuve native conservée · 1 validation lecteur
  AnimeSama.co (DLE Mirror) 🎬 Film · 🎌 Anime · 📺 Série Preuve native conservée · 1 validation lecteur
  AnimeZeY 🎬 Film · 📺 Série Preuve native conservée · 2 validations lecteur
  Castle 🎬 Film · 📺 Série Preuve native conservée · 3 validations lecteur
  Cineby 🎬 Film · 📺 Série Preuve native conservée · 4 validations lecteur
  HDGharTV 🎬 Film · 📺 Série Preuve native conservée · 2 validations lecteur
  HiAnime 🎌 Anime · 📺 Série Preuve native conservée · 1 validation lecteur
  HindMoviez 🎬 Film · 📺 Série Preuve native conservée · 3 validations lecteur
  PlayIMDb 🎬 Film · 📺 Série Preuve native conservée · 3 validations lecteur
  Purstream 🎬 Film · 📺 Série · 🎌 Anime Preuve native conservée · 3 validations lecteur
  StreamZo 🎬 Film · 📺 Série · 🎌 Anime Preuve native conservée · 1 validation lecteur
  VegaMovies 🎬 Film · 📺 Série Preuve native conservée · 3 validations lecteur
  VidEasy 🎬 Film · 📺 Série Preuve native conservée · 4 validations lecteur
  4KHDHub 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  4KHDHub-NEW 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  AllMovieLand 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  AniDB 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  AnimeKai 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  AnimePahe 🎌 Anime · 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  AnimeSalt 🎌 Anime · 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  AnimesUltra 🎬 Film · 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  Animetsu 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  AnimeVOSTFR 🎬 Film · 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  AnimoFlix 🎬 Film · 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  AniZone 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  CinemaCity 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  CineMM 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  Coflix 🎬 Film · 📺 Série · 🎌 Anime 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  DooFlix 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  DuLourd 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  Flemmix 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  French-Manga 🎬 Film · 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  HDHub4u 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  Kurage 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  MovieBlast 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  Movies4u 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  MoviesDrive 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  MoviesHunt 🎬 Film 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  MoviesMod 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  Movix 🎬 Film · 📺 Série · 🎌 Anime 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  Mugiwara-no-Streaming 🎬 Film · 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  Neko-Sama 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  Papadustream 🎬 Film · 📺 Série · 🎌 Anime 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  Peachify 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  PersianStremio 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  Sekai 🎬 Film · 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  StreamFlix 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  ToFlix 🎬 Film · 📺 Série · 🎌 Anime 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  UHDMovies 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  VidFast 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  VidLink 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  VidRock 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  VoirAnime 🎬 Film · 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  VoirAnime.homes 🎌 Anime · 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  VoirAnime.rip 🎬 Film · 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  Vostfree 🎬 Film · 🎌 Anime · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  Wookafr 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  YFlix 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive
  ZinkMovies 🎬 Film · 📺 Série 🟢 Actif dans le manifest · prochaine preuve native conservée dès validation positive

Pourquoi ces résultats sont plus stricts qu'une simple liste de providers

Contrôle NiakVIO Manifest/provider brut
Provider présent dans un manifest
Plusieurs upstreams comparés avant promotion Variable
Média final réellement atteint Non garanti
Lecteur officiel vérifié par plateforme ✅ TV / Android / iOS / macOS / Windows Non garanti
Identité œuvre / année / saison / épisode contrôlée Non garanti
HLS / DASH / média direct validé au-delà de l'extension URL Non garanti
Mauvais média jouable classé comme échec Non garanti
Repair Brain puis retest avant promotion Non
Dernier état sain + publication fail-closed Non garanti
Historique machine des preuves positives Variable

Lecture de la vitrine : signifie preuve positive conservée, jamais simple détection d'URL. Les résultats affichés restent fixes tant qu'une nouvelle preuve native plus récente ne vient pas les compléter ; un run inconclusif ne détruit pas une preuve saine existante.

Source machine : automation/provider-device-results.json · Inventaire : manifest.json · Les prochains Deep/Brain/Labs enrichissent automatiquement cette vitrine uniquement avec des preuves positives qualifiées.


Architecture technique

ARCHI 2 : une seule source de vérité

NiakVIO repose sur Provider Engine V2 / ARCHI 2.

provider_catalog.json est le registre canonique de publication. manifest.json et vf/manifest.json sont des projections déterministes du même catalogue et non deux bases concurrentes.

3 upstreams + état publié/LKG
              │
              ▼
      Discovery multi-variantes
              │
              ▼
      hubs / DNS / domaines
              │
              ▼
      provider_catalog.json
              │
              ▼
 ProviderSpec + Resolver Core V2
              │
              ▼
        Evidence Matrix
              │
              ▼
        Repair Brain v4
              │
              ▼
 média + identité + langue + contexte
              │
        ┌─────┼─────┐
        ▼     ▼     ▼
     Mobile Desktop TV
        └─────┼─────┘
              ▼
      publication fail-closed
        ┌─────┴─────┐
        ▼           ▼
 manifest.json   vf/manifest.json

La description complète se trouve dans ARCHITECTURE.md et l'implémentation du moteur dans engine_v2/README.md.

Frontière de compatibilité

Certaines primitives historiques de scripts/ sont encore utilisées lorsqu'elles assurent une fonction qui n'a pas encore d'équivalent V2 : LKG, adaptation de routes, probes spécialisés, génération de bundle, etc.

Elles restent derrière ARCHI 2 : aucun second manifest, orchestrateur ou système d'activation concurrent ne doit devenir une deuxième source de vérité.


Quick et Deep

Le pipeline principal est .github/workflows/sync.yml.

Quick — maintenance courante

Quick peut notamment :

  • rafraîchir hubs et domaines ;
  • découvrir les variantes upstream ;
  • comparer les siblings ;
  • conserver le bundle publié/LKG ;
  • lancer une réparation bornée sur les familles non résolues ;
  • publier une amélioration lorsqu'elle est effectivement prouvée.

Il évite d'attendre un Deep pour une simple migration de domaine ou une réparation déjà comprise.

Deep — reconstruction et preuve large

Deep est réservé aux opérations plus coûteuses :

  • nouvelles variantes et connaissances provider ;
  • corpus plus large ;
  • intégration d'un nouveau provider ;
  • changement structurel du moteur ;
  • reconstruction ou recherche de route plus profonde ;
  • validation stricte d'identité, de qualité et de transport.

Un changement courant ne force donc pas automatiquement une reconstruction profonde de tout le système.


Repair Brain et apprentissage

Le Repair Brain ne considère pas no_streams comme une cause. Il cherche à classer l'étape fautive : DNS, accès, recherche, fiche, épisode, player, extraction média, contexte playback, transport, identité ou contrat Nuvio.

Sa boucle de travail est :

diagnostic
   ↓
hypothèse de réparation
   ↓
mutation en sandbox
   ↓
retest lecteur officiel
   ↓
acceptation ou mémoire d'échec

Une stratégie échouée peut être mémorisée pour éviter de répéter mécaniquement le même repair. Une stratégie réussie n'est réutilisable automatiquement qu'après les preuves prévues par la politique du moteur.

Le Brain Learning Lab est séparé de la publication : il travaille en sandbox, produit une mémoire sanitizée et n'a pas le droit de publier directement un provider ou un manifest. La mémoire de réparation lecteur conserve les résultats des retests officiels et les IDs de runs déjà importés afin d'éviter le double apprentissage d'une même preuve. L'import automatique est limité aux runs lecteurs issus de main ; une preuve de PR ne modifie pas silencieusement la mémoire persistante.

Un audit historique 5.20.63 sert de bootstrap de départ afin de confronter les nouvelles observations à un état antérieur riche. Les apprentissages futurs doivent ensuite être portés par les preuves du moteur, les corpus natifs et la mémoire d'expérience du Brain — pas par une liste humaine de providers à forcer.


LKG et quarantaine

Une mise à jour upstream vide ou cassée ne doit pas écraser un provider publié sain.

NiakVIO peut conserver :

  • snapshots LKG upstream ;
  • bundle publié comme sibling ;
  • état d'activation précédemment prouvé ;
  • routes et domaines historiquement cohérents ;
  • provenance et catégories validées.

Un signal inconclusif peut conserver le dernier état sain. La quarantaine est destinée aux contradictions fortes de sécurité ou d'identité, pas à un simple zéro résultat isolé.


Corpus natif et couverture

Films, séries et anime sont des dimensions de test distinctes. La cible de largeur du projet est 10 providers jouables par œuvre, dont au moins 3 VF lorsque le catalogue permet réellement de les obtenir.

Cette cible n'autorise aucun faux positif : mauvaise œuvre, mauvais épisode, durée incohérente ou média non lisible ne comptent pas.

Le dispositif comprend :

  • un lab NuvioTV Android TV officiel sur des routes film/TV/anime, tous providers compatibles — actifs ou inactifs — et tous les streams retournés ;
  • un lab Nuvio Mobile Android officiel avec le même contrat de traversal et de lecture ;
  • un lab Nuvio Mobile iOS autonome sur macos-15, avec build Full, simulateur iPhone, runtime plugin iOS officiel et bridge lecteur MPV officiel ;
  • un lab Nuvio Desktop natif macOS/Windows, Linux étant explicitement exclu comme preuve lecteur ;
  • une preuve repository → provider → HTTP → stream → lecteur, plus des phases frontend capturées ;
  • des retests ciblés par device disponibles manuellement sans relancer toute la matrice ;
  • un sandbox Brain borné qui peut matérialiser des mutations provider génériques justifiées et, pendant l'apprentissage, lancer un Lab client ciblé sur un seul provider ; la fixture est choisie selon son premier type déclaré (movie, tv ou anime) afin d'éviter de rejouer inutilement toute la matrice ;
  • une mémoire lecteur fail-closed : preuve incomplète = pas d'apprentissage et pas de plan de réparation.

Publication, versions et intégrité

La publication est atomique et fail-closed. La transaction peut inclure :

  • provider_catalog.json ;
  • bundles providers ;
  • manifest.json ;
  • vf/manifest.json ;
  • provenance ;
  • états domaine/LKG ;
  • versions ;
  • FILE-HASHES.json ;
  • SHA256SUMS.json ;
  • PATCH-SHA256SUMS.txt.

Une génération incohérente ne remplace pas silencieusement le dernier état publié.

Invalidation des caches Nuvio

Lorsqu'une transaction change réellement une donnée visible côté client :

  • le patch provider peut être augmenté ;
  • une réactivation peut faire tourner l'ID client case-only pour éviter un ancien état local désactivé ;
  • la projection VF est resynchronisée depuis le catalogue ;
  • la release globale est propagée aux manifests et métadonnées associées ;
  • un rerun sans changement reste idempotent.

Workflows principaux

Workflow Rôle
sync.yml discovery canonique → repair borné → validation → publication Quick/Deep
add-provider.yml onboarding full-auto structuré : hub/direct/Telegram/recherche → ProviderBase propre → Labs → publication sous preuve
canonical-media-types.yml contrats media, evidence native, cache et mémoire Brain
github-actions-gate.yml sécurité et invariants des workflows
native-mobile-android-reader.yml preuve native Android TV + Nuvio Mobile Android autonome
native-corpus-device-targeted.yml corpus ciblé manuel TV, Mobile, Desktop ou tous les clients
native-mobile-ios-reader.yml preuve native Nuvio Mobile iOS autonome
native-desktop-reader-acceptance.yml preuve lecteur officielle Desktop macOS/Windows
native-reader-learning-sync.yml import idempotent des résultats lecteur validés de main
provider-results-readme-sync.yml fusion des nouvelles preuves lecteur positives dans la matrice README
brain-learning-lab.yml observation quotidienne du catalogue complet + file Learning indépendante de 60 min, persistante entre les jours
brain-branch-maintenance.yml rebase la mémoire Brain sur main et supprime les branches proposal fermées
availability.yml disponibilité des providers publiés
domain-refresh.yml observation des domaines
core-media-finalize-main.yml fixed-point Core, non-régressions Engine v2 et intégrité de publication
provider-catalogue-breadth-lab.yml largeur de catalogue
provider-status-export.yml snapshot diagnostic
external-code-audit.yml rafraîchissement des preuves SonarQube Cloud / DeepSource / CodeScene
weekly-upstream-provider-discovery.yml découverte hebdomadaire en lecture seule des nouveaux providers upstream
purge-actions-history.yml suppression hebdomadaire des runs Actions terminés de plus de 7 jours

La branche brain-learning/proposals ne conserve que la mémoire sanitizée et est reconstruite sur le dernier main. La branche brain-repair/proposal est temporaire : elle est supprimée lorsqu'aucune PR Brain n'est ouverte, afin que le proposal suivant reparte du main courant.

Les anciens labs à refs clientes mutables, les preuves Desktop Linux, les workflows provider-spécifiques et les orchestrateurs superseded ne font pas partie de l'architecture cible.


Structure du repository

Niakvio/
├── provider_catalog.json            # source canonique de publication
├── manifest.json                    # projection générale
├── vf/manifest.json                 # projection francophone
├── engine_v2/                       # Provider Engine V2 / ARCHI 2
│   ├── src/                         # contrats, resolver, repair, evidence
│   ├── scripts/                     # ingestion, observation, apprentissage
│   ├── config/                      # politiques et adapters
│   └── tests/                       # invariants V2
├── providers/                       # bundles publiés hashés
├── scripts/                         # primitives runtime/compatibilité nécessaires
├── automation/                      # upstreams, LKG et états durables
├── tests/                           # non-régressions publication/compatibilité
├── .github/workflows/               # production, labs et preuves natives
├── PROVENANCE.json
├── FILE-HASHES.json
├── SHA256SUMS.json
└── PATCH-SHA256SUMS.txt

Tests locaux

Prérequis : Node.js 24+ et Python 3.

npm install
npm test
node engine_v2/tests/provider-catalog.test.mjs

Diagnostics :

npm run diagnostics

Les tests locaux ne remplacent pas la validation native lorsqu'un changement touche le playback ou le contrat d'un client Nuvio.


Politique de branches

  • main : unique branche de code, état stable et publiable ;
  • brain-learning/proposals : mémoire sanitizée persistante du Brain, sans code de production ni publication autonome ;
  • les Labs TV/Mobile Android/Mobile iOS/Desktop utilisent directement le SHA de main et les dépôts clients Nuvio officiels comme baselines en lecture seule ;
  • aucune branche lab/*, fix/*, ci/*, proof/*, tmp/*, chore/*, refactor/* ou brain-repair/* n'est conservée comme branche de travail.

Les réparations, tests et nettoyages sont matérialisés sur main. La mémoire Brain séparée reste non publiable et ne peut pas contourner les gates de production.


Sécurité, responsabilité et indépendance

Le moteur applique des budgets de workers, des protections réseau/SSRF, des contrôles d'identité, une publication fail-closed et une sanitisation des artefacts CI. Les secrets, tokens, cookies, headers sensibles et URL signées ne doivent pas être persistés dans la mémoire d'apprentissage publique.

NiakVIO est un projet communautaire indépendant, non affilié aux développeurs de Nuvio ni aux services tiers référencés. Le projet ne contrôle pas la disponibilité, le contenu, les droits ou les pratiques de sites tiers. L'utilisation doit respecter la législation applicable et les conditions des services concernés.

Voir TESTING_NOTICE.md, DISCLAIMER.md, LICENSE, NOTICE, SECURITY.md, CONTRIBUTING.md et CODE_OF_CONDUCT.md.