Uzyskaj informacje z Youtube przez JSON dla pojedynczego filmu (Nie kanału) w Javascript
Więc staram się uzyskać informacje z jednego filmu youtube poprzez w formacie JSON. Jak tytuł opis kategorii, ect co mogę dostać oprócz komentarzy. Próbuję to zrobić w Javascript. Zauważyłem link poniżej, ale wszystkie ich przykłady są jak uzyskać informacje wideo z kanałów. Chciałbym uzyskać informacje z jednego filmu, zakładając, że znam jego identyfikator.
Https://developers.google.com/youtube/2.0/developers_guide_json
Ja też patrząc na to pytanie Stoskoverflow ale mam problem z żądaniem get, które mówi "test.js (Kolejka 10) GET http://gdata.youtube.com/feeds/api/videos/VA770w...v=2&alt=json-in-script&callback=listInfo
200 OK 9ms "
Krótko mówiąc, jeśli mam pojedynczy identyfikator filmów z youtube, taki jak VA770wpLX-Q, jak wyglądałby adres url, aby uzyskać informacje o filmach w JSON?
Thank you
4 answers
AKTUALIZACJA MAJ/2015:
To rozwiązanie nie działa poprawnie, YouTube API v2 jest w trakcie, aby wkrótce zostać przerwane.
Więcej informacji na: https://www.youtube.com/devicesupport
Spróbuj czegoś takiego:
var video_id='VA770wpLX-Q';
$.getJSON('http://gdata.youtube.com/feeds/api/videos/'+video_id+'?v=2&alt=jsonc',function(data,status,xhr){
alert(data.data.title);
// data contains the JSON-Object below
});
Demo: http://jsfiddle.net/wqwxg/
Zwracany JSON wygląda tak:
{
"apiVersion": "2.1",
"data": {
"id": "VA770wpLX-Q",
"uploaded": "2011-02-24T22:31:02.000Z",
"updated": "2012-04-08T21:37:06.000Z",
"uploader": "drdrevevo",
"category": "Music",
"title": "Dr. Dre - I Need A Doctor (Explicit) ft. Eminem, Skylar Grey",
"description": "Music video by Dr. Dre performing I Need A Doctor featuring Eminem and Skylar Grey (Explicit). © 2011 Aftermath Records",
"tags": ["Dr", "Dre", "Eminem", "New", "Song", "Skylar", "Grey", "GRAMMYs", "Dr.", "Need", "Doctor", "video", "Eazy", "N.W.A.", "NWA", "easy", "drdre", "and", "em"],
"thumbnail": {
"sqDefault": "http://i.ytimg.com/vi/VA770wpLX-Q/default.jpg",
"hqDefault": "http://i.ytimg.com/vi/VA770wpLX-Q/hqdefault.jpg"
},
"player": {
"default": "http://www.youtube.com/watch?v=VA770wpLX-Q&feature=youtube_gdata_player"
},
"content": {
"5": "http://www.youtube.com/v/VA770wpLX-Q?version=3&f=videos&app=youtube_gdata"
},
"duration": 457,
"aspectRatio": "widescreen",
"rating": 4.902695,
"likeCount": "430519",
"ratingCount": 441253,
"viewCount": 88270796,
"favoriteCount": 306556,
"commentCount": 270597,
"status": {
"value": "restricted",
"reason": "requesterRegion"
},
"restrictions": [{
"type": "country",
"relationship": "deny",
"countries": "DE"
}],
"accessControl": {
"comment": "allowed",
"commentVote": "allowed",
"videoRespond": "allowed",
"rate": "allowed",
"embed": "allowed",
"list": "allowed",
"autoPlay": "denied",
"syndicate": "allowed"
}
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-06 20:29:40
Aktualizacja 2018
API v2 przestarzałe. Nowy YouTube api v3 działa tylko z tokenem dewelopera i ma ograniczenia dla bezpłatnych połączeń.
Możesz uzyskać JSON bez API:
http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=ojCkgU5XGdg&format=json
Lub xml
http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=ojCkgU5XGdg&format=xml
Nowa odpowiedź json 2018 ma
{
"html": "<iframe width=\"480\" height=\"270\" src=\"https://www.youtube.com/embed/ojCkgU5XGdg?feature=oembed\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen></iframe>",
"title": "Creativity and Drugs (Eng Sub)",
"thumbnail_height": 360,
"provider_name": "YouTube",
"author_url": "https://www.youtube.com/user/serebniti",
"thumbnail_width": 480,
"height": 270,
"provider_url": "https://www.youtube.com/",
"type": "video",
"width": 480,
"version": "1.0",
"author_name": "serebniti",
"thumbnail_url": "https://i.ytimg.com/vi/ojCkgU5XGdg/hqdefault.jpg"
}
Kciuki:
hqdefault.jpg
ma mniejszą jakość, ale zawsze istnieje.
http://img.youtube.com/vi/ojCkgU5XGdg/hqdefault.jpg
http://img.youtube.com/vi/ojCkgU5XGdg/sddefault.jpg
Max rozmiar
https://i.ytimg.com/vi/ojCkgU5XGdg/maxresdefault.jpg
Mini kciuki:
http://img.youtube.com/vi/ojCkgU5XGdg/0.jpg
http://img.youtube.com/vi/ojCkgU5XGdg/1.jpg
http://img.youtube.com/vi/ojCkgU5XGdg/2.jpg
http://img.youtube.com/vi/ojCkgU5XGdg/3.jpg
Adnotacje
http://www.youtube.com/annotations_invideo?cap_hist=1&video_id=ojCkgU5XGdg
Parse mobile page 16KB
https://m.youtube.com/watch?v=ojCkgU5XGdg
Nie zapomnij zmienić user agent na iOS / Safari 7
Również
http://www.youtube.com/get_video_info?html5=1&video_id=ojCkgU5XGdg
Również jak embed youtube live
https://www.youtube.com/embed/live_stream?channel=UCkA21M22vGK9GtAvq3DvSlA
Gdzie UCkA21M22vGK9GtAvq3DvSlA to Twój identyfikator kanału. Możesz go znaleźć na koncie youtube w linku "Mój Kanał".
Live thumb
https://i.ytimg.com/vi/W-fSCPrYSL8/hqdefault_live.jpg
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-04 21:13:20
Problem
YouTube API nie obsługuje JSONP tak, jak powinno-zobacz problem 4329: oEmbed callback for JSONP . Ponadto, YouTube Data API v2 jest przestarzały .
Rozwiązanie
Możesz użyć usługi Noembed , aby uzyskać oEmbed dane z JSONP dla filmów na YouTube.Bonus
- nie są potrzebne klucze API
- nie jest wymagane proxy po stronie serwera
Przykład
Dla Twojego VA770wpLX-Q
filmiku, możesz spróbuj takiego linku:
Https://noembed.com/embed?url=http://www.youtube.com/watch?v=VA770wpLX-Q
Lub to dla JSONP:
Https://noembed.com/embed?callback=example&url=http://www.youtube.com/watch?v=VA770wpLX-Q
Te linki mają standardowy adres URL filmu YouTube przekazywany jako parametr url
. Działa nie tylko z YouTube, ale także z Vimeo i inne strony {[7] } z adresami URL like:
Https://noembed.com/embed?url=https://vimeo.com/45196609
Demo
Oto prosty przykład użycia jQuery:
var id = 'VA770wpLX-Q';
var url = 'https://www.youtube.com/watch?v=' + id;
$.getJSON('https://noembed.com/embed',
{format: 'json', url: url}, function (data) {
alert(data.title);
});
Zobacz: DEMO na js Bin.
Inne opcje
- Embedly (usługa komercyjna, Darmowa do 5000 adresów URL / miesiąc)
- Oohembed (Aktualizacja: teraz kupiony przez Embedly, ale źródło jest dostępne)
- AutoEmbed (update: seems to be down or przerwane)
Więcej informacji
Zobacz też te pytania:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-06 09:01:16
W v3:
$.getJSON('https://www.googleapis.com/youtube/v3/videos?id={videoId}&key={myApiKey}&part=snippet&callback=?',function(data){
if (typeof(data.items[0]) != "undefined") {
console.log('video exists ' + data.items[0].snippet.title);
} else {
console.log('video not exists');
}
});
W odpowiedzi a @ Jonathan po stronie serwera, używając PHP i CURL:
$url = "https://www.googleapis.com/youtube/v3/videos?id=".$videoId."&key=".$miApikey."&part=snippet";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$url);
$output=curl_exec($ch);
$response = json_decode($output, TRUE);
print_r($response);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-25 15:34:35