فشل تضمين مقاطع الفيديو من facebook.com ومواقع أخرى

عضو مني نشر هذا الرابط على فيسبوك بشكل منفرد، وحاول Discourse تحليله لكنه لم ينجح.

دعني أجرب نفس الرابط مباشرة على سطر منفرد:

فقط في حال لم تظهر لك أعلاه، هذا ما يتم عرضه:

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

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

إذًا… هل من الممكن إخبار Discourse بعدم محاولة تضمين مقاطع الفيديو تلقائيًا في تلك النطاقات؟ كنت أبحث عن إعداد مثل “قائمة سوداء للروابط التي تحتوي على هذه الكلمات من تضمين الوسائط” حيث يمكنني إضافة تلك النطاقات. (أو ربما قائمة بيضاء للروابط المعتمدة مثل يوتيوب وفيميو، للمساعدة في تجنب المشاكل المستقبلية مع مواقع جديدة.)

إذا لم يكن ذلك ممكنًا، فهل هناك إصلاح سريع يمكنني القيام به على منتدياتي للمساعدة؟

فايرفوكس (سطح المكتب)

هنا على سطح المكتب، باستخدام فايرفوكس 75 على جهاز ماك… أرى مربع الفشل الرمادي.

سفاري (سطح المكتب)

هنا على سفاري، تظهر الإطارات الأولى للفيديو، ولكن عند النقر فوق زر “تشغيل”، لا يحدث شيء.

كروم (سطح المكتب)

باستخدام كروم الإصدار 81 على سطح المكتب… نفس الشيء… يمكنك رؤية الفيديو لكنه لا يعمل أبدًا.

iPhone - Safari iOS

نفس المشكلة في Chrome أو Safari (سطح المكتب)… يظهر الفيديو لكنه لا يعمل.

لا يدعم Discourse رسميًا تضمين فيديوهات فيسبوك عبر Onebox.

قد ترغب في الاطلاع على:

إعجابَين (2)

هل يمكننا استبدال مخرج الـ onebox حتى لا ينشئ مشغلًا معطلًا؟ أعتقد أننا يجب أن نجعله يعمل كما كان من قبل

3 إعجابات

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

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

أود جدًا إيجاد حل سريع… أخبرني إذا كنت أستطيع المساعدة؟

4 إعجابات

الحل الأسرع هنا هو إضافة www.facebook.com إلى الإعداد: onebox domains blacklist. بهذه الطريقة لن يحاول onebox تضمين مقاطع فيديو من facebook.com.

3 إعجابات

ما تغير هنا هو أن فيسبوك حدّثت بيانات OpenGraph لإضافة روابط فيديو مقيدة للغاية:

<meta property="og:video:secure_url" content="https://video.fjai1-2.fna.fbcdn.net/v/t42.9040-2/10000000_626864624535070_4779621138076532736_n.mp4?_nc_cat=107&amp;_nc_sid=985c63&amp;efg=eyJybHIiOjM1MiwicmxhIjoxMzI5LCJ2ZW5jb2RlX3RhZyI6InN2ZV9zZCJ9&amp;_nc_oc=AQkUihmrvyg1wU9qH_NjqkLUzl0XSYJGE6JREtPH7jxKc1aXEIuGLSbauCEPM-hI-DCuJRacr1hCB6HHZre1lxto&amp;rl=352&amp;vabr=196&amp;_nc_ht=video.fjai1-2.fna&amp;oh=3fd1d5e14f27d55bc0d2a91d4714148b&amp;oe=5EA6E533" />

يظهر رابط الفيديو أعلاه خطأ: Bad URL timestamp. :man_facepalming:

حتى الرابط الموجود في وسم og:image يُظهر نفس الخطأ.

ليس لدينا أي معلومات لعرضها في صندوق فيسبوك الواحد سوى عنوان الفيديو. أعتقد أنه يجب علينا تهيئة الصندوق الواحد بشكل ثابت لاستبعاد روابط فيديو فيسبوك.

6 إعجابات

ممتاز، شكرًا لك… هذا مثالي.

بالمناسبة، تذكير بأن هذه المشكلة تحدث في مواقع أخرى غير فيسبوك؛ حاول عضو نشر رابط لصفحة فيديو على xvideos.com وفشل الأمر أيضًا. (تحذير: محتوى غير مناسب للقاصرين! هذا موقع للبالغين بشكل كبير!) قمت باختباره مع عدد من المواقع الأخرى ووجدت نفس النتيجة.

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

بالنسبة لفيسبوك، هل يمكننا استخدام سمة twitter:player كإطار مضمن (iframe)؟ يبدو أن الرابط غير منتهي الصلاحية:

Screenshot 2020-04-27 at 12.26.42

