masalibの日記

システム開発、運用と猫の写真ブログです

はてなブログのバックアップとインポートのツールを作った

はてなブログにバックアップとリストア(エキスポート)する機能があります
問題は、この機能を使うと編集モードがHTML(見たまま)になってしまいます
HTMLになると無駄に

<p>タグ

などが入ってしまします

私は「はてな記法」になれてしまっているため
HTMLモードは編集の効率がさがってしまいます
なのではてな記法markdown記法に対応してバックアップとリストアツールを作った

github.com
もし使う場合はMITライセンスなのでご注意して使ってください



手順

1・バックアップするブログのatompubのURLを取得する
2・検証用のブログを作成する
(proを使っている人ならできると思う)

3・検証用のブログのatompubのURLを取得する

4・ユーザーとパスワードを取得する
atompubのURLは以下のページを参考

masalib.hatenablog.com


5・node.jsをインストールする
https://nodejs.org/ja/
よりv8.6.0をインストールする



6・ツールをダウンロードする

git clone https://github.com/masalib/hatena_blog_tool.git hatena_blog_tool
cd hatena_blog_tool
npm install wsse async cheerio cheerio-httpcli --save 

gitが入っていない人は
https://github.com/masalib/hatena_blog_tool.gitにアクセスして
ダウンロードしてください

7・展開したフォルダに設定ファイルをつくる

config.json

{
  "HATENA_SITE_ID": "hatena_account_ib",
  "HATENA_SITE_PW": "atom password",
  "HATENA_SITE_SOURCE_URL": "https://blog.hatena.ne.jp/XXhatena_account_ibXX/XXbackup_hatena_blog_domainXX/atom",
  "HATENA_SITE_DIST_URL": "https://blog.hatena.ne.jp/XXhatena_account_ibXX/XXrestore_hatena_blog_domainXX/atom"
}

HATENA_SITE_IDとHATENA_SITE_PWは作業4で取得したユーザーIDです
HATENA_SITE_SOURCE_URL(元ブログ)は作業1で取得したatompubのURLです
HATENA_SITE_DIST_URL(移行先ブログ)は作業3で取得したatompubのURLです

8・実行する

backup (windows OK MacOS OK)


node sitexmldownload.js

import

windows OK MacOSは起動のshを作っていません


移行するブログの
編集モードを見たままにして
f:id:masalib:20171004215613p:plain
import_html_mode.bat


移行するブログの
はてな記法モードを見たままにして

import_hatena_mode.bat


移行するブログの
Markdownモードを見たままにして
import_markdown_mode.bat


はまった事

記載モードが変えられない

はてなブログの記載モードは初期設定の部分しか無理らしい・・・
はてなに質問したが返ってこない
content-typeを指定しても

サマリの部分にタグがはいると取り込めなかった

ダウンロードしたデータにsummaryタグがあるのですが
この部分に「"」が閉じていない部分があると
取り込めない

非同期の処理になれていない

node.jsは基本的には非同期の処理なのですが
同期処理のプログラムになれているため、非同期でのnode.jsに苦労した

非同期のnode.jsを同期させて実行させる・・・
う~ん・・・違う言語でいけばよかったかも


今後

SSLに対応して記述やエラーハンドリングができていない部分があるので
修正する