Migrar un foro XenForo a Discourse

Gracias, Justin. He echado un vistazo rápido; ¿te parece bien esto? (Si quieres, siéntete libre de añadirlo al importador oficial)

  XENFORO_DB = "xenforo_db_3"
  TABLE_PREFIX = "xf_"
  BATCH_SIZE = 1000
  ATTACHMENT_DIR = '/FULL/PATH/TO/attachments'
  AVATAR_DIR = '/FULL/PATH/TO/avatars'

(Añadí la última línea^^ - significa que tendrás que copiar los avatares allí)

  def execute
    import_users
    import_categories
    import_posts
    import_avatars
  end

(Añadí la última línea^^)

  def import_avatars
    if AVATAR_DIR
      users = User.all
      users.each do |u|
        unless u.custom_fields["import_id"].nil?
          import_id = u.custom_fields["import_id"]
          if import_id.to_i < 1000
            dir_num = "0"
          elsif import_id.to_i > 1000
            dir_num = import_id.first
          end
        
          avatar_filename = "#{import_id}.jpg"
          file_path = "#{AVATAR_DIR}/l/#{dir_num}"
          file_path_and_name = "#{file_path}/#{avatar_filename}"

          if File.exists?(file_path_and_name)
            upload = create_upload(u.id, file_path_and_name, avatar_filename)
            if upload.persisted?
              u.import_mode = false
              u.create_user_avatar
              u.import_mode = true
              u.user_avatar.update(custom_upload_id: upload.id)
              u.update(uploaded_avatar_id: upload.id)
            else
              puts "Error: Upload did not persist for #{u.username} #{avatar_filename}!"
            end
          end
        end
      end
    end
  end

Es muy tarde aquí, así que es posible que haya cometido algunos errores o que haya omitido mucho, pero esto asume que todos los avatares son .jpg (lo cual parece ser el caso de todos los míos). No estaba muy seguro de los cambios de u.import_mode, así que simplemente los comenté.

Totalmente sin probar (son casi las 5 a.m. aquí :zzz:)

Hice una prueba en mi máquina de desarrollo con un foro de 100 mil publicaciones y tardó 90 minutos. El que quiero importar tiene varios millones de publicaciones, ¿quizás 10 veces más?

¡Genial! ¿Lo compartirán con nosotros? ¿Tienen alguna idea de cuándo?

4 Me gusta