J’avais envie de résoudre le problème de migration des téléversements depuis un bon moment, et maintenant, avec l’aide des LLM, j’y suis parvenu. Je partage mes notes pour ceux qui suivent ! Le message de Jay ci-dessus contenait l’ingrédient secret nécessaire pour me mettre sur la voie, merci pour ça.
Ma première tentative a fonctionné exactement comme Jay l’avait prédit. Si vous créez une liste d’URL des images sur le site d’origine et que vous la collez dans un message sur votre nouveau site, elles seront téléchargées. Download remote images to local doit être activé pour que cela fonctionne.
Mon LLM a créé un script pour cela, que je partage ici pour les futurs voyageurs.
Résumé
Exécutez ceci dans la console Rails :
topic = Topic.find(=TOPIC_ID=)
posts = Post.where(topic_id: topic.id)
urls = []
posts.each do |p|
UploadReference.where(target: p).each do |ref|
urls << "=SOURCE_URL=#{ref.upload.url}"
end
end
puts urls.uniq.join("\n")
puts "\nTotal: #{urls.uniq.count} upload(s)"
Vous déplacez une catégorie entière ? Remplacez les deux premières lignes par :
topic_ids = Topic.where(category_id: =TOPIC_ID=).pluck(:id) posts = Post.where(topic_id: topic_ids)Dans ce cas, =TOPIC_ID= est votre identifiant de catégorie, que vous trouverez à la fin de son URL dans Admin → Categories.
Cependant, pour moi, cela n’a pas été suffisant, car j’ai également des PDF qui ne sont pas téléchargés localement automatiquement.
J’ai donc demandé à mon LLM de m’écrire un script Python pour migrer les téléversements. Il fonctionne très bien, je suis donc heureux de le partager également. Si vous souhaitez l’essayer ou donner votre avis, voici le dépôt : tobias/discourse-upload-migrator - Digitally Sovereign Forgejo: Digitally Sovereign, for the win!
J’ai également demandé à mon LLM de m’écrire un guide d’exécution plus complet pour déplacer des sujets ou des catégories, qui est disponible sur mon Discourse : https://digitallysovereign.org/t/move-topics-or-categories-between-discourse-instances/742?u=tobias