En tant que grand fan du rock classique vivant en France, je suis très frustré par le manque de bonne radio rock classique que nous avons. J'ai passé quatre mois à St Louis, MO, et j'ai eu la chance d'écouter Kshe 95 chaque jour, en jouant certains de mes morceaux de rock classiques préférés. Malheureusement, je ne peux pas écouter cette radio en France car ils le bloquent. Heureusement, leur site Web montre la mélodie actuellement en jeu, ainsi que quelques précédents.
J'ai décidé de me faire une liste de lecture Spotify vide et d'ajouter automatiquement les pistes KSHE. Je voulais aussi pouvoir ajouter des chansons d'autres radio rock classiques similaires. J'ai donc construit une architecture réutilisable qui permet d'enregistrer différents gratteaux Web pour obtenir l'histoire du jeu radio et l'ajouter dans ma liste de lecture.
Jusqu'à présent, je suis en mesure d'obtenir les chansons de ces radios:
N'hésitez pas à me faire cingler si vous voulez aider!
Pour le faire fonctionner, voici quoi faire.
Tout d'abord, vous devrez configurer votre compte Spotify Developer et enregistrer une application. Trouvez comment ici. Une fois votre application créée, vous aurez accès aux Crendentials suivants:
client_idclient_secretredirect_uri Trouvez votre user_id (votre nom d'utilisateur Spotify) et ajoutez ces 4 informations d'identification dans un fichier appelé .spotify-token.json . Vous avez un modèle ici: .potify-Token.json.dist. L'application en aura besoin pour mettre à jour les pistes de votre liste de lecture.
Remarque: Dans cette application, l'URI de redirection doit être http://localhost:9999/auth/callback .
Une fois que vous êtes bon, installez les exigences dans un environnement virtuel:
pip install virtualenv # if you don't have it already
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt L'application utilise une base de données sqlite pour stocker toutes les chansons qu'il a téléchargées jusqu'à présent. Vous devez initialiser la base de données exécutant cette commande: make init-db .
Voici les étapes requises pour mettre à jour votre liste de lecture avec les dernières chansons de la radio KSHE:
make start-api . L'application devrait maintenant s'exécuterhttp://localhost:9999 .http://localhost:9999/authmake update-playlist pour obtenir les dernières chansons de votre playlist. Les appels pris en charge jusqu'à présent sont:
GET , localhost:9999/api : Vérifiez que l'API est en placeGET , localhost:9999/auth : authentifiez pendant 3600 secondesGET , localhost:9999/api/update_playlist : met à jour la playlist avecSi vous souhaitez ajouter un autre site Web pour remplir la playlist, vous pouvez écrire un nouveau scrapper dans le module Src.Scraping.
Veuillez suivre ces étapes pour le faire:
Créez une classe dont les noms se terminent par Scraper , par exemple: YourScrapper
(bien qu'il devrait être explicite quel site Web il rampe).
Faire hériter de cette classe à partir du Scraper
Appelez pour super() dans son constructeur et passez-le l'url de la page Web
Pour ramper et la playlist_id pour télécharger les chansons. Par exemple:
player_url = 'https://radio.com/awesome-song-history'
playlist_id = '3BCcE8T945z1MnfPWkFsfX'
super ( YourScrapper , self ). __init__ ( player_url , playlist_id ) Overide la méthode get_song_history , la première ligne doit être:
soup , driver = self . scrap_webpage ()Ajoutez votre grattoir dans le dossier des tests:
class TestYourScraper ( GenericScraperTest ):
scraper = scraping . YourScraper ()Ajoutez votre grattoir dans la classe src.playlist_updater.updater:
self . scrapers = [
scraping . KSHEScraper (),
scraping . EagleScraper (),
scraping . YourScraper () # New scraper!
]Vous êtes prêt!