YouTube:获取youtube标题+图片+描述,如facebook

时间:2010-06-20 22:00:17

标签: javascript

当您将“youtube”链接粘贴到“您现在正在做什么?”时,他们如何做到这一点?然后出现在链接,youtube图片+标题+描述?他们是怎么做到的,这很难做到吗?这样做的例子很棒!

2 个答案:

答案 0 :(得分:5)

Facebook的认可适用于大多数链接,而不仅仅是YouTube等顶级链接。所以我的猜测是,他们试图找出该页面是否包含指向替代表示的链接,例如Feed。当他们找到该链接时,他们会拨打电话获取Feed内容。 Feed格式主要是标准化的RSS或Atom,并且具有明确可识别的属性,例如titlethumbnaildescription等。

因此,假设您有一个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>

通过此,您可以获得标题和缩略图网址信息,然后可以将这些信息显示给最终用户。这是一种通用的方法,能够处理大多数在线链接。维护您支持的链接类型目录,例如:

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

并检查页面上的任何链接是否与您支持的类型相匹配。如果是,请按照该链接获取所需信息。知道type属性可以为您提供有关预先解析的格式的信息。

答案 1 :(得分:4)

这样做的一种方法是使用Youtube Data API(http://code.google.com/apis/youtube/2.0/developers_guide_protocol_video_entries.html)。

您将视频ID(视频链接)发送到api,它会以xml / JSON格式返回您需要的所有数据,具体取决于您在网址中指定的内容。

示例:

如果您获得了视频链接http://www.youtube.com/watch?v=NWHfY_lvKIQ,则可以使用此链接http://gdata.youtube.com/feeds/api/videos/NWHfY_lvKIQ获取有关该视频的所有信息。返回的数据包含有关视频的所有信息,包括标题,说明和缩略图。