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.
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.
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}}
You can also filter by syndication if you are accessing from a mobile device. Last but not the least there are region specific blockages.
Maybe you need to also include the filter for videoSyndicated
. I don't know for sure though; it's a little confusing to me.