esa.io のデータを丸ごと GROWI に移行する

概要

GROWI には esa.io や Qiita:Team から記事をインポートする機能があります。
しかし、 2019/10/21 現在の機能では、画像は移行されず、移行元に残ったままになります。
今回、 esa.io から GROWI に画像も移行するためのgemを作成しましたので、使い方も合わせて説明します。 Qiita:Team からのインポートにはまだ対応していません。

インポート前の準備

esa.io や Qiita:Team と少々違う部分なのですが、 GROWI は App を立ち上げた初期設定のままでは画像などのファイルをアップロードすることができません。
Amazon S3などのストレージの準備が必要です。

設定方法は下記記事で説明しています。

記事のインポート

esa.io から GROWI に記事をインポートする場合は、GROWIの標準機能で行えます。
記事のインポートの仕方については、下記記事で説明しています。

画像のインポート

Gemのインストール

下記のGemをインストールします。

$ gem install growi-image_converter

アクセストークンの設定

esa.io から GROWI への移行してみた - zuglab で発行した GROWI のアクセストークンと、GROWI App のURLを環境変数で設定します。

シェルがBashの場合は下記のように設定します。

$ echo 'export GROWI_URL=https://*****.growi.cloud' >> ~/.bash_profile
$ echo 'export GROWI_ACCESS_TOKEN="0123456789abcdef0123456789abcdef0123456789ab"' >> ~/.bash_profile
$ source ~/.bash_profile

移行テスト

何もオプションを指定せずに growi-image_converter コマンドを実行します。
変換対象になるページの一覧が表示されます。
実際にはまだ変換されていません。

$ growi-image_converter

下記のように表示されます。

[DRY RUN MODE]
PageID: 5d9bfe5fab394d00510c39ae, Result: Through
PageID: 5d831e595799980050f87f64, Result: Converted
PageID: 5d84f0ec87339600517b338a, Result: Converted
PageID: 5d941ff8f1be7d00503c4a0a, Result: Through
PageID: 5d932aeaf1be7d00503c4a01, Result: Through
PageID: 5d8b27c67e03f70050bafa5e, Result: Through
PageID: 5d86fd378571d10046324f6c, Result: Through

移行の実行

特にエラー等が表示されていないようであれば、 -d オプションを付与して、変換を実行します。

$ growi-image_converter -d

移行に失敗した画像がある場合は、結果に出力されるので、手動で対応します。
例えば、下記のエラーでは、記事内で指定されている esa.io の画像のパスがリンク切れを起こしています。
該当のページへは、 https://*****.growi.cloud/5d8652a143cc8400554f977f のように PageID を指定してアクセスできます。

PageID: 5d8652a143cc8400554f977f, Image URL: https://img.esa.io/uploads/production/attachments/xxxxx/2019/09/21/xxxxx/xxxxx.jpeg, Message: 403 Forbidden

以上で esa.io にある記事、画像を GROWI にインポートできました。

参考

f:id:Aqutam:20190920001740p:plain