Aide pour migrer une catégorie d'une instance à une autre sans administrateur sur l'instance source

Notre équipe a fonctionné en tant qu’invité sur une autre instance Discourse. Nous mettons en place notre propre instance Discourse et souhaitons migrer nos catégories de l’instance existante vers la nouvelle instance. Nous n’avons pas d’accès administrateur au serveur existant, mais les administrateurs sont disposés à effectuer une exportation de catégories pour nous. Cependant, cette exportation ne contient pas de pièces jointes ni d’images. Nous avons un accès API à l’instance existante, mais uniquement à nos catégories. Nous avons un accès administrateur à la nouvelle instance.

Est-il possible de migrer les pièces jointes et les images en utilisant uniquement l’API de l’instance existante ?

J’ai examiné le JSON exporté et les noms de fichiers des pièces jointes sont des chaînes aléatoires différentes de celles servies dans le navigateur, ce qui rend l’ingénierie inverse de l’API pour télécharger les pièces jointes et les images moins simple. Même si nous pouvions télécharger toutes les pièces jointes de l’instance existante, je ne suis pas sûr de la manière de les ajouter à la nouvelle instance. Ce post me fait croire qu’il suffit de les déposer à cet endroit en exigeant que les noms de fichiers soient identiques à ceux du JSON exporté, mais cela ne semble pas fonctionner.

Des idées ?

1 « J'aime »

Pouvez-vous expliquer ce que vous voulez dire par là ?

Si vous regardez les données traitées pour un flux de publication json, vous obtiendrez les URL de pièces jointes habituelles.

4 « J'aime »

Désolé, je n’ai pas pu répondre car je suis nouveau et mon compte était en attente.

Dans le JSON d’exportation de catégorie (en utilisant la méthode liée ci-dessus), la pièce jointe dans un message particulier ressemble à ceci :

![image|505x473](upload://yyWAy3WPpjetoctRNL9hmPvNNwm.jpeg

Dans le JSON cuit de l’API, la même image a l’URL suivante :

https://my.server.com/uploads/default/original/2X/f/f23d29caba9a31b2b63b93f4104d746623703ca2.jpeg

Il semble n’y avoir aucune relation dans les noms de fichiers. Compte tenu de ces informations, je peux utiliser l’API pour récupérer les pièces jointes qui ne sont pas incluses dans l’exportation. Mais je ne suis pas sûr du nom de fichier à lui donner et où le placer sur le nouveau serveur.

Une fois que cela sera résolu, sera-t-il possible que les pièces jointes apparaissent sur les pages de rendu des sujets lorsqu’elles sont chargées comme avant la migration.

1 « J'aime »

Si je regarde les données cuites via l’API (par exemple ceci), je vois les URL complètes des images.

Mais je pense que vous cherchez peut-être ceci :

2 « J'aime »

Retour d’information avec une solution qui fonctionne avec une instance de test que je n’ai pas essayée en production.

Ceci est pour que mon futur moi transmette à l’équipe qui effectuera réellement la migration ou à toute autre personne ayant besoin de quelque chose de similaire.

Les pièces jointes doivent recevoir le nom complet, qui peut être converti à partir de la forme courte dans le json via le script python dans Converting short upload URLs to full URLs

Les pièces jointes doivent être placées dans discourse/public/uploads/tombstone/default/original/

Ensuite, exécutez uploads:recover_from_tombstone tout en étant dans /var/discourse/

3 « J'aime »