Get Error messages from Youtube using Youtube API - youtube-api

I am developing windows 8 application using YouTube API and C#. Now i need to display the same error message what youtube player displays on video failed. For example like this,
Is there any API query available to get this error message or any other best way to done this...??
Thanks in advance.

I don't think you can get the actual text of the message like that, but you can tell when it's been triggered; use the gdata feed for the video and specifically search for the media:restriction element, like this:
http://gdata.youtube.com/feeds/api/videos/zYNNPfuAHa4?fields=media:group/media:restriction
It will give you a list of countries where the above error message would be triggered; something like this:
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
<media:group>
<media:restriction type="country" relationship="deny">PR GU VI CA DE US UM AS MP PM</media:restriction>
</media:group>
</entry>

If you're playing back YouTube content from your application, you should be using one of the official YouTube players (like the iframe embedded player), in which case the player itself will take care of handling playback restrictions and displaying UX messages.

Related

Get streaming URL from any YouTube video

I know about how to play video in device. But Here I just want to know that is it possible to get streaming URL from any YouTube Video? Then how can I do it, I tried to search on google but I can not able to find my solution.
Generally I does not want to play direct stream from video, actually I want to save this URL (stream) in my buffer memory OR whatever temporary file and whenever user click on particular button then particular URL Stream is play.
Al Last I got YouTube APIs + iPhone = Cool mobile apps. But I am not sure that it's helpful in my case or not ? If anybody who worked on this API then please suggest me, Otherwise How can I get streaming URL.
Your suggestion will be appreciated.
Thanks in advance.
http://www.youtube.com/get_video_info?&video_id={VIDEO_ID}
This will not work on all files, some will display the message "This+video+contains+content+from.....". But many will work.
Is it possible to get streaming URL from any YouTube Video? - No, it is not possible without hurting the terms of service of youtube. Google has built the business model of youtube around the advertisements all over youtube, in-video banners and video ads and they want your user to see their ads. This is the reason they completely hide the video stream and would ban your app if you anyway access and stream it directly.
The only consented way to play youtube videos on iOS is to embed it into an iframe of a web view.

how to ensure that a youtube API response only contains videos that are suitable for playback on a mobile device

I am trying to add some youtube videos from my Admin page to database. So that mobile application can make use of them to play.
I want to filter the result from YouTube API link so that i can make sure that whatever videos i add to the database will be able to play on mobile devices like IOS and Android.
I tried
&format=5 and &format=1
but no use.
I also went through Youtube API v2.0 Docs but unable to find the correct way to assign fields parameter to my query string
can anyone guide me to fix this?
What you need is videoEmbeddable and videoSyndicated.
Here's my answer to original question: retrive only mobile-supported video from YouTube API

JavaFX project play youtube videos

