フランスに住むクラシックロックの大ファンとして、私は私たちが持っている良いクラシックロックラジオの欠如に非常にイライラしています。私はミズーリ州セントルイスで4か月を過ごしました。私は毎日KSHE 95を聴く機会があり、私のお気に入りのクラシックロックの曲を演奏しました。残念ながら、フランスでこのラジオをブロックすると聴くことはできません。幸いなことに、彼らのウェブサイトは、現在プレイしている曲と以前のいくつかのウェブサイトを示しています。
私は自分自身を空のSpotifyプレイリストにすることにし、KSHEトラックを自動的に追加することにしました。また、他の同様のクラシックロックラジオから曲を追加できるようにしたかったのです。そこで、私はさまざまなWebスクレーパーを登録してラジオの再生履歴を取得し、それをプレイリストに追加できるようにする再利用可能なアーキテクチャを構築しました。
これまでのところ、これらのラジオから曲を入手することができます。
あなたが助けたいならば、お気軽に私を悩ませてください!
それを機能させるために、ここに何をすべきかがあります。
まず、Spotify開発者アカウントをセットアップし、アプリを登録する必要があります。ここでどのように見つけてください。アプリが作成されると、次のクレンディングにアクセスできます。
client_idclient_secretredirect_uri user_id (Spotifyユーザー名)を見つけて、 .spotify-token.jsonというファイルにこれらの4つの資格情報を追加します。ここにテンプレートがあります:.spotify-Token.json.dist。アプリは、プレイリストにトラックを更新するためにそれらが必要です。
注:このアプリケーションでは、リダイレクトURIはhttp://localhost:9999/auth/callbackでなければなりません。
良くなったら、仮想環境に要件をインストールします。
pip install virtualenv # if you don't have it already
virtualenv venv
source venv/bin/activate
pip install -r requirements.txtこのアプリは、 sqliteデータベースを使用して、これまでにダウンロードしたすべての曲を保存します。このコマンドを実行しているデータベースを初期化する必要があります: make init-db 。
KSHEラジオの最新曲でプレイリストを更新するための必要な手順を以下に示します。
make start-api 。アプリが実行されているはずですhttp://localhost:9999 。http://localhost:9999/authにアクセスしますmake update-playlist作成して、プレイリストに最新の曲を取得します。 これまでにサポートされている呼び出しは次のとおりです。
GET 、 localhost:9999/api :APIがアップしていることを確認しますGET 、 localhost:9999/auth :3600秒間認証しますGET 、 localhost:9999/api/update_playlist :プレイリストを更新しますプレイリストを入力するために別のWebサイトを追加する場合は、SRC.Scrapingモジュールに新しいスクラッパーを書くことができます。
これを行うには、次の手順に従ってください。
名前がScraperで終わるクラスを作成します、例: YourScrapper
(ただし、どのWebサイトがクロールするかを明示的にする必要があります)。
Scraperからそのクラスを継承します
コンストラクターでsuper()を呼び出し、ウェブページのURLを渡す
クロールとplaylist_idに曲をアップロードします。例えば:
player_url = 'https://radio.com/awesome-song-history'
playlist_id = '3BCcE8T945z1MnfPWkFsfX'
super ( YourScrapper , self ). __init__ ( player_url , playlist_id ) get_song_historyメソッドを超えると、最初の行は次のとおりです。
soup , driver = self . scrap_webpage ()テストフォルダーにスクレーパーを追加します。
class TestYourScraper ( GenericScraperTest ):
scraper = scraping . YourScraper ()src.playlist_updater.updaterクラスにスクレーパーを追加します。
self . scrapers = [
scraping . KSHEScraper (),
scraping . EagleScraper (),
scraping . YourScraper () # New scraper!
]あなたはすべて設定されています!