الانتقال من Yahoo! Groups

ليس لدي ملفات mbox، ولا أعرف أي طريقة للحصول عليها—فـ Yahoo بالتأكيد لن تسمح لي بتحميلها. هل تعرف أداة ما يمكنها تحويل JSON إلى mbox؟ تُظهر نتائج بحث Google عددًا من الأدوات للقيام بالعكس، لكنني لا أرى أي شيء يغطي هذا الاتجاه بسرعة.

كنت أتوقع أنه نظرًا وجود نصوص برمجية (scripts) مصممة خصيصًا لنقل مجموعات Yahoo، فإن هذه النصوص ستعمل بالفعل، وأن هذا سيكون الطريقة الأكثر مباشرة لإنجاز هذه المهمة. يبدو أن توقعي كان متفائلًا بعض الشيء—فالنصوص البرمجية “تعمل” من حيث أنها تنقل الرسائل، وتنقل المستخدمين إلى حد ما، لكن غياب معظم عناوين البريد الإلكتروني وتعيين معظم الرسائل للمستخدم الخاطئ يُشكّل مشكلة كبيرة.

ما يثير إحباطي هو أنه يبدو وكأنه إصلاح تافه لشخص يعرف شيئًا أو اثنين عن Ruby—لكن للأسف لستُ من هؤلاء (أحاول، لكن لا يوجد وقت كافٍ لكل شيء). مجموعتي صغيرة بما يكفي لأتمكن من إصلاحها يدويًا إذا لزم الأمر، لكنني أفضل عدم الاضطرار إلى ذلك، والأهم من ذلك، أنني أحاول ابتكار طريقة عامة يمكن لمالكي مجموعات Yahoo الآخرين استخدامها.

تعديل: أعتقد أنني يجب أن أشعر بالرضا لأنني أدير كل ما أديره بلغة لا أعرف شيئًا عنها حقًا، لكنني ما زلت أشعر بأن هناك شيئًا كبيرًا (يجب أن يكون واضحًا) أفتقده. جربت استخدام طريقة مختلفة مع مكتبة Mail. الجزء الذي عدلته من دالة import_users هو كما يلي:

    create_users(profiles.to_a) do |u|

      user_id = user_id + 1

      # fetch last message for profile to pickup latest user info as this may have changed
      user_info = @collection.find("ygData.profile": u["_id"]["profile"]).sort("ygData.msgId": -1).limit(1).to_a[0]

      # Store user_id to profile lookup
      @user_profile_map.store(user_info["ygData"]["profile"], user_id)

      puts "User created: #{user_info["ygData"]["profile"]}"
      
      user_email = Mail::Address.new(HTMLEntities.new.decode(user_info["ygData"]["from"]))

      user =
       {
        id: user_id,  # yahoo "userId" sequence appears to have changed mid forum life so generate this
        username: user_info["ygData"]["profile"],
        name: user_info["ygData"]["authorName"],
        email: user_email.address, # mandatory
        created_at: Time.now
      }
      user
    end

وهو يعمل! حسنًا، إلى حد ما. من أصل 302 مستخدمًا متميزًا عدها النص البرمجي، تم استيراد 289. تظهر على صفحة الإدارة بأسماء المستخدمين الصحيحة، والأسماء الكاملة (عند توفرها)، وعناوين البريد الإلكتروني. يقول النص البرمجي إنه يستورد جميع الـ 302 ولا يبلغ عن أي أخطاء. لكن عند بدء استيراد المواضيع، أحصل على ما يلي:

Importing discussions
Topic: 1 / 12232  (0.01%)  Subject: Newspapers
Topic: 2 / 12232  (0.02%)  Subject: Ents
Traceback (most recent call last):
	8: from script/import_scripts/yahoogroup.rb:168:in `<main>'
	7: from /home/dan/discourse/script/import_scripts/base.rb:47:in `perform'
	6: from script/import_scripts/yahoogroup.rb:40:in `execute'
	5: from script/import_scripts/yahoogroup.rb:101:in `import_discussions'
	4: from script/import_scripts/yahoogroup.rb:101:in `each_with_index'
	3: from script/import_scripts/yahoogroup.rb:101:in `each'
	2: from script/import_scripts/yahoogroup.rb:132:in `block in import_discussions'
	1: from /home/dan/discourse/script/import_scripts/base.rb:535:in `create_post'
/home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activerecord-6.0.0/lib/active_record/core.rb:177:in `find': Couldn't find User with 'id'=298 (ActiveRecord::RecordNotFound)

…وهو ليس مفاجئًا، لأن أعلى معرف مستخدم هو 290.

هل يحتوي Discourse على أي سجلات تشير إلى المستخدمين الذين لم يتم إنشاؤها ولماذا؟ وأين يمكن العثور على هذه السجلات؟

تم التأكيد على خطئي. اتضح أن ياهو تسمح لك بتنزيلها، لكنها عملية معقدة بعض الشيء، ولا يخبرك أي مكان أن الملفات التي ستحصل عليها هي ملفات mbox. توفر ياهو أداة “احصل على بياناتي”. انتقل إلى هناك، وسجّل الدخول، وقدم طلبًا، وانتظر حتى يُبلغك (استغرق الأمر حوالي أسبوع في حالتي). سيرسلون إليك بريدًا إلكترونيًا يحتوي على رابط، حيث ستنتقل لتنزيل ملف .zip يبدو أنه يحتوي على معظم محتويات كل مجموعة تنتمي إليها (يبدو أن الصور مفقودة). ومن المفاجئ إلى حد ما، أن ملفات .mbox تحتوي على عناوين بريد إلكتروني كاملة حتى للمجموعات التي لست مشرفًا عليها.

إذًا، @gerhard، يبدو أنني كنت متسرعًا في تجاهل اقتراحك—أعتذر عن ذلك.

تعديل: نعم، تبدو عملية .mbox تعمل بشكل أفضل بكثير. يتم تخطي بعض الرسائل (حوالي 100 بسبب عدم وجود تاريخ مثلًا)، لكن ما يقرب من جميع الرسائل الـ 38 ألفًا تم نقلها، وتم نقل جميع المستخدمين (وتشير فحصات عشوائية إلى أنهم جميعًا مرتبطون بالمشاركات الصحيحة)، وكلها مع عناوين البريد الإلكتروني الصحيحة. ليست مثالية في الحفاظ على المواضيع معًا (النص البرمجي الآخر لم يكن كذلك أيضًا)، لكنها تؤدي المهمة بشكل جيد جدًا. وكإضافة، فهي توفر طريقة أبسط للتوثيق مما كنت أحاول فعله. العيب الوحيد الذي أراه حتى الآن هو التأخير الذي تفرضه ياهو قبل جعل بياناتك متاحة للتنزيل.

واو! هذا أمر مذهل حقًا. أظن أنهم يعتقدون أنه إذا كنتَ مشتركًا في القائمة، فإنك تمتلك بالفعل عناوين البريد الإلكتروني.

هذا خبر جيد - لقد قمت للتو بالتنزيل ويبدو أن لدي أرشيفًا شاملاً للرسائل الخاصة بمجموعة ياهو الخاصة بي والتي أود الاحتفاظ بها، بتنسيق mbox سهل الاستخدام ومحمول. رائع!