Files
youtube_personal/ETAPE18_4_CHAINES_PERSONNELLES_SPONSORBLOCK.md

3.7 KiB
Raw Permalink Blame History

Étape 18.4 - Chaînes personnelles + chargement vidéos + SponsorBlock

Cette étape corrige les trois points remontés après la capture du menu Chaînes.

1. Les vidéos d'une chaîne se chargent réellement

La page chaîne essaie maintenant en priorité le chemin officiel déjà présent dans l'application :

Google OAuth youtube.readonly
    ↓
channels.list -> playlist uploads
    ↓
playlistItems.list (pagination de 50)
    ↓
videos.list (durée + vues + date)
    ↓
affichage progressif

Elle ne s'arrête plus aux 30 vidéos de l'ancienne version et suit nextPageToken jusqu'à la fin de la playlist d'uploads.

Si le compte Google n'est pas disponible, elle bascule sur le chemin public youtube_explode_dart.getUploadsFromPage().

2. Le classement Chaînes utilise MES vues

Le classement précédent utilisait les vues publiques YouTube. C'était une mauvaise interprétation de la demande.

Nouveau classement :

#1 chaîne avec le plus de lectures dans YouTube Personal
#2 ...
#3 ...

Chaque ouverture réelle d'une vidéo incrémente un compteur local :

youtube_personal.watch_counts.v1

Un changement 1080p -> 4K ne compte PAS comme une nouvelle vue.

Les anciennes entrées de l'historique sont migrées avec au moins 1 vue par vidéo, car l'application ne peut pas reconstruire les répétitions passées qu'elle n'enregistrait pas encore.

Carte exemple :

12 de mes vues • 4 vidéos différentes
La plus regardée par moi (5×) : ...

3. Une chaîne ne m'intéresse pas

Menu ... d'une chaîne :

Cette chaîne ne m'intéresse pas

La chaîne est alors :

- retirée du menu Chaînes
- exclue des prochaines recommandations Radar
- mémorisée localement

Un bouton ANNULER apparaît immédiatement après le masquage.

La page complète de la chaîne possède aussi :

Ne plus me proposer cette chaîne

L'historique existant n'est pas détruit.

4. Sponsors intégrés aux vidéos

Ajout de SponsorBlock, catégorie sponsor uniquement.

YouTube Personal récupère les segments connus et, lorsque la lecture entre dans l'un d'eux :

lecture normale
    ↓
début sponsor détecté
    ↓
seek automatique à la fin du sponsor
    ↓
lecture continue

Notification courte :

Sponsor ignoré automatiquement • 34s

Le mécanisme fonctionne dans le lecteur Windows/Android et aussi dans le Player audio Android lorsque l'écran est verrouillé.

Vie privée SponsorBlock

Le client utilise l'endpoint k-anonymity : il calcule SHA-256(videoId) et n'envoie au serveur que les 4 premiers caractères du hash. Il filtre ensuite localement la réponse pour retrouver la vidéo exacte.

Seule la catégorie sponsor est ignorée. Les intros, outros, rappels de s'abonner et autres catégories ne sont pas sautés.

Test

Extraire le ZIP à la racine puis :

Windows :

cd "D:\07-Logiciels\23-youtube_personal"
flutter run -d windows

Android :

cd "D:\07-Logiciels\23-youtube_personal"
flutter run -d f10778d8

Pas besoin de flutter clean.

Vérifications

  1. Menu Chaînes : le texte doit afficher mes vues, plus les millions de vues publiques.
  2. Ouvrir deux fois une vidéo, revenir dans Chaînes : le compteur augmente.
  3. Changer seulement la qualité : le compteur ne doit pas augmenter.
  4. Cliquer une chaîne : les vidéos doivent commencer à apparaître.
  5. Tester Plus vues sur YouTube dans la page de la chaîne.
  6. Masquer une chaîne puis vérifier qu'elle disparaît du Radar.
  7. Sur une vidéo connue de SponsorBlock, chercher le log :
[SPONSORBLOCK] ... segment(s) sponsor trouvé(s)
[SPONSORBLOCK] skip ...