v3 api returns blocked content even with videoEmbe

2019-01-28 05:40发布

问题:

I am using v3 api and videoEmbeddable="true" in my search request.

However, when I try to play the video(s) on my webpage, it says the content is blocked to be displayed on this site. Watch it on Youtube.

Is there a parameter that I can use which will not return non-embeddable videos?

*EDIT *

Video Response:

{u'items': [{u'snippet': {u'title': u'Jerez - Yamaha Preview'}, u'contentDetails': {u'definition': u'hd', u'contentRating': {u'ytRating': u'ytAllAudiences'}, u'caption': u'false', u'duration': u'PT1M21S', u'licensedContent': True, u'dimension': u'2d'}, u'status': {u'publicStatsViewable': True, u'privacyStatus': u'public', u'uploadStatus': u'processed', u'license': u'youtube', u'embeddable': True}, u'id': u'aaR72Xf_4wc'}]}

Query:

return yt_service_v3.videos().list(
  id='aaR72Xf_4wc',
  part="id,snippet,contentDetails,status",
  fields="items(id,snippet(title),contentDetails,status)",
).execute()

This video is not embeddable on my webpage and in the response there is nothing to suggest that this video is not embeddable.

I request both contentDetails and status. I am not requesting via mobile device

Please provide pointers.

回答1:

A small subset of videos have domain-level whitelists or blacklists applied to them by their content owners. Those restrictions are not reflected in API responses.

This is what you're seeing with aaR72Xf_4wc and the relevant portion of the blog post about playback restrictions is

There are even more subtle restrictions that occasionally come into play. Not all of these are currently queryable via the API. For instance, some videos are only playable on a certain set of domains.



回答2:

I assume it wasn't there 2.5 years ago, but the current API does have indication for regional block, when requesting contentDetails. here's a response for such request for 2 videos, the first one is blocked and the second one is not. Note the regionRestriction key:

{u'etag': u'"iDqJ1j7zKs4x3o3ZsFlBOwgWAHU/ZqEbAZJ-JFnYX3v37ZRuhK8FFN8"',
 u'items': [{u'contentDetails': {u'caption': u'false',
    u'definition': u'sd',
    u'dimension': u'2d',
    u'duration': u'PT2M5S',
    u'licensedContent': False,
    u'regionRestriction': {u'blocked': [u'NU',
      u'BY',
      u'NP',
      u'NR',
      u'WS',
      u'TD',
      u'SY',
      u'NZ',
      u'NE',
      .
      .
      .
      u'TG']}},
   u'etag': u'"iDqJ1j7zKs4x3o3ZsFlBOwgWAHU/hM4srkgNUiZj2GtAhLDFoFrHnlk"',
   u'id': u'WGf4mSBoCzQ',
   u'kind': u'youtube#video'},
  {u'contentDetails': {u'caption': u'false',
    u'definition': u'sd',
    u'dimension': u'2d',
    u'duration': u'PT17M2S',
    u'licensedContent': False},
   u'etag': u'"iDqJ1j7zKs4x3o3ZsFlBOwgWAHU/JNjXh3lMwcaC9gtbzM-KmOQLh44"',
   u'id': u'Tw75Dt8fBBs',
   u'kind': u'youtube#video'}],
 u'kind': u'youtube#videoListResponse',
 u'pageInfo': {u'resultsPerPage': 2, u'totalResults': 2}}


回答3:

You can also filter by syndication if you are accessing from a mobile device. Last but not the least there are region specific blockages.



回答4:

Maybe you need to also include the filter for videoSyndicated. I don't know for sure though; it's a little confusing to me.



标签: youtube-api