ÉpingléForge

il y a 12 j

Comment fonctionnent l’import Overframe et la sync des ids

Framelab · Équipe

Ceci est la note produit longue pour Capture : ce qui se passe après le clic sur Importer, quelles informations circulent, comment les emplacements Overframe deviennent des emplacements de Forge, et comment nous gardons les ids numériques Overframe reliés aux noms du wiki. Elle complète Capture vs import par capture d’écran et la synchronisation nocturne des données Warframe.

Overframe est un site de builds tiers. Framelab ne se connecte pas à Overframe, ne stocke pas votre compte Overframe, et ne parcourt pas le site public en boucle pour les builds des autres. L’import est lancé par vous, pour une URL de build public (ou un collage que vous avez pris vous-même sur cette page).

Ce qu’il vous faut

  • Un compte Framelab connecté. L’import anonyme est refusé.
  • Une URL de build Overframe publique du type https://overframe.gg/build/<numéro>/…. Les autres hôtes et les chemins qui ne sont pas un build sont rejetés.
  • Soit un téléchargement serveur de cette page qui fonctionne, soit le favori d’import / le collage lorsque le site public bloque les téléchargements automatisés.

Nous limitons la fréquence des imports. C’est uniquement pour empêcher l’usage de Capture comme aspirateur de masse. Les quotas ne sont pas documentés ici.

Deux boutons sur Capture

1. Import par URL (secondaire). Vous collez le lien du build et validez. Le serveur Framelab tente de télécharger le HTML de cette page publique et de lire le payload de build que la page embarque déjà pour l’interface Overframe.

2. Favori d’import / collage (principal). Overframe est souvent derrière une protection anti-bots. Un téléchargement serveur échoue alors. Le favori s’exécute dans votre navigateur, sur l’onglet Overframe déjà ouvert. Il copie le même payload public (plus les noms visibles sur cette page) dans le presse-papiers et ouvre Capture en mode collage. Vous n’envoyez ni cookies Overframe ni mot de passe à Framelab. Vous envoyez le JSON public du build qui était déjà sur la page.

Si le mode collage est ouvert, Capture peut aussi lire le presse-papiers tout seul lorsque le navigateur l’autorise. Vous pouvez toujours coller à la main.

Pas à pas — import par URL

Imaginez que vous collez https://overframe.gg/build/4829103/caliban-prime-steel-path/ et cliquez sur Importer.

  1. Le navigateur vérifie que vous êtes connecté, que l’URL est une URL de build Overframe, puis envoie cette URL en POST à l’API d’import Framelab (cookie de session, pas l’URL Overframe en paramètre partageable).
  2. L’API confirme la session, applique la limite d’import, et lit le corps. S’il n’y a qu’une URL, elle télécharge la page. Si le corps contient déjà les données de page du favori, elle saute le téléchargement.
  3. Téléchargement (chemin URL seulement). Le serveur suit quelques redirections, uniquement tant qu’elles restent des URL de build Overframe. Un téléchargement bloqué n’est pas un plantage : l’API renvoie un build vide plus un avertissement « fetch failed ». Capture ouvre alors le collage et demande le favori.
  4. Lecture des données de page. La page de build Overframe contient un JSON dont le site se sert pour afficher les mods. Framelab cherche ce blob (pas des captures d’écran, pas des panneaux de compte). Nous en tirons :
    • le nom d’affichage de l’objet (exemple : Caliban Prime)
    • le chemin unique quand il est présent (le nom wiki /Lotus/…)
    • titre, courte description, guide plus long
    • le nombre de Forma annoncé par Overframe
    • l’abilité Helminth, le cas échéant (quel emplacement, quel nom unique)
    • la liste d’emplacements : numéro Overframe du trou, id numérique du mod (ou vide), rang, et code de polarité
  5. Blob de repli. Certaines pages stockent le loadout dans une chaîne compacte au lieu d’un tableau. Framelab la décode en la même liste d’emplacements si le tableau manque. Si les deux sont vides, l’import ne peut pas placer de mods.
  6. Ids numériques → noms. Overframe identifie Intensify par un nombre, pas par le mot « Intensify ». Pour chaque trou occupé, Framelab cherche un nom d’affichage : d’abord les noms récoltés sur cette page (liens du guide, liens arsenal, ou la carte de noms du favori), puis notre table id→nom hors-ligne. Si aucun des deux ne connaît l’id, le trou reste sans nom et préviendra plus tard.
  7. Les codes de polarité deviennent des polarités nommées (Madurai, Vazarin, Naramon, etc.). Le code 0 signifie « garder la polarité innée ». Nous n’inventons pas de Forma universelle pour un code vide.
  8. Nettoyage du guide. Les balises YouTube style wiki deviennent des liens YouTube normaux. Les liens markdown internes Overframe gardent le libellé visible. Le résultat est du texte de guide ordinaire dans la Forge.
  9. Réponse. L’API renvoie un DTO d’import unique : url, id de build optionnel, noms d’objet, titre, guide, indice de Forma, Helminth, la liste d’emplacements (avec noms quand nous les avons), et des avertissements. ok signifie qu’au moins un emplacement a été lu.

