开发者

How do I use the Youtube API to check if a video is embeddable?

Does anyone know how to check if a Youtube video is embeddable using the Youtube API? I've tried using this URL:

http://gdata.youtube.com/feeds/api/videos/47z7i79NuK8

but the response I get, pasted below, doesn't seem to have a field for embeddable?

entry: 
  rating: 
    rel: http://schemas.google.com/g/2005#overall
    max: "5"
    min: "1"
    average: "4.744681"
    numRaters: "94"
  group: 
    duration: 
      seconds: "47"
    player: 
      url: http://www.youtube.com/watch?v=47z7i79NuK8&feature=youtube_gdata_player
    category: Entertainment
    title: "Sesame Street: P is For Princess available everywhere on DVD!"
    thumbnail: 
    - time: "00:00:23.500"
      url: http://i.ytimg.com/vi/47z7i79NuK8/2.jpg
      height: "90"
      width: "120"
    - time: "00:00:11.750"
      url: http://i.ytimg.com/vi/47z7i79NuK8/1.jpg
      height: "90"
      width: "120"
    - time: "00:00:35.250"
      url: http://i.ytimg.com/vi/47z7i79NuK8/3.jpg
      height: "90"
      width: "120"
    - time: "00:00:23.500"
      url: http://i.ytimg.com/vi/47z7i79NuK8/0.jpg
      height: "240"
      width: "320"
    content: 
      duration: "47"
      medium: video
      yt:format: "5"
      isDefault: "true"
      url: http://www.youtube.com/v/47z7i79NuK8?f=videos&app=youtube_gdata
      expression: full
      type: application/x-shockwave-flash
    description: |-
      "Once upon a time on Sesame Street, there lived a fairy-in-training named Abby Cadabby, and she loved playing princess with friends like Rosita. But what happens when a misguided Prince (actor Paul Rudd) tries to rescue them? Pretending and the Letter P are the focus of this enchanting title, which also features fun with Natalie Portman and Elmo in "The Princess and The Elephant." This DVD also includes two bonus episodes of Sesame Street's new animated show, Abby's Flying Fairy School."

      www.sesamestreet.org/princess
    keywords: sesame street, muppets, princess, dvd, abby, abby's flying fairy school
  control: 
    state: Syndication of this video was restricted by its owner.
  category: 
  - term: http://gdata.youtube.com/schemas/2007#video
    scheme: http://schemas.google.com/g/2005#kind
  - label: Entertainment
    term: Entertainment
    scheme: http://gdata.youtube.com/schemas/2007/categories.cat
  - term: sesame street
    scheme: http://gdata.youtube.com/schemas/2007/keywords.cat
  - term: muppets
    scheme: http://gdata.youtube.com/schemas/2007/keywords.cat
  - term: princess
    scheme: http://gdata.youtube.com/schemas/2007/keywords.cat
  - term: dvd
    scheme: http://gdata.youtube.com/schemas/2007/keywords.cat
  - term: abby
    scheme: http://gdata.youtube.com/schemas/2007/keywords.cat
  - term: abby's flying fairy school
    scheme: http://gdata.youtube.com/schemas/2007/keywords.cat
  comments: 
    feedLink: 
      href: http://gdata.youtube.com/feeds/api/videos/47z7i79NuK8/comments
      countHint: "80"
  author: 
    name: SesameStreet
    uri: http://gdata.youtube.com/feeds/api/users/sesamestreet
  title: "Sesame Street: P is For Princess available everywhere on DVD!"
  statistics: 
    favoriteCount: "43"
    viewCount: "6003"
  published: "2010-10-08T19:18:09.000Z"
  xmlns:yt: http://gdata.youtube.com/schemas/2007
  id: http://gdata.youtube.com/feeds/api/videos/47z7i79NuK8
  xmlns:gd: http://schemas.google.com/g/2005
  content: |-
    "Once upon a time on Sesame Street, there lived a fairy-in-training named Abby Cadabby, and she loved playing princess with friends like Rosita. But what happens when a misguided Prince (actor Paul Rudd) tries to rescue them? Pretending and the Letter P are the focus of this enchanting title, which also features fun with Natalie Portman and Elmo in "The Princess and The Elephant." This DVD also includes two bonus episodes of Sesame Street's new animated show, Abby's Flying Fairy School."

    www.sesamestreet.org/princess
  link: 
  - href: http://www.youtube.com/watch?v=47z7i79NuK8&feature=youtube_gdata
    rel: alternate
    type: text/html
  - href: http://gdata.youtube.com/feeds/api/videos/47z7i79NuK8/related
    rel: http://gdata.youtube.com/schemas/2007#video.related
    ty开发者_C百科pe: application/atom+xml
  - href: http://gdata.youtube.com/feeds/api/videos/47z7i79NuK8
    rel: self
    type: application/atom+xml
  xmlns:media: http://search.yahoo.com/mrss/
  updated: "2010-10-10T06:36:39.000Z"
  xmlns:app: http://purl.org/atom/app#
  xmlns: http://www.w3.org/2005/Atom


As of the YouTube V3 API, there is an embeddable field in the status part.

E.g. https://www.googleapis.com/youtube/v3/videos?id=6CQEZ_kas0I&key=[yourkey]&part=snippet,contentDetails,status

"status": {
    "uploadStatus": "processed",
    "privacyStatus": "public",
    "license": "youtube",
    "embeddable": true,
    "publicStatsViewable": true
}


Looking at the YouTube API reference, it appears you have a couple choices:

Specify the "FORMAT" parameter when searching for a clip:

The format parameter specifies that videos must be available in a particular video format. Your request can specify any of the following formats:

5 - HTTP URL to the embeddable player (SWF) for this video. This format is not available for a video that is not embeddable. Developers commonly add &format=5 to their queries to restrict results to videos that can be embedded on their sites.

Or reference the yt:accessControl element:

The <yt:accessControl> tag indicates whether users are allowed to rate a video, add comments about a video, rate comments about the video, add a video response to the video, or embed the video on third-party websites. Another setting indicates whether YouTube can show the video on YouTube properties other than the YouTube.com website.

Syntax would look something like <yt:accessControl action='embed' permission='allowed'/>

So in your example it looks like the line yt:format: "5" tells you the clip can be embedded.


In YouTube V3 API, to return only videos that are embeddable, add videoEmbeddable=true parameter. You must also use type=video for this to work.


If you can use the new object-free way of showing a video you'll see that almost every video not viewable with the object tag now work flawlessy.

Syntax is:

<iframe class="youtube-player" width="340" height="220" src="http://www.youtube.com/embed/YER_VIDEO_ID_HERE" frameborder="0"></iframe>

You can't trust yt:accessControl at this time.


The XML should include <yt:noembed/> if the video isn't embeddable. Example.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