Llevo mucho tiempo queriendo resolver el problema de la migración de subidas, y ahora, con la ayuda de un LLM, por fin lo he logrado. ¡Comparto mis notas para quienes sigan este hilo! La publicación anterior de Jay contenía el ingrediente secreto necesario para que pudiera empezar, así que gracias por eso.
Mi primer intento funcionó exactamente como Jay predijo. Si creas una lista de URLs de las imágenes en el sitio desde el que estás migrando y la pegas en una publicación de tu nuevo sitio, estas se descargarán. Para que esto funcione, Descargar imágenes remotas en local debe estar habilitado.
Mi LLM creó un script para ello, que compartiré aquí para futuros viajeros.
Resumen
Ejecuta esto en la consola de 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)"
¿Estás moviendo una categoría completa? Reemplaza las dos primeras líneas con:
topic_ids = Topic.where(category_id: =TOPIC_ID=).pluck(:id) posts = Post.where(topic_id: topic_ids)En este caso, =TOPIC_ID= es el ID de tu categoría, que se encuentra al final de su URL en Admin → Categories.
Sin embargo, para mí esto no fue suficiente, ya que también tengo PDFs que no se descargan automáticamente en local.
Así que pedí a mi LLM que me escribiera un script en Python para migrar las subidas. Funciona bastante bien, así que también me encantaría compartirlo. Si te gustaría probarlo o tienes comentarios, aquí tienes el repositorio: tobias/discourse-upload-migrator - Digitally Sovereign Forgejo: Digitally Sovereign, for the win!
También pedí a mi LLM que me escribiera un manual de operaciones más completo para mover temas o categorías, que está disponible en mi discourse: https://digitallysovereign.org/t/move-topics-or-categories-between-discourse-instances/742?u=tobias