Rien dans ce DTO n’est votre mot de passe, e-mail ou session Overframe. C’est le loadout public.

Pas à pas — après la réponse de l’API

  1. Avertissements fatals (URL invalide, fetch bloqué, données de page absentes) s’arrêtent ici. Vous restez sur Capture.
  2. Correspondance de l’objet dans notre catalogue Équipement. Framelab a déjà les objets wiki (Caliban Prime, armes, etc.). Nous croisons d’abord le chemin unique Overframe, puis un rapprochement flou sur le nom d’affichage si le chemin manque. Si rien dans Équipement ne ressemble à cet objet, nous arrêtons : nous n’ouvrirons pas une Forge vide sur la mauvaise frame.
  3. Passage à la Forge. Le DTO d’import n’est stocké que dans la session de cet onglet pour le prochain chargement. Nous naviguons ensuite vers l’URL Forge de cet objet (par exemple l’éditeur warframe Caliban Prime). L’URL Overframe n’est pas copiée dans la barre d’adresse comme un secret ; le chemin Forge est le nôtre (/forge/…).
  4. Ouverture de la Forge. L’éditeur charge l’objet depuis notre catalogue (pool de mods, polarités, arcanes, liste Helminth). Puis il lit le DTO de session et l’applique. Après un apply réussi, cette copie de session est effacée pour qu’une visite Forge plus tard ne réimporte pas par surprise.

Pas à pas — placement des mods dans la Forge

  1. Réacteur. L’import active le réacteur / catalyseur pour que la capacité soit du même type « installé » qu’Overframe suppose.
  2. Helminth d’abord. Si le DTO a une abilité Helminth, nous l’installons avant de matcher les mods pour que les augments Helminth existent dans le pool.
  3. Chaque numéro d’emplacement Overframe → un trou Forge. Overframe et Digital Extremes ne numérotent pas les trous de la même façon. Framelab a une table de layout par catégorie (warframe, mêlée, arme, Archwing, Necramech, Plexus, …). Exemple pour une warframe :
    • trous Overframe 1–8 → les huit mods normaux (ordre inversé pour coller à la grille en jeu)
    • trou 9 → Aura
    • trou 10 → Exilus
    • trou 11 et suivants → arcanes
      La mêlée utilise la stance à la place de l’aura. Les armes sans Exilus ne mappent que les trous normaux. Un numéro sans règle est ignoré et signalé.
  4. Les arcanes sont rapprochées par nom de notre liste wiki, puis assises par index.
  5. Les mods sont rapprochés par nom parmi les mods légaux pour cet objet. Correspondance exacte après normalisation, puis un seuil de similarité élevé. Si le rang Overframe dépasse le rang max du mod de base, nous essayons le nom Primed quand ce mod primed existe (ainsi un rang 10 sur un Intensify de base peut devenir Intensify Prime).
  6. Forma. Si la polarité Overframe égale la polarité innée de l’objet sur ce trou, nous ne dépensons pas de Forma. Si elle diffère, nous posons cette polarité sur l’emplacement Forge. Une polarité Overframe vide ne peint jamais un Omni fictif juste pour remplir le trou.
  7. Équipement. L’éditeur vide le loadout de la variante courante, applique les trous polarité seule, équipe chaque mod matché à un rang borné, assied les arcanes, puis écrit le titre et le guide Overframe dans les champs Forge. L’historique d’annulation est recalé sur cet état importé pour qu’Annuler ne revienne pas à un build vide.
  8. Toast. Succès, ou les premiers avertissements (id de mod inconnu, pas de nom wiki, impossible d’asseoir un mod).

