Como un gran fanático del rock clásico que vive en Francia, estoy muy frustrado por la falta de una buena radio clásica de rock que tenemos. Pasé cuatro meses en St Louis, MO, y tuve la oportunidad de escuchar a Kshe 95 todos los días, tocando algunas de mis canciones de rock clásicas favoritas. Desafortunadamente, no puedo escuchar esta radio en Francia mientras la bloquean. Afortunadamente, su sitio web muestra la melodía que actualmente se reproduce, así como algunas anteriores.
Decidí convertirme en una lista de reproducción de Spotify vacía y agregar automáticamente las pistas de Kshe. También quería poder agregar canciones de otra radio de rock clásica similar. Así que construí una arquitectura reutilizable que permite registrar diferentes raspadores web para obtener la radio reproduciendo el historial y agregarla a mi lista de reproducción.
Hasta ahora, puedo obtener las canciones de estas radios:
¡No dudes en hacerle ping si quieres ayudar!
Para que funcione, esto es lo que debe hacer.
Primero, deberá configurar su cuenta de desarrollador de Spotify y registrar una aplicación. Encuentra cómo aquí. Una vez que se cree su aplicación, tendrá acceso a las siguientes crendenciales:
client_idclient_secretredirect_uri Encuentre user_id (su nombre de usuario Spotify) y agregue estas 4 credenciales en un archivo llamado .spotify-token.json . Tienes una plantilla aquí: .spotify-token.json.dist. La aplicación necesitará aquellos para actualizar pistas a su lista de reproducción.
Nota: En esta aplicación, el URI de redirección debe ser http://localhost:9999/auth/callback .
Una vez que sea bueno, instale los requisitos en un entorno virtual:
pip install virtualenv # if you don't have it already
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt La aplicación utiliza una base de datos sqlite para almacenar todas las canciones que ha descargado hasta ahora. Debe inicializar la base de datos que ejecuta este comando: make init-db .
Estos son los pasos requeridos para actualizar su lista de reproducción con las últimas canciones de Kshe Radio:
make start-api . La aplicación ahora debería estar ejecutándosehttp://localhost:9999 .http://localhost:9999/authmake update-playlist para obtener las últimas canciones en su lista de reproducción. Las llamadas admitidas hasta ahora son:
GET , localhost:9999/api : verifique que la API esté arribaGET , localhost:9999/auth : Authenticate durante 3600 segundosGET , localhost:9999/api/update_playlist : actualiza la lista de reproducción conSi desea agregar otro sitio web para completar la lista de reproducción, puede escribir un nuevo scraperper en el módulo SRC.Scraping.
Siga estos pasos para hacerlo:
Crea una clase cuyos nombres terminan con Scraper , EG: YourScrapper
(Aunque debe ser explícito qué sitio web se arrastra).
Haga que esa clase herede de Scraper
Llame a super() en su constructor y pase la URL de la página web
rastrear y la playlist_id para subir las canciones. p.ej:
player_url = 'https://radio.com/awesome-song-history'
playlist_id = '3BCcE8T945z1MnfPWkFsfX'
super ( YourScrapper , self ). __init__ ( player_url , playlist_id ) Overide el método get_song_history , la primera fila debería ser:
soup , driver = self . scrap_webpage ()Agregue su raspador en la carpeta de pruebas:
class TestYourScraper ( GenericScraperTest ):
scraper = scraping . YourScraper ()Agregue su raspador en la clase src.playlist_updater.updater:
self . scrapers = [
scraping . KSHEScraper (),
scraping . EagleScraper (),
scraping . YourScraper () # New scraper!
]¡Estás listo!