無料歌詞探査機 Encke Pathfinder 1.030号機

1.030号機 2019-06-03
くり返し展開機能の追加
起動時にダミー通信で初期化処理を終わらせるように
スレッドプールの最小数を設定
定義ファイルのUriをSearchUriに変更
細かいバグの修正


https://onedrive.live.com/?id=A0E729BFAE3B4AE!107&cid=0A0E729BFAE3B4AE


くり返しの展開は、最初外部ファイル方式にする予定でした。けれど、最近はどこも展開した状態で掲載してる所ばかりです。J-Lyricやイベスタの古い曲にくり返しがあるのを発見したので、それに対応する形で内部に実装しました。
ダミー通信とスレッドプールの変更は、以前のバージョンでは初回の検索時に初期化処理で数秒かかっているのを軽減しています。それに伴いスレッド数のデフォルトを4から8に上げました。
定義ファイルの修正によって以前の定義ファイルはそのままでは使えません。もし自分で作成した定義ファイルが有るのなら修正して下さい。先のバージョンでXhrUriとかTokenUriが追加されるかも。

無料歌詞探査機 Encke Pathfinder 1.021号機

1.021号機 2019-05-31
曲ページで歌詞を取得できなかった時のマッチレベルの更新の修正
自動モード時、曲ページで歌詞を取得できなかった時、処理を続行できるように
自動で歌詞を保存する設定の時に、GUIから割り込めてしまうのを修正

 

https://onedrive.live.com/?id=A0E729BFAE3B4AE!107&cid=0A0E729BFAE3B4AE

 

曲ページだけ作って中の歌詞は無し、という事をするサイトがあるんですね。新曲で検索される事を期待してるんでしょうか。

このソフトではマッチレベルがEになるんですが、その曲を選択したままだと情報が更新されなかったので修正しました。

自動モード時はは、次の検索エンジンへ処理を続行できる様にしました。

候補検索時、[候補検索時マッチしたら候補検索を中断し歌詞を自動取得する]にしている場合は、内部処理の都合上続行することはできません。

 

歌詞検索エンジン定義ファイル作成方法:歌詞タイム Part 1

歌詞検索エンジン定義ファイルの作成方法の解説です。

最初は同梱のtxtに書こうと思ったんですが、相当な分量になりそうだったのでブログのエントリにすることにしました。

定義ファイルの作成には、多少のHTMLの知識とそれなりの正規表現の知識が必要になります。

google検索を使う歌詞タイムを扱うのはあまり適切では無い様な気もするんですが、 google検索なら色々な可能性があるのでそれもありかなと。

 

まず最初に、歌詞候補検索の流れについてです。

  1. Uriプレースホルダーにタイトルとアーティスト(とページ番号)を入れてHTMLを取得する
  2. HTMLから検索結果全体の入ったブロックをResult正規表現で取得する
  3. Resultから1曲分のブロックをSong正規表現で取得する
  4. Songからタイトルと曲ページへのUriをTitle正規表現で取得する
  5. SongからアーティストをArtist正規表現で取得する
  6. 見つかったタイトルとアーティストでマッチレベルを判定する
  7. 設定によって完全マッチしれてば歌詞取得へ、そうで無ければ3.に戻り次の曲へ
  8. ResultからSongが見つからなくなったらPager, NextPageの設定次第で次のページのUriを作成し2.へ戻る
  9. Resultを検出できなくなるか、最大読み込みページ数に達したら終了する

[ツール]から[ログ]を表示させて、 候補検索の[歌詞検索エンジン]を個別の物にして候補検索を行うと、動作ログが出力されるのでどんな感じなのか見てみるといいです。てか、作者自身も基本このログ見ながら作成しています。

 

それで、歌詞タイムの場合です。

歌詞タイムは自前の検索を持っておらずgoogleサイト検索を利用しています。検索ページのHTMLを取得するとgoogleへのscriptタグが張ってあるだけで、結果内容は取得できません。

でもgoogleサイト検索できると言うことは、全てのページがgoogleにインデックスされているという意味でもあるので、googleからsiteオプションで検索できる事になります。

 

googleをブラウザで開いて検索ワードに「new site:www.kasi-time.com」と入れれば、歌詞タイム内のnewを含むページを検索できます。そして、おもむろに2ページ目に行ってアドレスバーを見ます。

環境にもよるんでしょうが、へんてこな情報が付いているので削っていき、きちんと2ページ目が表示されるUriを探します。「https://www.google.com/search?q=new+site:www.kasi-time.com&start=10」これで2ページ目が表示されますね。

googleページャーを持ってますが、Uri内にページ番号では無くスタート番号を指定するタイプなので、PagerではなくNextPageを使います。というか、ページャーがあっても次のページが明確なタイプならNextPageの方がわかりやすいと思います。開発初期にはPagerしか実装してなかったので、現在の定義ファイルはPagerタイプの方が多いです。

話を戻して2ページ目のUriがわかれば定義ファイル内のUriが指定できます。

Uri=http://www.google.com/search?q=%Title%+%Artist%+site:www.kasi-time.com

