Kobito 上で編集したが Qiita へ同期されていないアイテムを一覧する
Kobito って、編集したのに Qiita へ同期されていないアイテムがどれとどれなのかが分かりませんよね?
しかたがないので、DB に訊きます(下記 DB ファイルの位置は Kobito-2.0 の場合です。1.9 では ~/Library/Kobito/Kobito.db
にありました。スキーマはそんなに変わっていない様子)。
$ sqlite3 ~/Library/Containers/com.qiita.Kobito/Data/Library/Kobito/Kobito.db
以下で、タイトルが一覧されます(テーブル定義についてのメモは「SQLite3 - Kobito の markdown データをコマンドラインからダンプする - Qiita」に書きました)。
SELECT '「' || ztitle || '」'
FROM zitem
WHERE
zin_trash IS NULL AND -- 捨てたアイテムを除く
(
zuuid IS NULL OR -- 未投稿
zupdated_at > zupdated_at_on_qiita + 30 -- 編集したが未同期
)
ORDER BY zupdated_at DESC
;
上記の「+ 30」ですが、同期を行うと、Qiita に同期された後に、アイテムには「同期が行われた」という更新がかかってしまう(zupdated_at が上がってしまう)ので、しきい値(ここでは適当に 30 秒とした)を設けて判定せざるを得ないようです。ネットワーク状態が悪い時に同期すると、平気で 10 秒以上、場合によっては 40 秒以上のラグが出ている模様。ですので、「Qiita へ同期されてから 30 秒後以降に編集・保存したアイテム」を一覧していることになりますわ。
なお、「Qiita から取得…」で Kobito へ落ちたアイテムでは、zupdated_at と zupdated_at_on_qiita とはキッチリ一致しますので、上記で良いようです。
そんなに厳密でなくて良いので、これでだいたい足りますが、もっと良い手はありますでしょうかね?
では。