YouTube: получить название YouTube + изображение + описание, как Facebook - PullRequest
4 голосов
/ 21 июня 2010

Как они сделали эту умную вещь, когда вы вставляете ссылку на YouTube в «Что вы делаете сейчас?»тогда появляется в ссылках, изображение на YouTube + название + описание?как они это сделали, и это трудно сделать?Пример этого был бы великолепен!

Ответы [ 2 ]

5 голосов
/ 21 июня 2010

Распознавание в Facebook работает для большинства ссылок, а не только для самых популярных, таких как YouTube. Поэтому я предполагаю, что они пытаются выяснить, содержит ли страница ссылку на альтернативное представление, такое как канал. Когда они находят эту ссылку, они звонят, чтобы получить содержимое канала. Форматы каналов в основном стандартизированы RSS или Atom и имеют четко идентифицируемые свойства, такие как title, thumbnail, description и т. Д.

Допустим, у вас есть ссылка на видео YouTube, например http://www.youtube.com/watch?v=0Mz4NTozNXw.. В своем источнике она содержит следующие ссылки с альтернативными представлениями, которые могут предоставить необходимые метаданные:

<link rel="alternate" type="application/json+oembed" href="http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch?v%3D0Mz4NTozNXw&format=json" title="Crispy Onion Rings Recipe - How to Make Crispy Onion Rings" /> 
<link rel="alternate" type="text/xml+oembed" href="http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch?v%3D0Mz4NTozNXw&format=xml" title="Crispy Onion Rings Recipe - How to Make Crispy Onion Rings" />

Если мы извлечем содержимое ссылки с помощью type="text/xml+oembed", мы получим следующий XML-код:

<oembed>
  <provider_url>http://www.youtube.com/</provider_url>
  <title>Crispy Onion Rings Recipe - How to Make Crispy Onion Rings</title>
  <html>&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0Mz4NTozNXw&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/0Mz4NTozNXw&amp;fs=1" type="application/x-shockwave-flash" width="480" height="295" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;</html>
  <author_name>foodwishes</author_name>
  <height>295</height>
  <thumbnail_width>480</thumbnail_width>
  <width>480</width>
  <version>1.0</version>
  <author_url>http://www.youtube.com/user/foodwishes</author_url>
  <provider_name>YouTube</provider_name>
  <thumbnail_url>http://i1.ytimg.com/vi/0Mz4NTozNXw/hqdefault.jpg</thumbnail_url>
  <type>video</type>
  <thumbnail_height>360</thumbnail_height>
</oembed>

Отсюда вы можете получить заголовок и информацию об URL-адресе миниатюры, которая затем может быть отображена конечному пользователю. Это достаточно общий подход, позволяющий обрабатывать большинство онлайн-ссылок. Вести каталог поддерживаемых вами типов ссылок, таких как:

application/atom+xml
application/rss+xml
application/json+oembed
application/json+oembed
...

И проверьте, соответствуют ли какие-либо ссылки на странице поддерживаемым типам. Если это так, перейдите по этой ссылке и получите необходимую информацию. Зная атрибут type, вы получите информацию о формате, ожидаемом для предварительного разбора.

4 голосов
/ 21 июня 2010

Один из способов сделать это - использовать API данных Youtube (http://code.google.com/apis/youtube/2.0/developers_guide_protocol_video_entries.html).

Вы отправляете идентификатор видео, который находится в ссылке на видео, в API, и он возвращает все необходимые данные в формате xml / JSON, в зависимости от того, что вы указали в URL.

Пример:

Если вы получили ссылку на видео http://www.youtube.com/watch?v=NWHfY_lvKIQ,, вы можете получить всю информацию о видео, используя эту ссылку, http://gdata.youtube.com/feeds/api/videos/NWHfY_lvKIQ. В возвращенных данных содержится вся информация о видео, включая заголовок, описание и миниатюра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...