обмен видео на facebook с wordpress


Когда пользователь пытается поделиться страницей со встроенным видео на ней, в его статусе на facebook отображается только название страниц, а не видеопроигрыватель flash. Это происходит при совместном использовании с помощью кнопки addthis или если URL-адрес размещен непосредственно на странице facebook. Есть идеи, как я могу заставить facebook забрать встроенное флэш-видео?

Author: fuxia, 2010-11-16

2 answers

Это действительно зависит от того, как видео встроено в страницу. Facebook может обрабатывать только определенные форматы, и если он видит что-то, чего не ожидает, он по умолчанию использует безотказный стандарт "ничего не показывать".

Если встроенное видео является общепризнанным стандартом (например, проигрыватель YouTube по умолчанию), оно должно работать просто отлично. Однако, если это ваш собственный автономный видеоплеер, это не сработает. Facebook не будет встраивать Flash-объекты других людей на свой сайт.


Обновление 11/18

Facebook, каким бы умным он ни был, все еще нуждается в значительной помощи, чтобы определить, какой контент находится на странице. Он может быстро очистить теги <img />, чтобы предоставить вам эскизы страниц, но он не сканирует <object> или <embed>, потому что это может быть что угодно, от видео на YouTube (которое вы хотите опубликовать на Facebook) до навязчивого флеш-приложения (которое Facebook не хочет размещать на своем сайте).

Чтобы упростить задачу, YouTube фактически использует определенный Facebook приложение, позволяющее вам делиться видео, которые будут автоматически встроены в Facebook. В дополнение к прямой ссылке на это приложение, каждая страница видео на YouTube содержит дополнительную метаданную в своем заголовке, которую Facebook использует для извлечения видео и встраивания его на страницу. Вот пример из видео, на которое вы ссылались ранее:

<meta property="fb:app_id" content="87741124305" />
<meta property="og:title" content="Cubed: Manny Pacquiao&amp;#39;s Punchout" />
<meta property="og:description" content="Manny Pacquiao is training hard for his upcoming fight with Miguel Cotto, but you might be surprised how he got to the top.  Check out this clip." />
<meta property="og:type" content="video" />
<meta property="og:url" content="http://www.youtube.com/watch?v=IvCCuuuJhd4" />
<meta property="og:image" content="http://i2.ytimg.com/vi/IvCCuuuJhd4/default.jpg" />
<meta property="og:site_name" content="YouTube" />

Связанное приложение является приложением YouTube на Facebook. Вы также можете просмотреть некоторую конкретную информацию, включенную в здесь: заголовок, описание, тип, URL, изображение, имя_сайта. Все это помогает Facebook понять, что делать, когда вы "делитесь" страницей со своими друзьями и сетью.

Кнопка Добавить эту информацию не добавляет ничего из этой информации в ваш заголовок. На самом деле это невозможно, потому что он создан для простого обмена страницами, а не для совместного использования видео-сайтов, таких как YouTube.

Итак, как я уже говорил, это "зависит от того, как видео встроено в страницу". Facebook может обрабатывать видео только в определенные форматы, помеченные определенным образом, которые происходят с определенных сайтов/приложений.

Чтобы воспроизвести встроенную функцию видео, имеющуюся на YouTube, вам потребуется:

  • Создайте свое собственное приложение Facebook, чтобы управлять вещами
  • Добавьте такую же метаинформацию в свой заголовок

Если вы хотите (и я бы рекомендовал это), проще всего было бы просто очистить теги <meta>, используемые YouTube. Поэтому, если вы добавляете видео, используйте тот же идентификатор приложения YouTube, тот же <meta> свойства, и вы должны быть готовы к работе.

 6
Author: EAMann, 2020-06-15 08:21:38

Обновление Чтобы извлечь только мета-теги с атрибутом свойства, я собрал следующее:

  <?php 

ini_set('display_errors', false); 
$page = "http://www.youtube.com...(the video ID)"; 
$page_data = file_get_contents($page); 

$doc=new DOMDocument();
$doc->loadHTML($page_data);
$xml=simplexml_import_dom($doc);
$meta=$xml->xpath('//meta');
foreach ($meta as $met) 
{
 if ($met['property'] != '')
 {
     echo '<meta property="'.$met['property'] . '" content="' . $met['content']."\">\n";
 }
}
ini_set('display_errors', true); 

?>

Я знаю, что это немного банально, но это работает. Я думаю, что собираюсь использовать это с одним из плагинов для встраивания URL-видео и установить мета-информацию в заголовке шаблона.

 1
Author: TonyK, 2010-11-24 22:25:25