Opera の Notes を iEdit でインポートできる wz 階層付きテキストに xyzzy Lisp で整形置換する式

オペラのノートってエクスポートできないんですかねー?本当はOPML形式とかが良いんでしょうかね、汎用性的には?

note.adrをimportする準備(階層つきテキストに整形export)

日曜プログラミングで Opera の Notes を階層付きテキストに変換してみた Lisp ちゃんGJ!。とりあえず、無事にインポートはできた。

xyzzy.exe フォルダにおいてあるだろう .xyzzyに書き込んで、Alt+xでミニバッファから note-replace を呼んであげてね。

(defun note-replace ()
(interactive)
  (save-excursion
    (goto-char (point-min))
(replace-regexp "^\tUNIQUEID=.*\n" "" t))
  (save-excursion
    (goto-char (point-min))
(replace-regexp "^\tACTIVE=.*\n" "" t))
  (save-excursion
    (goto-char (point-min))
(replace-regexp "^\tCREATED=.*\n" "" t))
  (save-excursion
    (goto-char (point-min))
(replace-regexp "^\tID=" "\.\." t))
  (save-excursion
    (goto-char (point-min))
(replace-regexp "^\tNAME=" "" t))
  (save-excursion
    (goto-char (point-min))
(replace-regexp "^\tURL=" "URL: " t))
  (save-excursion
    (goto-char (point-min))
(replace-string "#NOTE" "" t))
  (save-excursion
    (goto-char (point-min))
(replace-string "XXXX" "\n " t))
  (save-excursion
    (goto-char (point-min))
(replace-regexp "^[ \t]*\n" "\n" t))
)

最後の二つは上から――

  1. Opera の newline をフツーの改行コードに直す(XXXXは横棒と縦棒を組み合わせた鍵マークみたいに見えた。エディタではコピペして置換した。ブログにコピペして載せるとRSSが死ぬので回避。あと末尾の空白は、行頭にドットがくると階層と認識されるから、それ回避用)
  2. 空白orタブとか+改行だけの行を line break だけに直す。

iEditにインポートする前に少し手動で追加整形して終わり

上のやつだと、親階層(ピリオド1個)が自動で挿入されないので、Opera の Notes の行頭二行にある文章を削除して、「.Opera Note 日付」とでも書いといてください。

あと、オペラのノートファイル(note.adr)のエンコーディングはutf8nなので、インポート用の.txtに保存する時は日本語(Shift_JIS)に変えて保存(ミニバッファ経由ならchange-fhoge-encoding>sjijだっけ?)してください。文字化けしちゃうと思います。

あとは、iEdit のノード名を、IDじゃなくて、Opera の Notes みたいに「最初の数文字」にできたら可視性が向上するかもね。アナログに矩形貼り付けとかで工夫すればできるかも。というか、NAMEの置換で正規表現のマッチングを利用すれば、部分的に複製して置換できるはずだとは思うのだけど、調べるの面倒。