Light theme default + yt-dlp search fallback
This commit is contained in:
@@ -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
|
||||
```
|
||||
Reference in New Issue
Block a user