в первый день моей новой работы в качестве младшего разработчика я взял на себя миссию понять API YouTube, и во время поиска в Интернете я нашел много

информация , но непонятная , поэтому я решил внести ясность , потому что ключом к росту является обмен знаниями .

прежде чем прыгнуть в мир YouTube, мы должны понять аутентификацию и авторизацию в мире общедоступных API.

Ключ API против идентификатора клиента (OAuth2): аутентификация и авторизация в общедоступном API

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

Ключ API и Oauth — это просто уникальный идентификатор

Идентификатор клиента: если ваше приложение использует протокол Oauth2, используйте идентификатор клиента Oauth. Oauth используется для создания токена доступа, который, в свою очередь, является уникальным идентификатором, однако пользователь должен дать свое согласие.

Ключи API: ключ API — это уникальный идентификатор, который вы генерируете с помощью console. преимущество заключается в том, что пользователю не требуется действие или согласие пользователя, но вы не можете использовать ключ API для авторизации, в отличие от OAuth2. используйте и ключ API, когда нужные вам данные общедоступны и не требуют аутентификации пользователя

API YouTube

из официальной документации Google:

API данных YouTube позволяет включать функции, обычно выполняемые на веб-сайте YouTube, в ваш собственный веб-сайт или приложение. В приведенных ниже списках указаны различные типы ресурсов, которые вы можете получить с помощью API. API также поддерживает методы для вставки, обновления или удаления многих из этих ресурсов.

для использования API YouTube нам нужно выбрать один из следующих вариантов:

1- вызовите API самостоятельно, используя определенный язык, поддерживающий HTTP, или используйте почтальона или браузер:

конечные точки API:

данные API YouTube V3:

https://www.googleapis.com/youtube/v3/

и вы можете добавить операции, которые вы хотите добавить, для того, что вы хотите, и ваш ключ API, например, если вы хотите получить результат поиска по ключевому слову nodejs:

https://www.googleapis.com/youtube/v3/search?apikey&type=video&part=snippet&q=nodejs

подробнее см. в документации: https://developers.google.com/youtube/v3/docs

Предложение по поиску на YouTube

suggestquries.google.com/complete/search/search?client=‹browserName›yt&q=‹keyword›

получить изображения видео:

https://i.ytimg.com/vi/‹идентификатор видео›/n.jpg

n находится в диапазоне от 0 до 3

n может принимать эти значения в этом массиве:

[по умолчанию, mq1, mq2, mq3.mqdefault, hq1, hq2, hq3, hqdefault]

API YouTube с клиентской библиотекой:

в этом случае мы вам NodeJs lib:

по этой причине Google предоставляет библиотеку под названием googleapis:

const {google} = require('googleapis');
const youTube = google.youtube({
version:"v3",
auth:process.env.API_KEY
})

и чтобы использовать эти API по-хорошему, мы можем сделать это

var express = require('express');
var router = express.Router();
var youTube = require('../youtube/index');
/* search API provide search on youtube via an API */
router.get('/videos/',async function(req, res, next) {
let searchQuery = req.query.search
let data =await youTube.search.list({
part:'snippet',
q: searchQuery,
type:"videos"
});
console.log(searchQuery);
console.log(data.data.items);
res.send(data.data.items)
});
router.get('/channelsbyid/:id',async function(req, res, next) {
let data =await youTube.channels.list({
part: 'snippet,contentDetails,statistics',
id:req.params.id
})
console.log(data.data.items);
res.statusCode = 200
res.send(data.data.items)
});
router.get('/channelsbyusernames/:username',async function(req, res, next) {
let data =await youTube.channels.list({
part: 'snippet,contentDetails,statistics',
forUsername: req.params.username
})
console.log(data.data.items);
res.statusCode = 200
res.send(data.data.items)
});
router.get('/activities/:id',async function(req, res, next) {
let data =await youTube.activities.list({
part: 'snippet',
channelId :req.params.id
}).catch((err) =>{
console.error(err)
})
console.log(data.data.items);
res.statusCode = 200
res.send(data.data.items)
});
module.exports = router;

для другой части API YouTube у нас есть

var express = require('express');
var router = express.Router();
var youtube = require('../youtube/index');
/* GET category of channels and videos
*/
router.get('/video/:id', async function(req, res, next) {
let videoId = req.params.id
let data = await youtube.videoCategories.list({
id:videoId,
part:'snippet'
})
console.log(data.data);
res.send(data.data)
});
router.get('/channel/:id', async function(req, res, next) {
let videoId = req.params.id
let data = await youtube.channelSections.list({
channelId:videoId,
part:'snippet'
})
console.log(data.data);
res.send(data.data)
});
module.exports = router;
var express = require('express');
var router = express.Router();
var youtube = require('../youtube/index');
/* GET category of channels and videos
*/
router.get('/video/:id', async function(req, res, next) {
let videoId = req.params.id
let data = await youtube.videoCategories.list({
id:videoId,
part:'snippet'
})var express = require('express');
var router = express.Router();
var youtube = require('../youtube/index');
/* GET category of channels and videos
*/
router.get('/video/:id', async function(req, res, next) {
let videoId = req.params.id
let data = await youtube.videoCategories.list({
id:videoId,
part:'snippet'
})
console.log(data.data);
res.send(data.data)
});
router.get('/channel/:id', async function(req, res, next) {
let videoId = req.params.id
let data = await youtube.channelSections.list({
channelId:videoId,
part:'snippet'
})
console.log(data.data);
res.send(data.data)
});
module.exports = router;
console.log(data.data);
res.send(data.data)
});
router.get('/channel/:id', async function(req, res, next) {
let videoId = req.params.id
let data = await youtube.channelSections.list({
channelId:videoId,
part:'snippet'
})
console.log(data.data);
res.send(data.data)
});
module.exports = router;

Спасибо за прочтение