Light theme default + yt-dlp search fallback

This commit is contained in:
iliasmouhcine
2026-08-22 13:02:32 +01:00
commit 7704cae4a0
282 changed files with 52324 additions and 0 deletions
+101
View File
@@ -0,0 +1,101 @@
# Étape 17.12 - Relais local piloté par le downloader natif yt-dlp
## Ce que le log 17.11 a prouvé
La résolution n'est plus le problème :
```text
[HD-WINDOWS] vidéo relayée confirmée: 1920x1080
```
Les deux URLs sont bien `MWEB` et portent bien un PO Token :
```text
videoClient=MWEB videoPOT=true
audioClient=MWEB audioPOT=true
```
Mais le `HttpClient` Dart reçoit encore des 403 :
- audio : dès l'offset 0, même avec un Range réduit à ~1,18 Mo ;
- vidéo : après environ 31 Mo, puis systématiquement au même offset.
Cela invalide l'hypothèse "chunk trop gros" comme cause principale.
## Différence importante avec yt-dlp
Le downloader HTTP officiel de yt-dlp ne se limite pas à ajouter les mêmes
headers. Il utilise son propre stack réseau et sa propre logique de reprise
Range.
L'étape 17.12 arrête donc d'essayer de reproduire ce transport en Dart.
## Nouvelle architecture
```text
libmpv
|
| HTTP Range
v
127.0.0.1
|
| lance yt-dlp --load-info-json -o -
v
yt-dlp HttpFD
|
| URL MWEB + PO Token + headers + Range
v
googlevideo
```
Pour chaque connexion `/video` ou `/audio`, le relais crée temporairement un
info-json local contenant :
- l'URL signée déjà extraite ;
- les headers exacts ;
- le Range demandé par mpv ;
- le `http_chunk_size` yt-dlp ;
- la taille totale.
Puis il demande au `yt-dlp.exe` déjà installé de télécharger cette plage vers
stdout. Le relais retransmet stdout directement à libmpv.
Ainsi Google n'est plus contacté par le `HttpClient` Dart. Le transport
googlevideo est effectué par le même moteur yt-dlp qui a réussi le test manuel.
## Seek
Lors d'un seek, mpv ferme/ouvre une nouvelle requête Range. Le relais lance un
nouveau process yt-dlp à l'offset demandé. Le process précédent est stoppé
lorsque sa connexion n'est plus utile.
## Installation
Aucune dépendance ou script supplémentaire.
Extraire ce ZIP à la racine puis :
```powershell
cd "D:\07-Logiciels\23-youtube_personal"
flutter clean
flutter run -d windows
```
Tester 1080p + son.
## Logs attendus
```text
[HD-WINDOWS][17.12] yt-dlp -> relais yt-dlp natif -> libmpv
[HD-RELAY][17.12] actif sur 127.0.0.1:...
[HD-RELAY][17.12] video: yt-dlp démarre Range=...
[HD-RELAY][17.12] audio: yt-dlp démarre Range=...
```
Succès :
```text
[HD-RELAY][17.12] video: yt-dlp OK ...
[HD-RELAY][17.12] audio: yt-dlp OK ...
[HD-WINDOWS] lecture confirmée: 1920x1080
```