Como um grande fã do rock clássico que vive na França, estou muito frustrado com a falta de um bom rádio de rock clássico que temos. Passei quatro meses em St. Louis, MO, e tive a chance de ouvir o KSHE 95 todos os dias, tocando algumas das minhas músicas de rock clássicas favoritas. Infelizmente, não consigo ouvir este rádio na França enquanto eles o bloqueiam. Felizmente, o site deles mostra que a música está tocando atualmente, além de alguns anteriores.
Decidi fazer uma lista de reprodução vazia do Spotify e adicionar automaticamente as faixas do KSHE. Eu também queria poder adicionar músicas de outra rádio rock clássica semelhante. Então, eu construí uma arquitetura reutilizável que permite registrar diferentes raspadores da Web para obter o histórico de reprodução de rádio e adicioná -lo à minha lista de reprodução.
Até agora, sou capaz de obter as músicas desses rádios:
Sinta -se à vontade para me pingar se quiser ajudar!
Para fazer funcionar, eis o que fazer.
Primeiro, você precisará configurar sua conta do Spotify Developer e registrar um aplicativo. Encontre como aqui. Depois que seu aplicativo for criado, você terá acesso aos seguintes Crendentnciais:
client_idclient_secretredirect_uri Encontre você user_id (seu nome de usuário do Spotify) e adicione essas 4 credenciais em um arquivo chamado .spotify-token.json . Você tem um modelo aqui: .spotify-token.json.dist. O aplicativo precisará daqueles para atualizar as faixas para sua lista de reprodução.
NOTA: Neste aplicativo, o URI de redirecionamento deve ser http://localhost:9999/auth/callback .
Quando estiver bom, instale os requisitos em um ambiente virtual:
pip install virtualenv # if you don't have it already
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt O aplicativo usa um banco de dados sqlite para armazenar todas as músicas que baixou até agora. Você precisa inicializar o banco de dados executando este comando: make init-db .
Aqui estão as etapas necessárias para atualizar sua lista de reprodução com as músicas mais recentes do Rádio KSHE:
make start-api . O aplicativo agora deve estar em execuçãohttp://localhost:9999 .http://localhost:9999/authmake update-playlist para obter as músicas mais recentes da sua lista de reprodução. As chamadas suportadas até agora são:
GET , localhost:9999/api : verifique se a API está em altaGET , localhost:9999/auth : autentique por 3600 segundosGET , localhost:9999/api/update_playlist : atualiza a lista de reprodução comSe você deseja adicionar outro site para preencher a lista de reprodução, pode escrever um novo raspador no módulo SRC.Scraping.
Siga estas etapas para fazer isso:
Crie uma classe cujos nomes terminem com Scraper , por exemplo: YourScrapper
(embora deva ser explícito em qual site ele rasteja).
Fazer essa classe herdar do Scraper
Chame para super() em seu construtor e passe o URL da página da web
Para rastejar e o playlist_id para fazer upload das músicas. por exemplo:
player_url = 'https://radio.com/awesome-song-history'
playlist_id = '3BCcE8T945z1MnfPWkFsfX'
super ( YourScrapper , self ). __init__ ( player_url , playlist_id ) Exceto o método get_song_history , a primeira linha deve ser:
soup , driver = self . scrap_webpage ()Adicione seu raspador na pasta de testes:
class TestYourScraper ( GenericScraperTest ):
scraper = scraping . YourScraper ()Adicione seu raspador na classe src.playlist_updater.updater:
self . scrapers = [
scraping . KSHEScraper (),
scraping . EagleScraper (),
scraping . YourScraper () # New scraper!
]Você está pronto!