Règle partagée front/back : flag natif, verticale stricte (ratio ≤ 0.8, ≤ 90 s), verticale sans durée jamais short, repli durée (70 YT / 75 autres). Dimensions alimentées par Dailymotion/Odysee/PeerTube, flag maison Rumble supprimé, condition innertube morte simplifiée. Shorts : langues utilisateur (UI + transcripts) via relevanceLanguage/languageOneOf/Twitch language, son activé par défaut.
This commit is contained in:
@@ -136,7 +136,11 @@ export function mapVideoNode(n) {
|
||||
|| bestThumb(n.thumbnail)
|
||||
|| bestThumb(n.on_tap_endpoint?.payload?.thumbnail?.thumbnails)
|
||||
|| undefined;
|
||||
const isShort = /short|reel/i.test(type) || (Number.isFinite(duration) && duration > 0 && duration <= 70 && /short/i.test(title) === false && /reel|short/i.test(type));
|
||||
// Un ShortsLockupView / ReelItem EST un short par construction. L'ancienne
|
||||
// disjonction `|| (durée≤70 && titre sans "short" && type reel|short)` était
|
||||
// morte : subsumée par le premier test (A || (B && C && A) === A), et son
|
||||
// `!/short/i.test(title)` excluait à tort les shorts titrés « …shorts ».
|
||||
const isShort = /short|reel/i.test(type);
|
||||
const badges = Array.isArray(n.badges) ? n.badges.map((b) => b?.label).filter(Boolean) : [];
|
||||
return {
|
||||
title: String(title),
|
||||
|
||||
Reference in New Issue
Block a user