Created
September 8, 2021 03:16
-
-
Save danielfnz/0aad52b785de29e27ba51d8163ccf974 to your computer and use it in GitHub Desktop.
Criação de API de recomendação de videos, textos e imagens pelo termo informado
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//=======================================USO API DO YOUTUBE==================================== | |
//Parametros esperados; | |
- termo | |
- tipo | |
// URL DA API PARA BUSCAR VIDEOS DE ACORDO COM OS PARAMETROS PASSADOS | |
var youtubeURL = `https://youtube.googleapis.com/youtube/v3/search?key=${youtubeKey}&maxResults=5&type=video®ionCode=BR&videoCategoryId=27&videoDuration=medium&q=conceito ${termo}`; | |
//A API BUSCA NO YOUTUBE SOMENTE PARA RECOMENDAR Conhecimento | |
if (request.query.tipo == "Conhecimento") { | |
//REALIZA REQUISIÇÃO HTTPS | |
const requestThree = axios.get(youtubeURL); | |
//AGUARDA A RESPOSTA DA REQUISIÇÃO | |
await requestThree.then(async youtubeResponse => { | |
// VERIFICA SE RETORNOU PELO MENOS 1 VIDEO | |
if (youtubeResponse.data && youtubeResponse.data['items'].length > 0) { | |
// PERCORRE CADA VIDEO | |
youtubeResponse.data['items'].forEach(video => { | |
//ADICIONA NO ARRAY DE OBJETOS RECOMENDADOS O LINK PARA O VIDEO DO YOUTUBE | |
objetosRecomendados.push({ | |
conteudo: "https://www.youtube.com/watch?v=" + video.id.videoId, | |
data: new Date(), | |
tipo: 'video' | |
}); | |
}); | |
} | |
}); | |
} | |
//================================================================================================ | |
//=======================================USO API DA WIKIPEDIA===================================== | |
//Parametros esperados; | |
- termo | |
- tipo | |
// URL DA API PARA BUSCAR TEXTOS DE ACORDO COM OS PARAMETROS PASSADOS | |
let wikipediaTextURL = `https://pt.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&redirects=1&titles=${termo}`; | |
// URL DA API PARA BUSCAR IMAGENS DE ACORDO COM OS PARAMETROS PASSADOS | |
let wikipediaImageURL = `https://pt.wikipedia.org/w/api.php?action=query&prop=pageimages&format=json&piprop=original&titles=${termo}`; | |
//REALIZA REQUISIÇÃO HTTPS | |
const requestOne = axios.get(wikipediaTextURL); | |
const requestTwo = axios.get(wikipediaImageURL); | |
//AGUARDA A RESPOSTA DA REQUISIÇÃO PARA BUSCA DE TEXTOS DA WIKIPEDIA | |
await requestOne.then(async wikipediaTextResponse => { | |
// VERIFICA SE A REQUISIÇÃO RETORNOU ALGO | |
if (wikipediaTextResponse.data) { | |
// VERIFICA SE A REQUISIÇÃO RETORNOU ALGUMA PAGINA | |
if (wikipediaTextResponse.data.query.pages) { | |
// PERCORRE TODAS AS PAGINAS PARA BUSCAR PELO TERMO "EXTRACT", QUE SERIA O TEXTO DA PAGINA EXTRAIDO | |
Object.keys(wikipediaTextResponse.data.query.pages).forEach(function (key) { | |
// SE TIVER O TERMO "EXTRACT", ENTRA E CAPTURA SOMENTE O PRIMEIRO PARAGRAGRAFO | |
if (wikipediaTextResponse.data.query.pages[key]['extract']) { | |
var contents = wikipediaTextResponse.data.query.pages[key]['extract'].split('\n\n\n'); | |
if (contents[0]) { | |
var firstContent = contents[0]; | |
// CAPTURA O TEXTO DO PRIMEIRO PARAGRAFO | |
if (firstContent.split('.')[0]) { | |
var firstParagraph = firstContent.split('</p>')[0].replace(/<[^>]+>/g, ''); | |
//ADICIONA NO ARRAY DE OBJETOS RECOMENDADOS O CONTEUDO DO PRIMEIRO PARAGRAFO | |
objetosRecomendados.push({ | |
conteudo: firstParagraph, | |
data: new Date(), | |
tipo: 'texto' | |
}); | |
} | |
} | |
} | |
}); | |
} | |
} | |
}) | |
//AGUARDA A RESPOSTA DA REQUISIÇÃO PARA BUSCA DE IMAGENS DA WIKIPEDIA | |
await requestTwo.then(async wikipediaImageResponse => { | |
// VERIFICA SE A REQUISIÇÃO RETORNOU ALGO | |
if (wikipediaImageResponse.data) { | |
// VERIFICA SE A REQUISIÇÃO RETORNOU ALGUMA PAGINA | |
if (wikipediaImageResponse.data.query.pages) { | |
// PERCORRE TODAS AS PAGINAS PARA BUSCAR PELO TERMO "ORIGINAL", QUE SERIA O URL ORIGINAL DA PAGINA | |
Object.keys(wikipediaImageResponse.data.query.pages).forEach(function (key) { | |
// SE TIVER O TERMO "original", ENTRA E ADICIONA A IMAGEM NO ARRAY DE RESPOSTA | |
if (wikipediaImageResponse.data.query.pages[key]['original']) { | |
//ADICIONA NO ARRAY DE OBJETOS RECOMENDADOS A URL ENCONTRADA | |
objetosRecomendados.push({ | |
conteudo: wikipediaImageResponse.data.query.pages[key]['original']['source'], | |
data: new Date(), | |
tipo: 'imagem' | |
}); | |
} | |
}); | |
} | |
} | |
}); | |
//================================================================================================ | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment