Open2

FF14のロドストをエクスポートするツール作り

kako-junkako-jun

FF14には、ゲーム外にThe Lodestoneというサービスがあります
https://jp.finalfantasyxiv.com/lodestone

ロードストーン、通称ロドスト

プレイヤーは、ロドストに日記を書くことができます
日記を読むことは、プレイヤーでなくてもできます

スクエニ唯一のブログサービス?


ロドストには、日記のインポート/エクスポート機能が無いようです

WordPressとか見てると
あるのが当たり前、という感覚だったので
本当にないのか、ロドスト上で質問したりもしました

https://jp.finalfantasyxiv.com/lodestone/character/39124727/blog/4979345/


FF14のプレイ日記を書いてる人は、プレイヤーのうち
ほんの一握りのようです

ロドスト外のブログサービスを使ったり
自分のドメインを取って更新してる人も多いです


私もそのうちFF14を引退するのでしょうが
すでにロドストに100記事以上書いたので

消えちゃうのはイヤだなー、と思ったので
エクスポートツールを作ることにしました

kako-junkako-jun

ロドストには
記事一覧を取得できるようなAPIや
FeedのURLは無いようです

https://jp.finalfantasyxiv.com/lodestone/character/39124727/blog/
のようなURLで、記事一覧を閲覧できます

記事をクリックすれば
https://jp.finalfantasyxiv.com/lodestone/character/39124727/blog/4936280/
のようなURLで、各記事を見られます

ここまでは、ログインしてない人でも見られるエリア


では、こうやって表示された記事の
本文部分の文字列を、テキストファイルとしてダウンロードすれば
エクスポートできたことになるか……?

否ッ!

ロドストには、ロドスト記法みたいなのもあるし
画像やリンクの埋め込みもあるし

プレーンテキストモードとリッチモードの違いもある

できれば、編集画面で見てるような
素のプレーンテキストをエクスポートしたい


編集画面は
https://jp.finalfantasyxiv.com/lodestone/my/blog/4936280/edit/
のようなURLで表示できるけど

自身のFF14のアカウントでログインした状態でなければ
「このページを表示するにはログインが必要です」と表示されるのみ

そして、エクスポート用のツールだって
ログインしてない他人みたいなものだから
編集モードに入ることはできない


それを解決するには、ロドストのIDとパスワードを
ツールに入力してもらって、スクレイピングする方法が考えられる

IDとパスワードは、ヘッドレスブラウザがログインに使ったら
もうコード内部では使わず捨てるだけだけど

この、一瞬でもユーザーに入力させちゃってる
というのが、抵抗感ある……

ツールにGUIを持たせて、画面から入力してもらうにしろ
CLIにして、引数で伝えてもらうにしろ

もし自分がユーザーだったら、その仕様のツールは
コードを全部読まない限り、使うのが怖い……


なので、Chrome拡張機能として作ることにしました

ユーザーがブラウザで
ロドストにログイン済みの状態から始めて

ブラウザ右上にあるツールのボタンを押すことで
ログイン済みのロドストに対するクロールを開始し

各記事の編集画面に次々と
(サーバーに負荷を掛けない、人間と同じくらいのスピードで)入って
プレーンテキストとして取得しては、配列にpushしてくわけです

最後に、その配列をzipにまとめて
ダウンロード開始するポップアップを表示すればOK