feat(preferences): section langues a telecharger (defaut fr+en), transcripts filtres cote serveur et watch
CI / build-and-test (push) Successful in 13m50s
CI / build-and-test (push) Successful in 13m50s
This commit is contained in:
@@ -326,3 +326,7 @@ SmartTube (`yuliskov/SmartTube`, 34k stars) ne touche ni la Data API ni les Goog
|
||||
- Limites connues : pas de `getTrending` en youtubei.js v18 → trending reste sur scrape ; continuations parfois redondantes (dédup + garde-fou 12) ; même combat anti-ban IP qu'avant (cookies/PO-Token/proxy réutilisés côté yt-dlp, session InnerTube sans auth).
|
||||
- Complément 2026-09-26 : Watch → sidebar « connexes » branchée sur le vrai watch-next (`loadRelatedSuggestions()` utilise `GET /api/details/youtube/:id` → `related[]`, fallback recherche-par-titre pour les autres providers et en cas d'échec) ; `docker-compose/.env.example` + `README.md` (endpoints + roadmap) à jour ; idée #2 (pagination/infinite scroll) clôturée.
|
||||
- Complément transcript InnerTube : découverte des pistes via `getInfo().captions` (`YT_TRANSCRIPT_SOURCE`, défaut `innertube-first`) adaptée au format yt-dlp → `pickTrack`/`orderedTracks`/`parseTrackText` inchangés ; 0 piste InnerTube = `no_subtitles` direct (même backend que le lecteur) ; fallback yt-dlp conservé. Vérifié live (`lang=en` → 217 lignes) ; `test:transcript` 17/17.
|
||||
- Complément 2026-09-26 (TiFkNMYFvCM) : l'IP d'egress (datacenter) est throttle sur timedtext (200-vide/Sorry/429) quel que soit le client (node, curl, impersonation chrome) — youtube.com en résidentiel n'est pas affecté. Ajout dernier-recours `translatedFallbacks()` (`&tlang=`, YouTube-only, borné à 2) quand la langue demandée reste murée mais une autre passe ; `test:transcript` 18/18. Bouton validé : découverte bien via InnerTube (2 pistes auto `en-US`+`fr`), `fr` → 511 lignes, sélecteur de langue + Réessayer déjà gérés côté Watch.
|
||||
- Rappel fond : IP d'egress throttle sur le **contenu** timedtext (pas la découverte) ; mitigations : `ytdlpNetOpts()` (cookies + proxy) sur les appels yt-dlp, `&tlang=`, cache 24 h, UI retry + sélecteur.
|
||||
- Bug 2026-09-26 (vrai root cause du bouton Transcript) : la route était `app.get('/api/transcript/...')` alors que le front prod appelle `/proxy/api/transcript/...` (apiBase, port ≠ 4000) → aucun match → fallback SPA → **index.html en 200** → panneau "Aucun sous-titre disponible" (en dev, le proxy rewrite masquait le bug). Fix : route montée sur le router `r` (`/api` + `/proxy/api`), idem `rumbleRouter`. Vérifié live sur les deux préfixes (511 lignes).
|
||||
- Complément 2026-09-26 (transcript "n'importe quelle langue") : serveur essaie désormais **toutes** les langues (`firstPerLanguage`, max 10 + 2 traductions `&tlang=`, YouTube) au lieu d'un slice arbitraire à 5 ; UI `watch.component` avec auto-fallback (essaie automatiquement la première langue non tentée listée par le backend, garde anti-boucle, `Réessayer` réinitialise). Logs live : `lang=de` inconnue → parcourt `en` → `en+tlang=de` → yt-dlp avant 502. `test:transcript` 19/19.
|
||||
|
||||
Reference in New Issue
Block a user