成果物

作成したもの

新曲通知bot

 

作成期間

平日2時間程度を1週間ちょっと

詳細

JASRACが公開している、楽曲検索より好きな作曲家が新曲を出したときにslack通知してくれるbot

 

使用言語

python

 

どのように実現したか

seleniumを使用しスクレイピングで実現。

最初はBeutiful soupを使用しようとしたが、1ページ内にすべての楽曲が表示されず、データを一括取得できなかったため、seleniumに変更した。

楽曲数300以上に対して、最大100件までしか表示できない

実際の動き

JASRACKの検索ページから、目的の作曲家の名前を検索させる。

前回値と比較し、検索結果が多かった場合、「並び替え」より【作品コード順】に変更し、最終ページの最後に表示された楽曲を取得する。

 

①1曲のみ追加の場合

最終行の【作品タイトル】【アーティスト名】をslackに投稿

 

②2曲以上追加の場合

前回取得した行の次の行から順に【作品タイトル】【アーティスト名】をslackに投稿

 

③2曲以上追加かつ、ページが前回取得から変わっていた場合

先頭曲を前回取得時と比較し、異なっていた場合はひとつ前のページに戻り、前回取得した行の次の行から順に【作品タイトル】【アーティスト名】をslackに投稿

 

動画は、③のパターン

 

youtu.be

 

問題点

・作品コード順で並び替えると、最新のものが最後に表示されると思っていたが、そうではなかった

 → 作り終わりに気づいたので、とりあえず当初の予定通り作成。

   代替案も考えたが、JASRACKのページ内には日付等の新旧が比較できるような情報がないため、曲名を保存し、コード実行時に前回値と比較するなどか思いつかなった。

 

・なぜか前回取得した行が6行以上になると、エラーになる。

 → 前回取得した楽曲が5行目までは問題なく動くが、6行目以降になるとなぜかエラーが発生する。seleniumのgoogleDriverが原因のようなエラーが出ているが、具体的な原因がわからず、修正ができていない。

 

スクレイピングに向いていないサイトだった

 →楽曲情報を一括で取得する方法がなく、seleniumで無理やり動かすほかなかった。  

  今後、もしスクレイピングをしたいと思った場合は、情報を一括取得できるようなサイトを利用するとよいと思った。