23:11・2022/07/08
カテゴリー
TipsaxiosでYoutubeAPIを呼び出してjsonファイルに書き出す
16:55・2021/12/20 公開
00:29・2022/01/18 更新
axios↓
https://github.com/axios/axios
youtubeDataAPIのサンプル↓
https://developers.google.com/youtube/v3/sample_requests
const fs = require('fs');
const axios = require('axios');
let data = [];
axios.get('https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=PLTOj1BFS6AhMl8BG1IeIfv6wo6VmPP0sp&maxResults=50&pageToken=&key=YOUR_API_KEY', {
}).then(function(response) {
console.log(response);//pageトークンを手動で確かめる用
let items = response.data.items;
for(let i = 0; i < items.length; i++) {
let item = {
chId: items[i].snippet.videoOwnerChannelId,
chName: items[i].snippet.videoOwnerChannelTitle,
chThumbnail: '',
chView: '',
chSubs: '',
chViCo: '',
viTitle: items[i].snippet.title,
viThumbnail: items[i].snippet.thumbnails.high.url,
viId: items[i].snippet.resourceId.videoId,
}
data.push(item);
}
}).catch(function (error) {
console.log(error);
})
.then(function () {
let myPromise1 = Promise.resolve();
for(let i = 0; i < data.length; i++) {
myPromise1 = myPromise1.then(()=> {
return new Promise(function (resolve, reject) {
axios.get(`https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&id=${data[i].chId}&key=AIzaSyC0pVPoevfP1dS8n4GQdkK3s0PFJ5QiJA8`, {
}).then(function(response) {
let resp = response.data.items[0];
data[i].chThumbnail = resp.snippet.thumbnails.high.url;
data[i].chView = resp.statistics.viewCount;
data[i].chSubs = resp.statistics.subscriberCount;
data[i].chViCo = resp.statistics.videoCount;
}).catch(function (error) {
console.log(error);
})
.then(function () {
resolve();
});
});
});
}
myPromise1.then(()=> {
console.log(data);
fs.appendFileSync('data.json', JSON.stringify(data, null, ' '));
//外部のjsonファイルに追記する
});
});
自動化するのが面倒だったので手動でpageTokenの中にnextPageTokenとかを入れると次のページのデータが取れます。
PageTokenについてはここにある↓
https://developers.google.com/youtube/v3/docs/channels/list