دعم oEmbed onebox لموقع Photobucket

لدينا منتدى تصوير يعود تاريخه إلى عام 2004، ويستخدم العديد من الأعضاء Photobucket… ومع ذلك، فإن المشاركات القديمة التي تحتوي على Photobucket، والصور لا تظهر في المنشور… (Metrô de NYC - #3 de fotografosonline - Galeria de Fotos - Fotógrafos Online)

هل هناك دعم لـ Photobucket أو طريقة لإضافة هذا إلى قائمة المجالات المسموح بها في onebox؟

لا يريد Photobucket منك تضمين هذه الصور:

ولكن انتظر!! إذا قمت بهذا:

![](https://hosting.photobucket.com/images/af237/atpaula/tempImageuaxhM1.heic?width=1920&height=1080&fit=bounds
)

يمكنك الحصول على هذا:

هذا لن يسمح لـ Discourse بتنزيل هذه الصور حتى تكون لديك عندما لم تعد متاحة من photobucket، ولكنه سيعرضها.

لذلك، ستحتاج إلى الانتقال إلى rails، والحصول على جميع المشاركات التي تحتوي على ^https://hosting.photobucket.com، وإجراء استبدال لاستبدال عناوين URL العارية بـ ![](عنوان URL)

انتظر. عندما كتبت هذا لأول مرة، لم يتم عرض عنوان URL العلوي، ولكن لاحقًا يبدو أن Discourse تمكن من تنزيله! (وعمل على خادم الاختبار الخاص بي أيضًا!)

ربما تحتاج فقط إلى إعادة خبز المشاركات؟

لكنه لا يعمل على موقعك: https://forum.fotografos.online/t/esta-imagem-do-photobucket-sera-renderizada/226420

هل لديك تنزيل إلى محلي معطل؟

تنزيل إلى المحلي - لم أكن لأعرف ذلك :confused:

إذا كنت مسؤولاً، يمكنك رؤية
https://forum.fotografos.online/admin/site_settings/category/all_results?filter=download%20remote%20images
إذا كان معطلاً، فقم بتمكينه، وانتقل إلى الموضوع الذي أنشأته، وانقر على :wrench: ثم الشيء الذي يُترجم إلى “إعادة بناء HTML”

لقد قمت بتمكينه في لوحة الإدارة الآن… وذهبت إلى المنشور الأصلي لإعادة البناء… لكنه لم ينجح…

لقد نجح في منشورك أنت على الرغم من ذلك.

في المنشور الأصلي، أضفت للتو عنوان URL خامًا:

https://hosting.photobucket.com/images/af237/atpaula/tempImageRLm0iR.heic?width=1920&height=1080&fit=bounds

(أعتقد أن ديسكورس قام بتعطيله)

هذا لأنهم في المنشور الأصلي مشفرون كـ URLs: https://forum.fotografos.online/posts/1579128.json

مثل


1
[URL=https://hosting.photobucket.com/images/af237/atpaula/tempImage7XmEb0.heic?width=1920&height=1080&fit=bounds]
https://hosting.photobucket.com/images/af237/atpaula/tempImage7XmEb0.heic?width=1920&height=1080&fit=bounds
[/URL]

لذلك كنت ترغب حقًا في إصلاحها عندما قمت بالترحيل، ولكن لا يزال من الممكن تشغيل مهمة في Rails من شأنها إصلاحها.

إعجاب واحد (1)

لقد سألت في https://ask.discourse.com/ وبعد محاولة فاشلة واحدة، حصلت على هذا:

استبدال علامات [URL] في منشورات Discourse AI

pfaffman:

لدي مجموعة من المنشورات تبدو كالتالي:

1
[URL=https://hosting.photobucket.com/images/af237/atpaula/tempImage7XmEb0.heic?width=1920&height=1080&fit=bounds]
https://hosting.photobucket.com/images/af237/atpaula/tempImage7XmEb0.heic?width=1920&height=1080&fit=bounds
[/URL]

أحتاج إلى تشغيل أمر rails للعثور على كل تلك المنشورات ثم استخدام gsub لاستبدال [URL…][/URL] بعنوان URL الفعلي فقط حتى يتم عرضه في one-box

DiscourseHelper:

البحث

البحث عن: كيف يمكنني استخدام أمر Rails أو كود وحدة التحكم للعثور على جميع المنشورات التي تحتوي على تنسيق سلسلة محدد مثل علامات [URL] ثم استبدال تلك العلامات بعنوان URL المحتوي عليها فقط في Discourse؟

للعثور على جميع مثيلات [URL]...[/URL] واستبدالها فقط بعنوان URL المحتوي عليها في منشورات Discourse الخاصة بك، يمكنك تحقيق ذلك باستخدام Rails في وحدة تحكم Discourse. إليك كيفية القيام بذلك:

الخطوات:

  1. الوصول إلى وحدة تحكم Rails:
    تحتاج إلى الوصول عبر SSH إلى الخادم الخاص بك. قم بتشغيل الأمر التالي للوصول إلى وحدة تحكم Rails الخاصة بـ Discourse:

    cd /var/discourse
    ./launcher enter app
    rails c
    
  2. تشغيل أمر البحث والاستبدال:
    استخدم مقتطف الكود التالي لتحديد المنشورات التي تحتوي على [URL]...[/URL] واستبدالها.

    Post.where("cooked LIKE ?", "%[URL=%[/URL]%").find_each do |post|
      updated_cooked = post.cooked.gsub(/\[URL=.*?\](.*?)\[\/URL\]/, '\1')
      if updated_cooked != post.cooked
        post.update!(cooked: updated_cooked)
        PostRevisor.new(post, Discourse.system_user).revise!(
          post.user,
          { cooked: updated_cooked },
          revised_at: Time.now
        )
        puts "Updated post id: #{post.id}"
      end
    end
    
  3. اختبار البرنامج النصي:
    قبل استبدال المحتوى بشكل جماعي، قم بتشغيل منطق gsub على منشور واحد للتأكد من أنه يعمل كما هو متوقع.

    test_post = Post.first # استبدل بمعرف لتحسين الاختبار
    puts test_post.cooked.gsub(/\[URL=.*?\](.*?)\[\/URL\]/, '\1')
    
  4. تشغيل البرنامج النصي والمراقبة:
    قم بتنفيذ البرنامج النصي الكامل، وراقب المخرجات، وصحح أي أخطاء إذا لزم الأمر.

ملاحظات:

  • يستخدم هذا البرنامج النصي التعبيرات العادية (Regex) (\[URL=.*?\\](.*?)\\[\\/URL\\]) لمطابقة النمط المحدد واستبداله. تأكد من أن النمط يطابق احتياجاتك بالضبط.
  • يستخدم PostRevisor لضمان تسجيل التغييرات في سجل تعديلات المنشور.
  • تأكد من الاختبار الشامل ونسخ قاعدة البيانات احتياطيًا قبل تنفيذ أي تغييرات جماعية.

للحصول على إرشادات إضافية، تحقق من الوثائق ذات الصلة على meta.discourse.org. إذا واجهت مشكلات، فلا تتردد في مشاركة التفاصيل هنا!

pfaffman:

يجب استبدالها في raw، وليس cooked

DiscourseHelper:

شكراً للتوضيح! بما أن التغييرات يجب أن تتم في raw (محتوى المنشور الأصلي)، يمكننا تعديل البرنامج النصي للعمل مع حقل raw بدلاً من ذلك. إليك كيفية تحقيق ذلك:

أمر Rails المحدث لحقل raw

  1. تعديل وتشغيل البرنامج النصي:
    فيما يلي البرنامج النصي المحدث لمعالجة واستبدال علامات [URL]...[/URL] في حقل raw للمنشورات:

    # البحث عن جميع المنشورات التي يحتوي فيها raw على علامة [URL]
    Post.where("raw LIKE ?", "%[URL=%[/URL]%").find_each do |post|
      updated_raw = post.raw.gsub(/\[URL=.*?\](.*?)\[\/URL\]/, '\1')
      
      if updated_raw != post.raw
        # تحديث محتوى raw
        post.update!(raw: updated_raw, cooked: nil)
    
        # تشغيل إعادة التحميض لتوليد محتوى cooked مرة أخرى
        post.rebake!
    
        puts "Updated post id: #{post.id}"
      end
    end
    
  2. شرح التغييرات:

    • raw بدلاً من cooked: يحتوي حقل raw على محتوى المنشور الأصلي، لذا يتم تطبيق عملية gsub على نص raw.
    • إعادة تعيين cooked: يؤدي تعيين cooked إلى nil إلى ضمان إعادة تحميض المنشور (معالجته) بشكل صحيح.
    • rebake!: يؤدي هذا إلى تشغيل عملية إعادة التحميض، والتي تعيد توليد النسخة cooked (المعروضة بتنسيق HTML) للمنشور من المحتوى raw المحدث.
  3. اختبار Gsub لمحتوى Raw:
    اختبر استبدال التعبير العادي على منشور واحد للتأكد من أنه يعمل بشكل صحيح:

    test_post = Post.first # استبدل بمعرف منشور مناسب للاختبار
    puts test_post.raw.gsub(/\[URL=.*?\](.*?)\[\/URL\]/, '\1')
    
  4. تشغيل التحديث الجماعي:
    بمجرد التأكد من أنه يعمل كما هو مقصود، يمكنك تشغيل البرنامج النصي لمعالجة جميع المنشورات التي تحتوي على علامات [URL].

  5. المراقبة والتحقق:
    راقب مخرجات البرنامج النصي. لكل منشور تم تحديثه، سيتم طباعة id الخاص به في وحدة التحكم. بعد الانتهاء، تحقق من عدد قليل من المنشورات على الموقع للتأكد من ظهور التغييرات بشكل صحيح.


تذكير بالنسخ الاحتياطي:
قبل تشغيل البرنامج النصي، تأكد من أن لديك نسخة احتياطية كاملة لقاعدة البيانات، خاصة عند العمل مع التحديثات الجماعية.

إذا كانت لديك أسئلة إضافية أو واجهت مشكلات، فلا تتردد في طرحها!

وأنا أحب أنه يستخدم PostRevisor بحيث إذا حدث خطأ ما، سيكون لديك سجل للتعديل.

إعجاب واحد (1)

آآآآ… سألقي نظرة على هذا!!! شكراً جزيلاً!!!

إعجاب واحد (1)

بالتأكيد تريد اختباره على عدد قليل من المنشورات قبل إطلاقه - وكذلك معرفة عدد المنشورات التي سيقوم بإصلاحها ومن سيحصل على إشعارات بشأن كل هذه المنشورات (هناك شيء مثل bypass_bump أو ما شابه ذلك يتخطى الإشعارات، على ما أعتقد).

إعجاب واحد (1)