مشكلة مع Onebox و YouTube

على سبيل المثال

يفشل عرض الصورة المصغرة لـ YouTube في قائمة المواضيع، على سبيل المثال مع سمة Fakebook وإضافة TLP.

خطوات التكرار:

انشر مقطع فيديو من YouTube، ثم انتقل إلى سمة Fakebook، ولن تظهر الصورة المصغرة.

حل مؤقت:

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

مزيد من المعلومات:

يبدو أن Topic.image_url تساوي nil.

يبدو أن هذه المشكلة بدأت مؤخرًا، بعد بداية شهر أغسطس… أعتقد أنها كانت تعمل قبل 5 أغسطس (لكنني لست متأكدًا من التاريخ الدقيق لحدوث الخلل). لاحظت أن هذا يتوافق تقريبًا مع إصدار جديد من Onebox…

لقد اختبرت ذلك على إصدار سابق ولم تكن المشكلة موجودة، مما يستبعد استجابات og الخاصة بـ YouTube على ما أعتقد. كما أن سمة Fakebook تظهر نفس السلوك مثل إضافة TLP، مما يستبعد مشكلة في إضافة TLP، لذا أشك في أن الأمر يتعلق بتراجع حديث في Discourse أو Onebox.

هذه مشكلة حقيقية لمستخدمي معاينات قائمة المواضيع.

4 إعجابات

تحديث: قمت بإجراء فحص Git Bisect، ويبدو أن هذه هي مشكلة الـ commit:

3 إعجابات
diff --git a/lib/cooked_post_processor.rb b/lib/cooked_post_processor.rb
index ac16eb82c16..46050a69e40 100644
--- a/lib/cooked_post_processor.rb
+++ b/lib/cooked_post_processor.rb
@@ -28,7 +28,7 @@ def initialize(post, opts = {})
     @cooking_options = @cooking_options.symbolize_keys
 
     @doc = Nokogiri::HTML::fragment(post.cook(post.raw, @cooking_options))
-    @has_oneboxes = post.post_analyzer.found_oneboxes?
+    @has_oneboxes = @doc.css("aside.onebox").count > 0
     @size_cache = {}

@nbianca لماذا لم نعد نستخدم طريقة post.post_analyzer.found_oneboxes? هنا؟

ستفشل جميع الـ Oneboxes التي تستخدم إما oembed أو iframe مع وضع محدد CSS الجديد، كما أن هذا يجعل كاشف الـ Onebox لدينا غير متسق عبر قاعدة الكود.

4 إعجابات

أوافقك الرأي @nbianca، يبدو أن هذا التغيير هش للغاية، لماذا تم اختيار هذه الطريقة؟

إعجابَين (2)

المشكلة كانت أن First Onebox كان يُمنح لأي رابط منشور، بغض النظر عما إذا كان رابطًا من نوع Onebox أم لا. يحدث هذا لأن PrettyText يضيف class="onebox" إلى جميع الروابط، ثم يحاول Oneboxer تحليل جميع الروابط ذات الفئة onebox.

التغيير الذي قمت به يتحقق مما إذا كان المستند النهائي يحتوي على أي Oneboxes (حيث أن Oneboxes هي عناصر aside ذات الفئة onebox). سأقوم بمراجعة أخرى لأرى ما هو المشكلة ولماذا تعطلت، ثم سأعود بتغيير يصلح المشكلتين معًا.

7 إعجابات

لقد قمت ببعض التحسينات هنا وأنشأت هذا الطلب.

لقد جربت الإصدار v2.3.2 للتو، ويبدو أن روابط يوتيوب لا تُعيين خاصية image_url للموضوع. والسبب هو أن الصورة تُستخرج من خاصية src لوسم img، ولكن عند ربط فيديو يوتيوب، يوجد وسم <div> يحتوي على خاصية CSS تسمى background-image.

هل أنت متأكد من أن image_url كانت تُعيين سابقًا؟

5 إعجابات

شكرًا لك على الاطلاع على هذا. دعني أتحقق من جهتي وأعود إليك.

@nbianca نعتذر، قد يكون هذا مزيجًا من مشكلتين.

يعمل قبل هذا الإصدار وبعده مع إضافة TLP:

بعد هذا الإصدار، يفشل مع TLP.

أتفق معك بأن هذه الخاصية غير مملوءة بشكل افتراضي بالنسبة ليوتيوب.

يبدو إذن أن إضافة TLP كانت تؤدي عملًا أفضل مع تجاوزاتها، لكنها اعتمدت على شيء تم تغييره الآن.

للعلم، توجد تجاوزات ذات صلة هنا: https://github.com/angusmcleod/discourse-topic-previews/blob/master/lib/cooked_post_processor_edits.rb

أعتقد أنني سأحتاج إلى إجراء مزيد من التحليل، ولكن يبدو أن التغييرات كانت كافية لكسر عمل TLP.

دعني أبحث في هذا الأمر قليلًا وأعيد التراجع مرة أخرى. للأسف، قد لا أجد الفرصة خلال الأيام القليلة القادمة.

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

لا أرى كيف يمكن لهذا الالتزام أن يكسر إضافة TLP :thinking: هل أنت متأكد بنسبة 100% من عملية البيسكت؟

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

غريب جدًا كيف أن عملية البحث الثنائي وجدت تغييرًا في cooked_post_processor… سأتحقق مرة أخرى وأرجع للإصدار السابق.

نعم، مؤكد:

مع هذا الـ commit يفشل: 7c83d2eeb261ac676a8320e6a704752c56fd242e
مع الـ commit السابق هذا يعمل بشكل جيد: 922c40f87cdceb8197dd61361334e0def23f13d5

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

تم إصلاح المشكلة هنا:

7 إعجابات