Als großer Fan von klassischem Rock, das in Frankreich lebt, bin ich sehr frustriert über den Mangel an gutem klassischem Rockradio, das wir haben. Ich verbrachte vier Monate in St. Louis, MO, und hatte die Gelegenheit, jeden Tag KSHE 95 zuzuhören und einige meiner bevorzugten klassischen Rock -Melodien zu spielen. Leider kann ich dieses Radio in Frankreich nicht hören, wenn sie es blockieren. Glücklicherweise zeigt ihre Website die derzeit gespielte Melodie sowie einige frühere.
Ich beschloss, mich zu einer leeren Spotify -Wiedergabeliste zu machen und automatisch die KSHE -Tracks hinzuzufügen. Ich wollte auch in der Lage sein, Songs aus anderen ähnlichen klassischen Rockradio hinzuzufügen. Also habe ich eine wiederverwendbare Architektur erstellt, mit der verschiedene Web -Scrapers registriert werden können, damit das Radio -Spielverlauf in meine Wiedergabeliste hinzufügt.
Bisher kann ich die Songs aus diesen Radios erhalten:
Fühlen Sie sich frei, mich zu pingen, wenn Sie helfen möchten!
Damit es funktioniert, was zu tun ist.
Zunächst müssen Sie Ihr Spotify -Entwicklerkonto einrichten und eine App registrieren. Finden Sie hier, wie hier. Sobald Ihre App erstellt wurde, haben Sie Zugriff auf die folgenden Crendentials:
client_idclient_secretredirect_uri Suchen Sie user_id (Ihr Spotify-Benutzername) und fügen Sie diese 4 Anmeldeinformationen in einer Datei mit dem Namen .spotify-token.json hinzu. Sie haben hier eine Vorlage: .Spotify-token.json.dist. Die App benötigt diese, um Tracks auf Ihre Wiedergabeliste zu aktualisieren.
HINWEIS: In dieser Anwendung muss der Umleitungs -URI http://localhost:9999/auth/callback sein.
Sobald Sie gut sind, installieren Sie die Anforderungen in einer virtuellen Umgebung:
pip install virtualenv # if you don't have it already
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt Die App verwendet eine sqlite -Datenbank, um alle bisher heruntergeladenen Songs zu speichern. Sie müssen die Datenbank initialisieren, die diesen Befehl ausführt: make init-db .
Hier sind die erforderlichen Schritte, um Ihre Wiedergabeliste mit den neuesten Songs aus dem KSHE -Radio zu aktualisieren:
make start-api . Die App sollte jetzt ausgeführt werdenhttp://localhost:9999 .http://localhost:9999/authmake update-playlist , um die neuesten Songs in Ihrer Wiedergabeliste zu erhalten. Die bisher unterstützten Anrufe sind:
GET , localhost:9999/api : Überprüfen Sie, ob die API hoch istGET , localhost:9999/auth : authenticate für 3600 SekundenGET , localhost:9999/api/update_playlist : Aktualisiert die Wiedergabeliste mitWenn Sie eine andere Website hinzufügen möchten, um die Wiedergabeliste zu füllen, können Sie im SRC.Scraping -Modul einen neuen Scrapper schreiben.
Bitte befolgen Sie diese Schritte, um dies zu tun:
Erstellen Sie eine Klasse, deren Namen mit Scraper enden, z. B. YourScrapper
(Obwohl es explizit sein sollte, welche Website es kriecht).
Lassen Sie diese Klasse vom Scraper erben
Rufen Sie super() in seinem Konstruktor an und geben Sie ihm die URL der Webseite weiter
zu kriechen und die playlist_id , um die Songs hochzuladen. z.B:
player_url = 'https://radio.com/awesome-song-history'
playlist_id = '3BCcE8T945z1MnfPWkFsfX'
super ( YourScrapper , self ). __init__ ( player_url , playlist_id ) Über aus der Methode get_song_history sollte die erste Zeile sein:
soup , driver = self . scrap_webpage ()Fügen Sie Ihren Schaber im Ordner Tests hinzu:
class TestYourScraper ( GenericScraperTest ):
scraper = scraping . YourScraper ()Fügen Sie Ihren Schaber in die Klasse src.playlist_updater.updater hinzu:
self . scrapers = [
scraping . KSHEScraper (),
scraping . EagleScraper (),
scraping . YourScraper () # New scraper!
]Sie sind alle gesetzt!