Youtube api v3 사용자 동영상 목록 가져 오기
Youtube api v2를 사용하면 동영상을 쉽게 얻을 수 있습니다. 다음과 같이 쿼리를 보내십시오.
Youtube api v2에는 검색어 작성을위한 대화 형 데모 페이지도 있습니다. http://gdata.youtube.com/demo/index.html
Youtube api v3에서는 해당 방법을 모릅니다. api v3로 길을 알려주세요.
감사합니다!
채널 번호 목록 방법은 "업로드"재생 목록 재생 목록 ID를 포함하는 채널에 대한 정보와 JSON을 반환합니다 :
https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=OneDirectionVEVO&key={YOUR_API_KEY}
재생 목록 ID를 사용하면 playlistItems # list 메소드로 동영상을 가져올 수 있습니다 .
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUbW18JZRgko_mOGm5er8Yzg&key={YOUR_API_KEY}
문서 페이지 끝에서 테스트 할 수 있습니다.
그렇게해야합니다. 이 코드는 제목 만 가져오고 출력하지만 원하는 세부 정보를 얻을 수 있습니다.
// Get Uploads Playlist
$.get(
"https://www.googleapis.com/youtube/v3/channels",{
part : 'contentDetails',
forUsername : 'USER_CHANNEL_NAME',
key: 'YOUR_API_KEY'},
function(data) {
$.each( data.items, function( i, item ) {
pid = item.contentDetails.relatedPlaylists.uploads;
getVids(pid);
});
}
);
//Get Videos
function getVids(pid){
$.get(
"https://www.googleapis.com/youtube/v3/playlistItems",{
part : 'snippet',
maxResults : 20,
playlistId : pid,
key: 'YOUR_API_KEY'},
function(data) {
var results;
$.each( data.items, function( i, item ) {
results = '<li>'+ item.snippet.title +'</li>';
$('#results').append(results);
});
}
);
}
<!--In your HTML -->
<ul id="results"></ul>
API V3에서는 상황이 많이 변경되었습니다. 여기입니다 비디오 는 API Explorer를 사용하여 라이브 데모와 함께, 주어진 채널에 업로드 한 동영상의 목록을 얻을하는 데 필요한 V3 API 호출을 안내합니다.
YouTube 개발자 라이브 : v3에서 채널 업로드 가져 오기-https://www.youtube.com/watch?v = RjUlmco7v2M
할당량 비용을 고려한다면이 간단한 알고리즘을 따르는 것이 좋습니다.
먼저 https://www.youtube.com/feeds/videos.xml?channel_id= 에서 데이터를 가져옵니다 . 이것은 동영상 ID를 제공하는 간단한 XML 피드이지만 더 이상 '부분'을 지정할 수 없습니다 (통계 등).
해당 목록의 동영상 ID를 사용하여 쉼표로 구분 된 동영상 ID 목록을 허용하는 / videos API 엔드 포인트에서 쿼리를 수행하세요.이 목록은 할당량 비용 1 개에 추가 부품 매개 변수에 대해 0-2를 더해야합니다. @chrismacp가 지적했듯이 / search 엔드 포인트를 사용하는 것이 더 간단하지만 할당량 비용이 100이므로 빠르게 합산 될 수 있습니다.
두 번째 호출을 할 때 여기에 리소스 고려 사항 (cpu, 메모리 등)이 있지만 많은 시나리오에서 이것이 유용한 방법이 될 수 있다고 생각합니다.
게시 한 요청에 해당하는 것은 실제로 재생 목록 요청이 아니라 3.0 API의 검색입니다. 그렇게하는 것도 더 쉽습니다. 하지만 채널 ID에 대한 사용자 이름을 제외해야합니다.
전의. GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUGhCVGZ0ZSpe5hJHWyiLwHA&key= {YOUR_API_KEY}
여기에있는 누군가에게 도움이된다면 이것이 내가 발견 한 것이고 지금까지 나를 위해 잘 작동하는 것 같습니다. 이 요청을하기 전에 OAuth 2.0을 통해 회원을 인증합니다. 그러면 인증 된 회원 동영상이 제공됩니다. 항상 그렇듯이 개인 마일리지는 다를 수 있습니다 .D
curl https://www.googleapis.com/youtube/v3/search -G \
-d part=snippet \
-d forMine=true \
-d type=video \
-d order=date \
-d access_token={AUTHENTICATED_ACCESS_TOKEN}
다른 방법은 다음을 통해 현재 oauth 인증 된 사용자의 재생 목록을 가져 오는 것입니다. property mine = true
인증 후 oauth access_token이 검색되는 위치 : https://developers.google.com/youtube/v3/guides/authentication
https://www.googleapis.com/youtube/v3/playlists?part=id&mine=true&access_token=ya29.0gC7xyzxyzxyz
300 개 이상의 동영상이있는 재생 목록의 동영상을 얻으려면 playlistitems.list를 사용하지 마세요. "사용해보기"섹션의 Google 링크 " https://developers.google.com/youtube/v3/docs/playlistItems/list "에서 라이브로 사용해 볼 수 있습니다 . undefined를 반환합니다.
나는 내 프로젝트에서도 사용했습니다. undefined 만 반환합니다.
PHP : pageToken 속성을 사용하여 재생 목록의 모든 페이지로 이동했습니다. 도움이 되길 바랍니다.
//step 1: get playlist id
$response = file_get_contents("https://www.googleapis.com/youtube/v3/channels?key={$api_key}&forUsername={$channelName}&part=contentDetails");
$searchResponse = json_decode($response,true);
$data = $searchResponse['items'];
$pid = $data[0]['contentDetails']['relatedPlaylists']['uploads'];
//step 2: get all videos in playlist
$nextPageToken = '';
while(!is_null($nextPageToken)) {
$request = "https://www.googleapis.com/youtube/v3/playlistItems?key={$api_key}&playlistId={$pid}&part=snippet&maxResults=50&pageToken=$nextPageToken";
$response = file_get_contents($request);
$videos = json_decode($response,true);
//get info each video here...
//go next page
$nextPageToken = $videos['nextPageToken'];
}
다음은 공식 Google API 노드 라이브러리 ( https://github.com/google/google-api-nodejs-client )를 사용하는 코드입니다.
const readJson = require("r-json");
const google = require('googleapis');
const Youtube = google.youtube('v3');
// DONT store your credentials in version control
const CREDENTIALS = readJson("/some/directory/credentials.json");
let user = "<youruser>";
let numberItems = 10;
let channelConfig = {
key: CREDENTIALS.youtube.API_KEY,
part: "contentDetails",
forUsername: user
};
Youtube.channels.list(channelConfig, function (error, data) {
if (error) {
console.log("Error fetching YouTube user video list", error);
return;
}
// Get the uploads playlist Id
let uploadsPlaylistId = data.items[0].contentDetails.relatedPlaylists.uploads;
let playlistConfig = {
part : 'snippet',
maxResults : size,
playlistId : uploadsPlaylistId,
key: CREDENTIALS.youtube.API_KEY
};
// Fetch items from upload playlist
Youtube.playlistItems.list(playlistConfig, function (error, data) {
if (error) {
console.log("Error fetching YouTube user video list", error);
}
doSomethingWithYourData(data.items);
});
});
node.js에서는 다음 코드로 구현할 수 있습니다.
authKey
및 개체 매개 변수 channelId
로 필요합니다 options
.
cb
콜백은 데이터를 가져온 후 호출됩니다.
async function fetchChannelInfo(options) {
const channelUrl = `https://www.googleapis.com/youtube/v3/channels?part=contentDetails,statistics&id=${
options.channelId
}&key=${options.authKey}`;
const channelData = await axios.get(channelUrl);
return channelData.data.items[0];
}
function fetch(options, cb) {
fetchChannelInfo(options).then((channelData) => {
options.playlistId = channelData.contentDetails.relatedPlaylists.uploads;
const paylistUrl = `https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=${
options.playlistId
}&key=${options.authKey}`;
axios
.get(paylistUrl)
.then((response) => {
const payloadData = ;
const videoList = [];
response.data.items.forEach((video) => {
videoList.push({
publishedAt: video.snippet.publishedAt,
title: video.snippet.title,
thumbnails: thumbnails,
videoId: video.snippet.resourceId.videoId,
});
});
cb(null, videoList);
})
.catch((err) => {
cb(err, null);
});
});
}
참고 : axios는 RESTful 요청에 사용됩니다. 설치하기 위해서
npm install axios
$.get(
"https://www.googleapis.com/youtube/v3/channels",{
part: 'snippet,contentDetails,statistics,brandingSettings',
id: viewid,
key: api},
function(data){
$.each(data.items, function(i, item){
channelId = item.id;
pvideo = item.contentDetails.relatedPlaylists.uploads;
uploads(pvideo);
});
});
업로드 기능은
function uploads(pvideo){
$.get(
"https://www.googleapis.com/youtube/v3/playlistItems",{
part: 'snippet',
maxResults:12,
playlistId:pvideo,
key: api},
function(data){
$.each(data.items, function(i, item){
videoTitle = item.snippet.title;
videoId = item.id;
description = item.snippet.description;
thumb = item.snippet.thumbnails.high.url;
channelTitle = item.snippet.channelTitle;
videoDate = item.snippet.publishedAt;
Catagoryid = item.snippet.categoryId;
cID = item.snippet.channelId;
})
}
);
}
function tplawesome(e,t){res=e;for(var n=0;n<t.length;n++){res=res.replace(/\{\{(.*?)\}\}/g,function(e,r){return t[n][r]})}return res}
$(function() {
$(".form-control").click(function(e) {
e.preventDefault();
// prepare the request
var request = gapi.client.youtube.search.list({
part: "snippet",
type: "video",
q: encodeURIComponent($("#search").val()).replace(/%20/g, "+"),
maxResults: 20,
order: "viewCount",
publishedAfter: "2017-01-01T00:00:00Z"
});
// execute the request
request.execute(function(response) {
var results = response.result;
$("#results").html("");
$.each(results.items, function(index, item) {
$.get("tpl/item.html", function(data) {
$("#results").append(tplawesome(data, [{"title":item.snippet.title, "videoid":item.id.videoId ,"descrip":item.snippet.description ,"date":item.snippet.publishedAt ,"channel":item.snippet.channelTitle ,"kind":item.id.kind ,"lan":item.id.etag}]));
});
});
resetVideoHeight();
});
});
$(window).on("resize", resetVideoHeight);
});
function resetVideoHeight() {
$(".video").css("height", $("#results").width() * 9/16);
}
function init() {
gapi.client.setApiKey("YOUR API KEY .... USE YOUR KEY");
gapi.client.load("youtube", "v3", function() {
// yt api is ready
});
}
Check the Complete code here https://thecodingshow.blogspot.com/2018/12/youtube-search-api-website.html
참고URL : https://stackoverflow.com/questions/22613903/youtube-api-v3-get-list-of-users-videos
'Nice programing' 카테고리의 다른 글
키 / 값 쌍을 얻기 위해 Javascript에서 JSON 응답 구문 분석 (0) | 2020.11.26 |
---|---|
'잘못된 업데이트 : 섹션 0의 잘못된 행 수 (0) | 2020.11.26 |
ActiveRecord where field =? (0) | 2020.11.26 |
Spring Boot 애플리케이션의 환경 별 application.properties 파일 (0) | 2020.11.26 |
Swift에서 throw와 rethrows의 차이점은 무엇입니까? (0) | 2020.11.26 |