はてなブックマークFirefox拡張のsqlite dbファイルをanything.elで検索
http://d.hatena.ne.jp/aki77/20090501/1241167586
前回のエントリでは最終的には launchd ではてなブックマークFirefox拡張のdbファイルを監視することで、リアルタイムに同期していたけど、だったら最初からdbファイルをそのまま使ったほうがいい気がしてきた、、
リモート環境の場合でも、dropbox なり rsync なりで同期させれば済むし。
無理矢理書き換えただけだけど、綺麗に書き換えてもらえることを期待してソースを張っておきます。
(defvar anything-hatena-bookmark-db "Profiles/xxxxx/hatenabookmark/HATENA_ID/bookmark.sqlite") (defvar anything-c-source-hatena-bookmark '((name . "Hatena::Bookmark") (init . (lambda () (call-process-shell-command (concat "echo 'SELECT title || \" [summary:\" || REPLACE(REPLACE(comment, \"[\", \"\"), \"]\", \", \") || \"][href:\" || url || \"]\" FROM bookmarks ORDER BY date DESC LIMIT 10000;' | sqlite3 \"" anything-hatena-bookmark-db "\"") nil (anything-candidate-buffer 'global)))) (candidates-in-buffer) (action ("Browse URL" . (lambda (candidate) (string-match "\\[href:\\(.+\\)\\]$" candidate) (browse-url (match-string 1 candidate)))) ("Show URL" . (lambda (candidate) (string-match "\\[href:\\(.+\\)\\]$" candidate) (message (match-string 1 candidate)))) ("Show Summary" . (lambda (candidate) (string-match "\\[summary:\\(.+\\)\\]\\[" candidate) (message (match-string 1 candidate))))))) (defun anything-hatena-bookmark () "Search Hatena::Bookmark using `anything'." (interactive) (unless (file-exists-p anything-hatena-bookmark-db) (error "File does not exist")) (anything '(anything-c-source-hatena-bookmark) nil "Find Bookmark: " nil nil))
オリジナルのanything-hatena-bookmark.el