google検索では歌詞検索エンジンの検索と違ってタイトルのみの指定とか無いので、一緒に検索してしまいましょう。このタイプを勝手に連結検索と呼んでます。

 

 検索結果が表示されたらページのソースを表示します。googleは問題ないですが、歌詞サイトでは右クリックを禁止している所が多いのでショートカットから、中にはさらにCtrlキーまで無効にしている所があるのでメニューから開きます。

話がちょっと前後しちゃうのですがUserAgentについて。

このままUserAgentを指定せずに定義ファイルを詰めていくと、何故か上手く取得できないという状態になります。それはgoogleがユーザーエージェントによって返信内容を変えてくるからです。UserAgentの指定無しの状態とUserAgentを指定しているブラウザのソースは違うので上手くいかない訳です。

ブラウザのアドオンでユーザーエージェントを偽装できるものがあるので活用しましょう。変更すると結構内容が変わってきます。Fire Foxを使うと、いい位置にコメントが挟んであってやりやすかったのですが仕様変更に弱そうなので、今回はIE10っぽい物を利用する事にします。

 

 長くなってきたので、次回に続く。

無料歌詞探査機 Encke Pathfinder 1.020号機

1.020号機 2019-05-29
UserAgent,TopPage機能の追加
歌詞タイムに限定的対応
生死判定と応答測定を選択実行できるように
細かいバグ修正

 

https://onedrive.live.com/?id=A0E729BFAE3B4AE!107&cid=0A0E729BFAE3B4AE

 

歌詞タイムに限定的ですが対応しました。

googleのサイトオプションを利用しています。

googleの仕様変更に恐ろしく弱いです。

タイトルとアーティストの境に目印が無いため最後の空白を区切りにしています。その為、アーティストに空白があると完全マッチしません(部分マッチにはなります)。

 

さらに細かい話は検索エンジン定義ファイルの作り方として、歌詞タイムを使って説明するエントリを2,3回行おうかなと思っています。

歌詞サイトの興亡

歴史は語る。幾星霜の刻の中、数多の歌詞サイトが誕まれゆくことを。

歴史は語る。その煌めきが永久の物では無く輝きを失っていくことを。

 

変なノリはここまでにして、Cassiniで取得した歌詞の@Distributerや、更新履歴なんかを見ると、昔は多くの歌詞サイトがあったんですよね。

Yahoo(Gyao)歌詞、goo歌詞、Listen Japan、その他小さい所、結構な数がありました。

けど今生きてるのはそんなにはありません。消えたサイトの情報は他に受け継がれた所もあるでしょうが、今となっては取得不能になってしまった歌詞というのも多く存在すると思うんですよ。

ネット上の情報が何時までも残っているというのは間違いなく幻想です。手に入れられるときに手に入れておく。このソフトを作った動機の一つです。(あとBot対策されたら既存のサイトでも手に入らなくなるし…)

 

そういう意味では現存するサイトでは歌詞ナビと歌詞タイムが怪しそう… 歌詞タイムは現在対応してないんですが、制約付きだけど対応できる目処が立ったので近いうちにアップデートを公開します。

ブログを立ち上げた理由

結局の所、Encke Pathfinderのキモは歌詞検索エンジン定義ファイルを編集することで、エンジンの仕様変更に対応できるという点なんですよね。

そして、こんなソフトを作っておきながら、そんなに頻繁に歌詞検索をしてないんですよ。デバッグがてらに手持ちの音楽ファイルの歌詞を大方取得してしまったし。

そうなると、エンジンの仕様変更があったことに気付けないわけでして。余裕あれば対応したいとは思ってます。

そんな際に、仕様変更があった事を連絡する先としてブログがあればいいかなーと。ホームページでやればって昔は持ってたんですが、管理が面倒で閉じてしまいました。ブログならその辺もう少し楽かなと思いまして。

もっとも、このソフトはfoobar2000の各種Lyrics Panel用ソースを収集するのが一番の使い道となるので、そんなにユーザーがいるかは分かりませんが…

もちろん、仕様変更に対してこうしたら対応できたよ!ってコメントや、さらには新しい歌詞検索エンジン定義ファイルを作りました!なんてのも超大歓迎です。

 

無料歌詞探査機 Encke Pathfinder 1.010号機

1.010号機 2019-05-22
googleで検索機能の追加
歌詞ナビの変更に対応
タブオーダーの調整
通信エラー時のログ調整

https://onedrive.live.com/?id=A0E729BFAE3B4AE!107&cid=0A0E729BFAE3B4AE

 

googleで検索は結構便利だと思います。

正直、曲名の違いは見ただけじゃ分かりませんからね。google先生に聞けばバッチリです。先生のさりげなさが光ります。

 

通信エラー時のログ調整で、サーバーが200 OK以外を返してきたときログに残す様にしました。

そしたら、歌ネットで検索結果が見つからなかった事に対して404 Not Foundを返す事がある(ページ自体はちゃんとした物が送られてくる)ので、ログが出力されまくる事態に。

けどまあ、他のサーバーで本当にエラーが出てる事があるかもですから、ログがうざいのは仕様ということにします。

ただ、事があるというのがよくわからんです。毎回って訳じゃないのは何が違うんだろう。