Petit exemple (warframe)

Overframe dit : le trou 1 contient un id numérique que nous avons résolu en Intensify, rang 10, Madurai ; le trou 9 contient Growing Power, rang 5, sans polarité extra ; le trou 11 contient Arcane Energize.

Après mapping : Intensify arrive sur le trou normal correspondant avec Madurai si ce n’était pas déjà inné ; Growing Power sur l’Aura ; Arcane Energize sur le premier emplacement d’arcane. Caliban Prime a été choisi parce que le chemin unique ou le nom a matché Équipement.

Ce que le favori ajoute (sans les entrailles)

Le favori est un raccourci, pas une seconde liaison de compte. Sur l’onglet Overframe il :

  • lit le JSON de build public déjà dans la page
  • collecte les noms de mods que la page affiche déjà à côté des liens arsenal
  • copie un petit paquet (étiquette de source, URL de la page, ce JSON, ces noms) dans le presse-papiers
  • ouvre /capture?paste=1

Le collage sur Framelab vérifie le paquet, puis suit le même chemin assemblage → correspondance → Forge qu’un fetch URL réussi. La différence est seulement que les noms de la page que vous regardiez sont plus complets quand Overframe a sorti de nouveaux mods que notre table hors-ligne ne connaît pas encore.

Comment fonctionne la sync id→nom

Les numéros Overframe sont leur base, pas celle du wiki. Capture casserait à chaque nouveau mod Primed si nous saisions cette table à la main.

Chaque nuit (vers 00:00 UTC) et à chaque rebuild en mode sommeil, un job rafraîchit la carte hors-ligne depuis les données statiques publiques Overframe (le même type de fichiers que leur site charge pour les noms). Le rebuild catalogue wiki+DE peut être sauté une nuit calme ; cette carte se rafraîchit quand même. C’est pourquoi Capture continue de résoudre les nouveaux noms sans un déploiement Framelab dont le seul but serait d’éditer du JSON.

Les opérateurs peuvent aussi lancer le CLI documenté (pnpm framelab overframe sync) après un déploiement frontend Overframe, en utilisant une URL de bundle statique public — pas en se connectant à Overframe. La table fusionnée est versionnée comme données dans le dépôt. Nous ne publions pas d’outil de scrape contre le HTML de overframe.gg ; cet hôte est protégé, c’est exactement pour cela que votre favori existe.

Si un nom manque encore après sync, l’import prévient (mod introuvable / id sans nom). Mettez à jour la carte (ou utilisez le favori pour que la page live fournisse le nom), puis réimportez.

Ce que nous ne faisons volontairement pas

  • Nous n’importons pas les profils Overframe privés ni les builds d’autrui sauf si vous collez cette URL publique.
  • Nous ne gardons pas le payload de page Overframe sur nos serveurs comme bibliothèque de builds. Le DTO vit le temps d’ouvrir la Forge, puis la copie navigateur est jetée.
  • Nous ne traitons pas l’OCR de capture d’écran comme l’égal de ce chemin. Les pixels rattent des polarités ; les données de page non. Voir la note Capture vs capture d’écran.
  • Nous ne documentons pas ici les contournements, quotas, ou noms de champs internes. Ils changent et ils ne sont pas nécessaires pour utiliser Capture.

Quand quelque chose échoue

Ce que vous voyez Cause typique Quoi essayer
Connexion requise Pas connecté Connectez-vous, réimportez
URL invalide Pas overframe.gg/build/<id>/… Copiez la barre d’adresse sur la page de build
Bloqué / collage ouvert Fetch public refusé Utilisez le favori d’import sur cet onglet
Objet manquant Nom/chemin absent de notre liste Équipement Attendre la sync wiki nocturne, ou vérifier que l’objet existe encore
Mods manquants dans la Forge Id absent de la carte de noms, ou décalage de nom wiki Collage via favori, ou attendre la sync d’ids ; lire les avertissements
Emplacements vides Page sans liste d’emplacements ni blob décodable Rafraîchir Overframe, refaire le favori

Questions ou import cassé : Feedback. Au sujet d’Overframe comme site distinct : À propos.

Framelab