Подтвердить что ты не робот

Получите Youtube информацию через JSON для одиночного видео (не для подачи) в Javascript

Итак, я пытаюсь получить информацию из одного видео с YouTube в формате JSON. Как категория описания заголовков, например, я могу получить помимо комментариев. Я пытаюсь сделать это в Javascript. Я заметил ссылку ниже, но все их примеры - как получить видеоинформацию из фидов. Я хотел бы получить информацию из одного видео, предполагая, что я знаю его идентификатор.

https://developers.google.com/youtube/2.0/developers_guide_json

Я также рассматривал этот qaru.site/info/159513/..., но у меня есть проблема с запросом get, который он говорит "test.js(строка 10) GET http://gdata.youtube.com/feeds/api/videos/VA770w...v=2&alt=json-in-script&callback=listInfo

200 OK       9ms "

Вкратце, если у меня есть один идентификатор видео youtube, такой как VA770wpLX-Q, что бы URL-адрес хотел получить эту информацию о видео в JSON?

Спасибо

4b9b3361

Ответ 1

UPDATE MAY/2015:

Это решение не работает должным образом, скоро будет прекращено действие API YouTube v2.

Дополнительная информация: https://www.youtube.com/devicesupport


Попробуйте что-то вроде этого:

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
});

Демо: http://jsfiddle.net/wqwxg/

Возвращенный JSON выглядит так:

{
    "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"
        }
    }
}

Ответ 2

API v2 устарел. Новый youtube api v3 работает только с токеном разработчика и имеет ограничение для бесплатных подключений.

Вы можете получить JSON без API:

http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=ojCkgU5XGdg&format=json

Или xml

http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=ojCkgU5XGdg&format=xml



Thumbs:

Иногда мы хотим использовать миниатюры из видео. Но максимальный размер изображения зависит от разрешения видео (SD или HD). Эта информация отсутствует в ответе json. Чтобы определить максимальный размер изображения без api, вам нужно получить 200 ответов от sddefault.jpg.

http://img.youtube.com/vi/ojCkgU5XGdg/sddefault.jpg

если вместо 404 используйте hqdefault.jpg. Он имеет меньшее качество, но всегда существует, и вы можете избежать 1 запроса на его обнаружение.

http://img.youtube.com/vi/ojCkgU5XGdg/hqdefault.jpg

Или используйте максимальный размер

https://i.ytimg.com/vi/ojCkgU5XGdg/maxresdefault.jpg

Мини-превью:

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

Аннотации

http://www.youtube.com/annotations_invideo?cap_hist=1&video_id=ojCkgU5XGdg

проанализировать мобильную страницу 16kb

https://m.youtube.com/watch?v=ojCkgU5XGdg

не забудьте изменить пользовательский агент на iOS / Safari 7

также

http://www.youtube.com/get_video_info?html5=1&video_id=ojCkgU5XGdg

также как встраивать youtube live

https://www.youtube.com/embed/live_stream?channel=UCkA21M22vGK9GtAvq3DvSlA

Где UCkA21M22vGK9GtAvq3DvSlA - ваш идентификатор вашего канала. Вы можете найти его внутри учетной записи YouTube на ссылке "Мой канал".

Живой палец

https://i.ytimg.com/vi/W-fSCPrYSL8/hqdefault_live.jpg

Ответ 3

в 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');
 }   
});

В ответ @Jonathan через сервер, используя PHP и 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);

Ответ 4

Проблема

API YouTube не поддерживает JSONP, как следует - см. Проблема 4329: oВстроенный обратный вызов для JSONP. Кроме того, API данных YouTube v2 устарел.

Решение

Вы можете использовать службу Noembed, чтобы получить oEmbed с JSONP для видеороликов YouTube.

Bonus

  • не нужны ключи API
  • не требуется серверный прокси-сервер

Пример

Для вашего видео VA770wpLX-Q вы можете попробовать ссылку:

https://noembed.com/embed?url=http://www.youtube.com/watch?v=VA770wpLX-Q

Или это для JSONP:

https://noembed.com/embed?callback=example&url=http://www.youtube.com/watch?v=VA770wpLX-Q

В этих ссылках есть стандартный URL-адрес видеоролика YouTube, переданного как параметр url. Он работает не только с YouTube, но также с Vimeo и другими сайтами с такими URL-адресами, как:

https://noembed.com/embed?url=https://vimeo.com/45196609

Demo

Вот простой пример использования 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);
});

Смотрите: DEMO на JS Bin.

Другие опции

  • Embedly (коммерческий сервис, бесплатный до 5000 URL-адресов/месяц)
  • Oohembed (обновление: теперь куплено Embedly, но источник)
  • AutoEmbed (обновление: похоже, оно не работает или прекращено)

Подробнее

См. также следующие вопросы: