نقل المواضيع من مثيل Discourse إلى آخر

كنت أرغب منذ فترة طويلة في حل مشكلة هجرة الملفات المرفوعة، والآن، بمساعدة روبوت الدردشة الذكي، تمكنت من تحقيق ذلك. أشارك ملاحظاتي لمن يتابع! كانت المشاركة أعلاه لـ جاي تحتوي على العنصر الأساسي الذي ساعدني على البدء، لذا شكرًا له على ذلك.

كانت محاولتي الأولى تعمل تمامًا كما توقع جاي. إذا قمت بإنشاء قائمة من عناوين URLs للصور على الموقع الذي تنتقل منه ولصقها في منشور على موقعك الجديد، فسيتم تنزيلها. يجب تفعيل خيار تنزيل الصور البعيدة إلى المحلي (Download remote images to local) لكي يعمل هذا.

أنشأ لي روبوت الدردشة الذكي سكريبتًا لهذا الغرض، وسأشاركه هنا للمستقلين في المستقبل.

الملخص

شغّل هذا في وحدة تحكم 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)"

:bulb: هل تريد نقل فئة كاملة بدلاً من ذلك؟ استبدل السطرين الأولين بالآتي:

topic_ids = Topic.where(category_id: =TOPIC_ID=).pluck(:id)
posts = Post.where(topic_id: topic_ids)

في هذه الحالة، =TOPIC_ID= هو معرّف الفئتك، والذي تجده في نهاية عنوان URL الخاص بها في الإدارة → الفئات (Admin → Categories).

ومع ذلك، لم يكن ذلك كافيًا بالنسبة لي لأن لدي أيضًا ملفات PDF لا يتم تنزيلها محليًا تلقائيًا.

لذلك، جعلت روبوت الدردشة يكتب لي سكريبتًا بلغة بايثون لنقل الملفات المرفوعة. إنه يعمل بشكل جيد جدًا، لذا يسعدني مشاركته أيضًا. إذا أردت تجربته أو لديك ملاحظات، إليك المستودع.

كما جعلت روبوت الدردشة يكتب لي دليل تشغيل (runbook) أكثر اكتمالًا لنقل المواضيع أو الفئات، وهو منشور على موقعي الخاص.

إعجابَين (2)