в первый день моей новой работы в качестве младшего разработчика я взял на себя миссию понять API YouTube, и во время поиска в Интернете я нашел много
информация , но непонятная , поэтому я решил внести ясность , потому что ключом к росту является обмен знаниями .
прежде чем прыгнуть в мир YouTube, мы должны понять аутентификацию и авторизацию в мире общедоступных API.
Ключ API против идентификатора клиента (OAuth2): аутентификация и авторизация в общедоступном API
любой общедоступный API, который вы покупаете для него, нуждается в уникальном идентификаторе, чтобы связать его с вашим проектом для аутентификации для управления трафиком или расходами.
Ключ API и Oauth — это просто уникальный идентификатор
Идентификатор клиента: если ваше приложение использует протокол Oauth2, используйте идентификатор клиента Oauth. Oauth используется для создания токена доступа, который, в свою очередь, является уникальным идентификатором, однако пользователь должен дать свое согласие.
Ключи API: ключ API — это уникальный идентификатор, который вы генерируете с помощью console. преимущество заключается в том, что пользователю не требуется действие или согласие пользователя, но вы не можете использовать ключ API для авторизации, в отличие от OAuth2. используйте и ключ API, когда нужные вам данные общедоступны и не требуют аутентификации пользователя
API YouTube
из официальной документации Google:
для использования 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;
Спасибо за прочтение