(كم من السخرية أن يكون فيسبوك يقدم بيانات OpenGraph معطلة بينما بيانات تويتر تعمل بشكل صحيح :joy:)

أو كبديل، يمكن تطبيق نفس المنطق المستخدم في إنستغرام: عرض صورة مصغرة كبيرة مع زر :play_or_pause_button: مرتبط.

4 إعجابات

لقد جربت ذلك وحصلت على روابط معطلة لوسوم twitter:image و twitter:player. هل تعمل معك؟

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

في مقطع الفيديو النموذجي الخاص بـ @pnoeric، أرى:

<meta name="twitter:player" content="https://www.facebook.com/plugins/video.php?height=222&width=400&href=https://www.facebook.com/dccarmen/videos/10222567743521148/">

والذي يبدو أنه يعمل بشكل جيد.

ولكن إذا وجدت بعض الروابط المعطلة، فمن الأفضل تجنبها.

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

بالنسبة لنفس الرابط، أرى ما يلي:

https://www.facebook.com/plugins/video.php?height=222&amp;width=400&amp;href=https://www.facebook.com/dccarmen/videos/10222567743521148/

لاحظ وجود &amp; الذي يكسر الرابط… استبدالها بـ & يحل المشكلة. إذن، يمكننا إيجاد حل بديل.

روابط twitter:image لا تزال معطلة (إليك مثال).

لذا، لدينا خياران:

  1. استخدام روابط twitter:player لتضمين فيديو فيسبوك.
  2. وضع فيديوهات فيسبوك في القائمة السوداء داخل “onebox” وعرضها كروابط عادية.

أي الخيارين تفضل @codinghorror؟

3 إعجابات

يمكننا تجربة ذلك، لكن هل نحن متأكدون من أن الروابط لا تنتهي صلاحيتها؟

لا أعتقد أن الرابط سينتهي صلاحيته، لأن عنوان URL يشير في الأساس إلى إضافة فيسبوك ستقوم بتضمين الفيديو لأي رابط فيديو نمرره في معامل href.

https://www.facebook.com/plugins/video.php?height=222&width=400&href=https://www.facebook.com/dccarmen/videos/10222567743521148/

لذلك يمكننا استخدام وسم iframe لتضمين فيديو فيسبوك.

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

لا، الإصلاح سيكون مخصصًا لفيسبوك فقط.

يُشار إلى أن فشل عرض الفيديو في الصندوق الواحد عادةً ما يشير إلى وجود خطأ في الموقع الذي تحاول تضمينه. وفي حالة فيسبوك، كان السبب في ذلك هو أن فيسبوك كان يقيد العرض ويسمح بتشغيل الفيديو لفترة زمنية محددة فقط.

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

إعجابَين (2)

حسناً.

مما. هل توجد طريقة لإدراج نطاقات معينة في القائمة البيضاء بحيث يحاول onebox تضمينها؟ إذا لم يكن الأمر كذلك، يبدو أن لدينا هذه الحالة:

  1. أدير منتدى مجتمع حيث يحب الأعضاء ربط المواقع التي تحتوي على مقاطع فيديو. (قد تكون هذه أي مواقع، بالطبع… لا نعرف ذلك الآن.)

  2. إذا كان هناك خطأ في كود الموقع يمنع التضمين من العمل، يقوم Discourse بتشويه التضمين (بشكل قبيح)، والأكثر سوءاً، أنه يزيل عنوان URL الأصلي بحيث لا يتمكن الآخرون من معرفة ما كان يحاول مشاركته المنشئ الأصلي.

ألا يبدو أن الخطوة 2 يجب أن تكون: “إذا كان هناك خطأ في كود الموقع يمنع التضمين من العمل، يتوقف Discourse عن محاولة التضمين وبدلاً من ذلك يسمح للروابط بالمرور ببساطة؟

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

بالتأكيد يمكنك إصلاحه — ما عليك سوى حظر النطاقات التي تلاحظ فيها مشاكل. هذا ليس مستحيلاً.

إعجابَين (2)

حسنًا، لا بأس بذلك. ليس لدي تقدير دقيق لمدى خطورة هذه المشكلة؛ فالتعامل اليدوي معها يُعد حلاً ممتازًا إذا لم يكن هناك سوى عدد قليل من النطاقات التي تواجه هذه المشكلة.

ما زلت أعتقد أن Discourse يجب أن تتعامل مع البيانات الخارجية غير الصحيحة بطريقة أكثر لباقة من مجرد “إنشاء رسالة خطأ ضخمة وإزالة أهم محتوى من منشور المستخدم الأصلي”، وأعتقد أنك توافقني على ذلك أيضًا. :slight_smile: ولكن في الوقت الحالي، يُعد الحظر حلاً بديلاً مقبولاً. شكرًا لك.

إعجابَين (2)