屑籠というかゴミ箱

主に家のサーバーの遍歴と使った製品のレビュー

VGMdbとMusicBrainzの連携

VGMdbとMusicBrainzへの連携スクリプト

MusicBrainz、手で入力するには結構大変なので他のデータソースからインポートを補助するユーザースクリプトが色々出ています。
wiki.musicbrainz.org
github.com


その中でVGMdbから情報を転載することが多かったのでImport VGMdb releases to MusicBrainzをこれまで利用していました。
このスクリプトを利用すると、VGMdbのアルバムページの右上にMusicBrainzへのインポート用ボタンが出てきて、これを押すとVGMdbの登録内容がMusicBrainzの入力に反映された状態で登録を進めることができます。

Import VGMdb releases to MusicBrainzの表示

これを利用することでサウンドトラック等の曲数が多いCDのデータの転載を簡単にしていました。
他にいいやり方あれば教えてほしいです…

本題:使えなくなった

このユーザースクリプトが2022/10/21時点で使用できなくなりました
その数日前もボタンが表示されなくておかしいけどちょっとまってみるか、位の感じでしたが数日間表示されなくなったので調査を開始。

原因:VGMdb.infoのホストが落ちている?

スクリプトの動作を調べるために初めてwebのjavascriptの動作確認しましたがChromeデベロッパーツール便利ですね
ブレイクポイント指定して実行したり変数の値見れたり
普通のコード追いかけるとの変わらない感じでした

そんな感じで調べたところJSONをパースするところで例外が発生している
じゃあもとのJSON見るとJSONファイルじゃなくてHTML突っ込んでる
なぜHTML突っ込んでいるか中身見ると、エラー522返ってて、エラーをパーサーに突っ込んでいたのでエラーになって止まっていた形

では、なぜエラーが返ってきているのか?と思って調べてみると、vgmdb.infoというドメインJSONを要求しているんだけど、ここがvgmdb.netの非公式APIサイトと言う形になっていて何らかの事情でサーバー落ちている模様。

代替案

数日待って使えるようになったら良いんですが、連携していない非公式のサーバということなので確実に復活するかは怪しげ
ということで、代替案としてこのサイト構築しているソースはOSSとしてGitHubに公開されているのでこれを利用して自分だけが使えるAPIサーバを建てることにして、そちらをユーザースクリプトから参照させるようにする

サーバ建設

公開されているソースを見るとdocker-composeファイルも用意されているので少しいじれば行けそうだったので、vgmdb.infoが帰ってこなかったときに向けて自宅の環境使って実行できるかテスト実施

結果としては問題なく動作している

実施したこととして

  • docker-composeファイルを環境に合わせて修正
  • iptablesの設定でDOCKER-USERにステートフルインスペクション設定を追加(外と通信するものなかったので基本的に全部遮断してた)

くらいで、ユーザースクリプトのapiUrlのアドレス置換を建てたAPIサーバに変更して完了

問題なく動作していそうなので、返ってこなかったらこのままにするか様子見て自宅のサーバで厳しそうならラズバイ買ってくるか、AWSに持っていって動かすかな

追記

GitHubのISSUE立ってた
github.com