リプ会主専用ダウンローダ ~KARTE
リプ会主専用ダウンローダ ~KARTE
カルテちゃそ~
リプ会ってな~に
リプ会というのはゆ~みやさん主催のリプレイ大会のことである。 視聴者が各自リプレイを持ち寄って流す配信で、えるろだのユースケースでもある。 自分のプレイをみんなに見せられる場ということもあり、これをモチベに東方を頑張っている人もいるようだ。1
リプ会主忙しすぎ問題
リプ会主はやることが多い。毎週日曜14時が開催(不定休)なのだが、視聴者は配信開始あとにリプレイをアップローダに上げることがザラである。その結果リプ会主は配信中に以下のタスクを行うことになる
- 順番決め
- 視聴者のリプレイをブクマ等からURL叩いてページに到達後ダウンロード
- ダウンロードしてきたリプレイを対象ゲームのリプレイフォルダに突っ込む
- ダウンロードしたリプレイが黄昏酒場or風神録の場合、
udXXXX形式のリプレイがゲームから認識されないのでリネーム処理を行う - 配信タイトルに書く用の
視聴者名ゲーム名コメント内容をまとめた文字列を作成 - ゲームを起動
- 視聴者のプレイ内容を見ながらトーク力で配信者の役目を果たす
- 2.に戻る
このようにタスクが山ほどある。この結果 7. の最中に 2. ~ 5. の処理を事前に行うことがあり、視聴者のプレイをあまり見られないことがあり、技術でなんとかカバーしたいと常々思っていた。
KARTEをつくった
これに対応するためにKarte2を作った。
KARTEは Keep And Record Touhou Experience の略で、リプ会主側で動くえるろだのリプレイを自動ダウンローダするクライアントである。3
JSON5形式で設定ファイルを記述すると定期的にえるろだのバックエンドAPIを叩き、新規リプレイがあれば自動でリプレイをダウンロードするというものだ。
ここがすごいぞカルテちゃん!
リプレイダウンロード
ゲーム毎にどのフォルダにリプレイをダウンロードしておくか予め設定しておくことでリプレイファイルのフォルダ移動という煩わしい工数を削減。
リネーム
黄昏酒場や風神録は [alco | th10]_[01-25].rpy へ自動的にリネーム。リネーム先が埋まっていた場合は udXXXX.rpy 形式でそのまま保存する例外処理を実装してある。
メタデータコピペ
また、リプレイのメタデータも同時にダウンロードしてきているのでテキストファイルに自動的に記載。リプ会主はVSCode等のファイル内容を常時監視しているエディタで開いていることで文字列を作成せずともVSCodeからコピペすればよいだけになる。
タグ付けに対応
えるろだにはタグ付けという機能がある。例えばリプ会に上がるリプレイ全てに リプ会用 というタグがついている場合、そのタグがついているリプレイのみをダウンロードしてくるようになっている。これによりリプ会主は余計なリプレイをダウンロードすることなくリプ会に関係あるリプレイのみをダウンロードすることができる。
まぁ正直そこまですごいってわけではないんすけど
正直タグ付けの機能以外そこまですごいものではない。
何故ならWebスクレイピングの技術を使えば けーろだ のようなHTMLを直で読まなきゃ成立しないようなウェブでも今回のようなクライアントは作成できる。
今回のKARTEとえるろだの何がすごいかというと、APIの整理を行ったことだ。
けーろだ を使用する際のWebスクレイピングはプログラムが直接HTMLをパースしなければならず少々手間がかかる。しかしえるろだはバックエンドが返してくるデータがJSON形式の扱いやすいデータのためプログラム目線では手軽に扱える。
このAPIをしっかり整理したことによってこのリプ会主PC上で動くクライアントを作成しやすくし、それに順応したというのが今回の一番の功績と言えるだろう。
まとめ
えるろだの作成モチベの一つに『もっと自分のリプレイを見てもらうために、リプ会主側PCで動く自動ダウンローダを作成したい。そのためにアップローダ側のバックエンドAPIを整理したい』というのがあった。ようやくそれらしく動いてきているようなのでよかった限りである。
ただしワンラインで動く雑なものということでpythonで動くCUIアプリであるというのが少しいただけない。設定もファイルをいじらなければいけないのでPC慣れしていないと少しだるい。
今後の展望としては静的型付け言語で書き直してGUIアプリにすることだが、まぁこのアプリのユースケースに相当するユーザは少ないはずなので一旦はこのままでよいだろう。
リプ会主のタスク量が少しでも少なくなれば幸いである。
