Kobito(とりあえずバージョン 1.9.2)は、データを ~/Library/Kobito/Kobito.db にある Sqlite3 のデータベースに格納しています。スキーマが今後変わる可能性もありますが、とりあえず現バージョンで、有効な(削除されていない)markdown データを単純にカレントディレクトリにダンプしてみます。
-
db=~/Library/Kobito/Kobito.db
echo "SELECT zkey FROM zitem WHERE zin_trash IS NULL;" |
sqlite3 $db |
while read key
do
echo "SELECT zraw_body FROM zitem WHERE zkey = '$key';" |
sqlite3 $db > $key.md
done
記事ごとのデータは zitem テーブルに入っています。書き出しのファイル名には zkey
フィールドを用いています。zuuid
は UUID なので ID としてはこちらの方が良いかと思ったのですが、これ、公開された記事に対してサーバが振るもののようで、非公開の記事では NULL なんですよね。公開されたデータのみのダンプであれば、こちらでも良いかも。
何となく、現時点のテーブル定義を載せておきます。
-
/* 記事を格納するテーブル */
CREATE TABLE ZITEM (
Z_PK INTEGER PRIMARY KEY, /* DB 内での一意な ID */
Z_ENT INTEGER,
Z_OPT INTEGER,
ZIN_TRASH INTEGER, /* 有効なデータは NULL, 捨てると 1 */
ZPRIVATE INTEGER, /* ? */
ZTEAM INTEGER,
ZCREATED_AT TIMESTAMP,
ZPOSTED_AT TIMESTAMP,
ZUPDATED_AT TIMESTAMP, /* ローカルでの更新日時? */
ZUPDATED_AT_ON_QIITA TIMESTAMP, /* QIITA 上での */
ZBODY VARCHAR, /* HTML 化された body */
ZKEY VARCHAR, /* 何か、ユニークそうなキー */
ZLINKED_FILE VARCHAR,
ZRAW_BODY VARCHAR, /* markdown の body */
ZTITLE VARCHAR, /* タイトル */
ZURL VARCHAR, /* 公開 URL */
ZUUID VARCHAR /* 公開された記事に振られる UUID */
);
では。
追記
Kobito 2.0 で、データベースファイルは ~/Library/Containers/com.qiita.Kobito//Data/Library/Kobito/Kobito.db へ移された模様。