perf(details): Odysee par l'API LBRY + cache des métadonnées (45 s → 0,2 s)
Mesuré avant : `/api/details/odysee/…` = 44,7 s puis « No video formats found! » — la page Watch restait une minute sans titre, vues, description ni vignette. L'extracteur `lbry` de yt-dlp n'est pas utilisable ici. - Nouvelle branche Odysee dans /api/details : `resolve` de l'API LBRY (`server/providers/odysee.mjs` → `resolveOdyseeVideo`) = 229 ms mesurés, titre/description/vignette/durée/date/canal + avatar. Claim introuvable → 404 `odysee_claim_not_found` (le client garde les données du flux), panne → 502 `odysee_details_failed`. Jamais de repli yt-dlp (45 s pour échouer). - `views` volontairement OMIS pour Odysee : ni LBRY ni lighthouse n'exposent de compteur pour un claim isolé (l'`effective_amount` est un montant LBC). - Cache mémoire de /api/details : 6 h, LRU 500 (`DETAILS_CACHE_TTL_MS`, `DETAILS_CACHE_MAX_ENTRIES`) — métadonnées immuables, chaque /watch relançait un dump complet. - `views`/`duration` ne sont plus émis quand ils valent 0 : un 0 écrasait la valeur du flux côté client (merge sur `typeof === 'number'`), d'où les « 0 vue » sur les fournisseurs muets — même doctrine que `parseRumbleViews` (« jamais de compteur à 0 »). - Mapping pur `odyseeClaimToVideo` testé hors ligne : 21 assertions, `npm run test:odysee`.
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
"fixtures:record": "node ./server/tests/record_provider_shapes.mjs",
|
||||
"doc:providers": "node ./server/tests/generate-provider-doc.mjs",
|
||||
"test:rumble": "node ./server/tests/rumble-ld.test.mjs",
|
||||
"test:odysee": "node ./server/tests/odysee-resolve.test.mjs",
|
||||
"test:cache": "node ./server/tests/search-cache.test.mjs",
|
||||
"test:videos": "node ./server/tests/videos_catalog.test.mjs",
|
||||
"test:channelref": "node ./server/tests/channel_ref.test.mjs",
|
||||
|
||||
Reference in New Issue
Block a user