あしあと

自分自身のログ(足跡)となります。ソフトウェアエンジニアです。ブログはテック系の内容が少し多めです。

mixiの日記をバックアップするスクリプトをPythonで書いた

タイトルのままなのですが、mixiの日記を一括で保存したいと思い、スクリプトPythonで書きました。
数年前に書いていたものをリフレッシュした感じです。

Python3.6のみで動作は確認してます。細かいことはリポジトリにも書いています。

github.com

必要な作業としては、

  1. サービスの登録
  2. mixiの日記一覧ページのHTMLの取得
  3. ソースコードの準備
  4. アクセストークンの取得
  5. 日記の保存

と、いくつか手順を踏む必要があります。

事前準備

2つの作業が必要です。

サービス登録

サービス管理の手順でサービスを追加する必要があります。
注意としては、リダイレクトURLhttp://localhost:9999/redirectを設定する必要があります。

f:id:pyo_hei:20180705071420p:plain

また、ここで取得できたConsumer KeyConsumer Secretは後々利用します。

mixi日記の一覧ページをダウンロード

日記の一覧を右クリックでダウンロードし、htmlファイルを特定のディレクトリ配下に配置してください。

f:id:pyo_hei:20180705071450p:plain

僕は100件ほどしか日記がなかったので、数回の作業で大丈夫でしたが、いっぱいある人は繰り返し作業が必要です。
これを全て取れるAPIが見つからなかったので知っている人がいれば、教えてください😇

インストール

必要様なスクリプトは以下のコマンドでダウンロードできます。
また、依存ライブラリをインストールする必要があります。

git clone https://github.com/pyohei/extract-mixi-diary.git
cd extract-mixi-diary
pip install -r requirements.txt # virtualenv上の実行がオススメ

使い方

アクセストークン取得用サーバ起動

APIにアクセスするために、アクセストークンを取得する必要があります。
以下のコマンドを実行し、

python server.py -c `Consumer Key` -s `Consumer Secret`

http://localhost:9999 にアクセスすればアクセストークンを取得できます。
以下の画面が出るので、同意してください。

f:id:pyo_hei:20180705071504p:plain

注意点

  • 次のスクリプトで自動的にアクセストークンを取得するので、メモする必要はありません
  • アクセストークンは期限が切れても自動で再取得します

mixi日記取得スクリプトの起動

以下のコマンドで実行し、-dで渡したディレクトリに日記の作成日でファイルが作成されます。

python main.py -o `上記で取得したHTMLを保存しているディレクトリ` -d `保存先ディレクトリ`

ファイルはこんな感じに出力されます。

f:id:pyo_hei:20180705071516p:plain

最後に

結構手順がややこしくて、手動でとったほうが楽だったと感じています...
もともとはmixiを退会するつもりで作ったのですが、自分のPCよりもmixiのサーバーの方が安全だと気付いたので、mixiは継続してます(更新はしてないですが)。

エンジニアじゃない人向けにWebサイトにして、誰でも使える様にすれば良いかなと思ったのですが、需要は極めて低そうなのでこんな感じです。
10人くらいからスターあれば作ろうかな、と。なので、自分もmixiの日記をダウンロードしたいと言う人はスターorコメントください。

参考情報