--- title: グルメサイトを横断検索した結果を anything のソースにする author: kazu634 date: 2009-11-18 url: /2009/11/18/_1396/ wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4933;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - Emacs ---

上記のスクリプトの結果を取り込んで、はてなダイアリー記法で店舗紹介テーブルを作成するソースを作成しました。

「M-x anything-gourmet」で電話番号の入力を促します。

入力された電話番号でスクリプトをキックし、出力された結果を anything のソースとします。

ソース

(defvar anything-c-source-gourmet-work "0")
(defun anything_gourmet (tel)
(interactive "sTelephone Number: ")
(if (string-match "[0-9]+-[0-9]+-[0-9]+" tel)
(progn
(setq anything-c-source-gourmet-work tel)
(anything 'anything-c-source-gourmet
nil
"Title: "
nil
nil
anything-call-source-buffer))
(message "Please enter Telephone Number!")))
(defvar anything-c-source-gourmet
'((name . "Cross-Gourmet Site Search")
(candidates . (lambda ()
(delete ""
(split-string
(shell-command-to-string
(format "gourmet %s"
anything-c-source-gourmet-work))
"\n"))))
(candidate-transformer . (lambda (candidates)
(mapcar
(function (lambda(arg)
(let*
((str_list (split-string arg "\t"))
(site (nth 0 str_list))
(shopname (nth 1 str_list)))
(cons (format "[%s] %s" site shopname) arg))))
candidates)))
(action . (("Insert" . insert_gourmet)))
(migemo)))
(defun insert_gourmet (candidate)
(let*
((str-list (split-string candidate "\t"))
(site (nth  str-list))
(shopname (nth 1 str-list))
(address (nth 2 str-list))
(url (nth 3 str-list))
(tel (nth 4 str-list)))
(insert (format "|*店名|[%s:title=%s]|\n" url shopname))
(insert (format "|*住所|%s|\n" address))
(insert (format "|*電話番号|%s|\n" tel))))