Integração com a API do Genius para capturar as top 10 músicas mais tocadas de algum artista. Feito com Flask, Redis e DynamoDB.
- Python 3+
- Redis Server 3.0
- DynamoDB Server (ou instância rodando na AWS)
- Conta no Genius API
Linux e Windows
• Renomeie o arquivo ".env.example" para ".env" e configure o mesmo na pasta raíz do projeto, substituindo as seguintes informações:
FLASK_ENV=production
DEBUG=False
GENIUS_ACCESS_TOKEN=** GENIUS API ACCES TOKEN **
REDIS_HOST=** REDIS HOST ADDRESS **
REDIS_PORT=** REDIS PORT NUMBER **
REDIS_DAYS_EXPIRE=7
AWS_ACCESS_KEY_ID=** AWS ACCESS KEY **
AWS_SECRET_ACCESS_KEY=** AWS SECRET ACCESS KEY **
• Após configurar o arquivo ".env", você precisará instalar os requisitos do projeto com o seguinte comando:
pip install -r requirements.txt
• Pronto! Configurado. Se tudo deu certo nos passos anteriores, agora você só precisa abrir o "Command Prompt" ou "bash" e rodar o seguinte comando na pasta:
flask run
ou simplesmente:
python -m app.py
- Você precisa fazer uma requisição com o método "GET" para a url a seguir:
http://127.0.0.1:5000/api/v1/get_artist_top_songs/NOME_DO_ARTISTA
(substitua NOME_DO_ARTISTA pelo nome do seu artista favorito)
- Se sua requisição funcionou corretamente, você receberá o seguinte retorno (exemplo):
{
"artist_name": "David Guetta",
"message": "Foram encontrados as top 10 musicas deste artista!",
"search_term": "David Guetta",
"songs_list": [
"2U by David Guetta (Ft. Justin Bieber)",
"One Last Time by Ariana Grande",
"Lovesick Girls by BLACKPINK",
"So Far Away by Martin Garrix & David Guetta (Ft. Jamie Scott & Romy Dya)","Titanium by David Guetta (Ft. Sia)",
"Hey Mama by David Guetta (Ft. Afrojack, Bebe Rexha & Nicki Minaj)",
"Goodbye by Jason Derulo & David Guetta (Ft. Nicki Minaj & Willy William)",
"Say My Name by David Guetta, Bebe Rexha & J Balvin",
"I Gotta Feeling by Black Eyed Peas",
"Flames by David Guetta & Sia"
],
"status": "success"
}
- Caso contrário, você receberá uma mensagem similar a esta com o campo "status" marcado como "error", exemplo:
{
"artist_name": null,
"message": "O nome pesquisado e invalido! [minimo 3, maximo 30 caracteres]",
"search_term": "dv",
"songs_list": [
],
"status": "error"
}
~ opcionalmente: você pode adicionar no parâmetro da URL a seguinte flag ?cache=False
, assim evitará de trazer dados em cache ~