2016-01-08 5 views
2

Я пытаюсь получить продолжительность, изображение и представления видео в плейлисте с помощью API Youtube. Я заметил, что ни один из них не включен в фрагмент, который я получил. Вот код, который я до сих пор:Извлечение продолжительности, видеоизображения и просмотров видео в Playlist YouTube API

gapi.client.setApiKey('xxxx'); 
gapi.client.load('youtube', 'v3', function() { 

    var request = gapi.client.youtube.playlistItems.list({ 
     part: 'snippet, contentDetails', 
     playlistId: 'PL3C9792F77CB0EE51', 
     maxResults: 50 
    }); 

request.execute(function(response) { 
    for (var i = 0; i < response.items.length; i++) { 
     console.log(response.items[i].snippet.title + " published at " 
     + response.items[i].snippet.publishedAt); 
     console.log(response.items[i].contentDetails.videoId); 
    } 
}); 

console.log(response.items[i].snippet) возвращает следующий за видео:

Object { 
    publishedAt: ..., 
    channelId: ..., 
    title: ..., 
    description: ..., 
    thumbnails { ... } 
} 

и console.log(response.items[i].contentDetails) возвращается:

Object { 
    videoId: ..., 
} 

Я думал, возможно, с помощью VideoID к затем выполнить другой запрос и получить продолжительность, изображения и представления для каждого данного видео, но я не уверен, как действовать.

+0

Можете ли вы опубликовать данные, которые вы извлекаете? – Sapikelio

+0

@Sapikelio, я отредактировал мое сообщение. – NotToBrag

+0

Я разместил решение для вас. Надеюсь, это поможет :) – Sapikelio

ответ

5

Шаг за шагом.

Youtube PlayListItem имеет эту структуру.

{ 
    "kind": "youtube#playlistItem", 
    "etag": etag, 
    "id": string, 
    "snippet": { 
    "publishedAt": datetime, 
    "channelId": string, 
    "title": string, 
    "description": string, 
    "thumbnails": { 
     (key): { 
     "url": string, 
     "width": unsigned integer, 
     "height": unsigned integer 
     } 
    }, 
    "channelTitle": string, 
    "playlistId": string, 
    "position": unsigned integer, 
    "resourceId": { 
     "kind": string, 
     "videoId": string, 
    } 
    }, 
    "contentDetails": { 
    "videoId": string, 
    "startAt": string, 
    "endAt": string, 
    "note": string 
    }, 
    "status": { 
    "privacyStatus": string 
    } 
} 

Если вы хотите получить видео изображения, на thumbnails вас есть атрибут URL к изображению. Однако вы также можете сделать это так.

http://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg 

Для версии высокого качества эскиза использовать URL, подобную этой:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg 

Существует также версия среднего качества эскиза, используя URL, похожий на HQ:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg 

для стандартной версии определения эскиза, используйте URL, похожий на этот:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg 

Для максимальной версии разрешения эскиза использовать URL, похожий на этот:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg 

EDIT (Получить информацию о видео)

Чтобы получить информацию слева вы должны получить videoObjet по идентификатору, который вы получили в PlayListItem, выполняющем этот вызов. Demo

$.ajax({ 
    async: false, 
    type: 'GET', 
    url: "https://www.googleapis.com/youtube/v3/videos?id={{videoId}}&key={{yourKey}}&part=snippet,contentDetails", 
    success: function(data) { 
     ...Do what you want with data... 
    } 
} 

Возвращенный JSON выглядит следующим образом:

{ 
    kind: "youtube#videoListResponse", 
    etag: ""oqbvhYxBE6fAbRk6m7aLlHf5s1I/jg_aG2jmpbZL5qs3yae4JnZbDs0"", 
    pageInfo: { 
     totalResults: 1, 
     resultsPerPage: 1 
    }, 
    items: [{ 
     kind: "youtube#video", 
     etag: ""oqbvhYxBE6fAbRk6m7aLlHf5s1I/YQ-QRwoxkXL4UBFIFCyCwIdmtzg"", 
     id: "ojCkgU5XGdg", 
     contentDetails: { 
     duration: "PT23M14S", 
     dimension: "2d", 
     definition: "hd", 
     caption: "true", 
     licensedContent: false 
     }, 
     statistics: { 
     viewCount: "25587", 
     likeCount: "168", 
     dislikeCount: "17", 
     favoriteCount: "0", 
     commentCount: "45" 
    } 
    }] 
} 

Если вы хотите получить более подробную информацию о видео. Вы должны добавить по запросу part параметров любой из следующих вариантов: snippet, contentDetails, fileDetails, player, processingDetails, recordingDetails, statistics, status, suggestions у topicDetails.

Я надеюсь, что это поможет

+0

Как мне получить «videoObjet»? Другими словами, как мне сделать запрос на его получение? – NotToBrag

+0

Я отредактировал ответ и сделал вам демо. Если у вас есть больше сомнений, скажите мне: D – Sapikelio

Смежные вопросы