I work on an automatically music player. To be short, i use the Last.fm api to get a lot of tracks names and tags. Using these tags and some intelligence computing algorithms, once you play a track, the player sets another track (with tags very appropriate to the tags of the track listened before).
I used the youtube API to search for the URL's of the movies, and I managed to make it work. Now I want to make the videos play on my music player. I have tried to place the youtube player on WebView. It works, but not as intended. I want to control that player. I want it to start playing automatically, and I want to get noticed when the video ended so I can start the next one.
Any clues of what should I do to play the videos from youtube based on the search that uses the Youtube API, and to have control over the youtube player that I place on my GUI(make it play and stop from command line)? Or is there any possible way do download the youtube movie and play it using the JavaFX API? I searched google and noticed I cannot download youtube movie into a format that can be played by JavaFX api.
Update Dec 4th, 2015
Some versions of JavaFX 8 are unable to play back youtube video content. Currently, for instance, Java 8u66 cannot playback youtube video content, but Java 8u72 early access release can.
Also note some of the videos referenced in the sample solution are no longer available or are protected from play in embedded video players. So ensure that you perform any tests using available and videos that have not been distribution restricted. Refer to the youtube documentation for information on distribution restriction if need be.
Any clues of what should I do to play the videos from youtube
As a hints to get you started, see code playing YouTube videos in JavaFX and the YouTube HTML5 api.
Here is the sample code I linked running and playing YouTube videos back within a JavaFX WebView with some (very minimal) control over the video playback via interaction with a JavaFX "New Song" button.
Or is there any possible way do download the youtube movie and play it using the JavaFX API? I searched google and noticed I cannot download youtube movie into a format that can be played by JavaFX api.
I think such a usage would violate YouTube's terms of service. I believe YouTube requires you to play the video back using the YouTube video player (let's them insert ads in the video player etc).
5.1 A
you agree not to distribute any part of or parts of the Website or the
Service, including but not limited to any Content, in any medium
without YouTube's prior written authorisation, unless YouTube makes
available the means for such distribution through functionality
offered by the Service (such as the YouTube Player);
5.1 C
you agree not to access Content through any technology
or means other than the video playback pages of the Website itself,
the YouTube Player, or such other means as YouTube may explicitly
designate for this purpose;
I advanced little, but I got stuck to other problems.
First of all, the code from jewelsea was great. Now I could embed the player into a secondary window of my player and it shows the movie based on the URL that i got using the youtube api. But it looks like JavaFX cannot show most of the movies. It shows me the youtube player and an error message saying that I need to install latest version of Adobe Flashplayer. From my research, I noticed that the webView can only show movies with quality set at 240p, not higher.
I have searched a lot on Google how to make my webView to play the 240p quality video. First of all, i tried to set the youtube query parameters (https://developers.google.com/youtube/2.0/developers_guide_protocol_api_query_parameters#formatsp). I tried all the parameters from there: 1,5 and 6. But yet, I did not get the URL of movie with format that can be viewed on the webView of the JavaFX.
I also tried to embed the video quality in the URL of the movie like this:
http:/www.youtube.com/watch?v=og2YZlLhjKs&vq=small:240p ; but it does not work at all. I also wrote that URL in the browser and it looks like the youtube automatically sets the video to the highest quality, no matter what parameter I write in the URL.
The youtube api code that I used is the same like in this webpage: http://www.javacodegeeks.com/2010/05/getting-started-with-youtube-java-api.html
I just moved the main class code to a method that returns the URL of the first video that is in the list, and I changed the " query.setOrderBy(YouTubeQuery.OrderBy.VIEW_COUNT); "
to " query.setOrderBy(YouTubeQuery.OrderBy.RELEVANCE);". And this works fine, it shows the url to proper music videos that I search.
I am sorry for not showing the code of my project but it is big and it contains 2-3 api keys, and if you tell me how to change the video URL http:/www.youtube.com/watch?v=og2YZlLhjKs to work on the code from this website: https:/gist.github.com/jewelsea/1437374 , then I will know that to do to make it work on my project as well;
And the thing about YouTube playback API also enlightened me. I see that API has a lot of functions that could help me to play a lot easier with the video content (make it play, make it stop) but the problem is that I do not have knowledge about javascript programming and it is very sad that I do not have those methods in Java API as well. Maybe I will give it a try and insert javascript code into my webview. But, if I edit the webview using javascript... Is it going to play higher quality movies on the JavaFX webView?

Is there any known api or connectivity to Twitter Vine?

Either via its own api or via the twitter api?
There are a couple of apps: http://www.vineroulette.com/ and http://vinepeek.com/ has anyone got an idea of how they get the vine feeds?
Well, not for the moment according to some requests inside the twitter support: https://dev.twitter.com/discussions/14721
The only things I can find right now is the card used inside a tweet. For example: http://vine.co/v/bwBYItOUKrw/card
My own search
I took some times so see what kind of request does Vine on iOS, using Charles.
First, I checked Tweetbot to see how it retrieve the Vine preview image for its feed. A simple GET on the Vine video to retrieve header metas and get the preview:
<meta property="twitter:image" content="https://vines.s3.amazonaws.com/thumbs/8800194F-D323-40F2-8AD2-7C19EA2505A3-3974-000000D33D0303AB_1.0.6.mp4.jpg?versionId=PZAXllJkKvo4FGk47Mb4JfM7yADdF5eC">
Which is:
In same meta, you can retrieve the video stream:
<meta property="twitter:player:stream" content="https://vines.s3.amazonaws.com/videos/8800194F-D323-40F2-8AD2-7C19EA2505A3-3974-000000D33D0303AB_1.0.6.mp4?versionId=gqt.N2z3cdss2nzFam5zam4QR9sje_vC">
Then I opened Vine app. And it makes a request to https://api.vineapp.com/. Since everything is send though https, I can only see the request / response encrypted.
Something more interesting
With the api url, I searched on Google and find interesting stuff ! One guy dig better inside Vine request by acting as a man in a middle to see the real request url. There are 3 articles. At the end, the guy successfully posted a video on Vine using its own client.
After that, I checked on Github and found one non-official Vine API using Python. People seems to use the work from the previous guy to determine API full url.
And here is a built-in interface in PHP of this non-official API.
I think you have enough stuff to start your own VineRoulette :)

YouTube API: API says it is embeddable and not blocked but when it is embedded it is blocked

I wonder if anyone ever encounters this problem. I am trying to embed "The Killers - Human" Music Video.
When I did an API feed request as follow:
http://gdata.youtube.com/feeds/api/videos?v=2&alt=jsonc&q=_Q9B9LOJIXsk
It shows that the video is embeddable and is not blocked. It even states that you can embed using the following URL:
http://www.youtube.com/v/Q9B9LOJIXsk?f=videos&app=youtube_gdata
However, when I tried this and played the video, I have received an error that the video contains content from UMG and is restricted to playback on certain sites. It is SUPPOSED to be able to playback.
I have double checked all the states etc. I wonder if I have missed anything to determine if a video is not embeddable or not on certain site.
Thank you for your help.
when you open the json you can actually see this
"status":{"value":"restricted","reason":"limitedSyndication"},
"restrictions":[{"type":"country","relationship":"deny","countries":"DE"}]

Resources