2010-01-13
twittering-mode + saykana で Timeline を読み上げるっぽいもの
saykana必須 なので、一応 MacOSX 用です。
まだほとんどできてないんですけどね。
動きとしては
- twittering-mode で新着 tweets が来たら起動
- 「ユーザ1」</>「tweet」<next>「ユーザ2」</>「tweet」<next>「ユーザ3」</>「tweet」<next>というよくわからないフォーマットで文字列を生成
- そいつを外部スクリプトである saykana_wrapper (名前も適当)に投げる
- 発言「誰さんの発言:ほげほげ!」みたいな
フォーマットに関しては、かなりやっつけです。正直なんでもいいです。受け取り側で認識さえすれば。
ちなみに以下が emacs 側。こいつを.emacs なり、emacs が認識するファイルに書けばおk
(add-hook 'twittering-new-tweets-hook (lambda () (let ((n (1- twittering-new-tweets-count)) (s "")) (while (<= 0 n) (setq s (concat s (cdr (nth 8 (nth n twittering-timeline-data))) ;; ユーザ名 "</>" (cdr (nth 1 (nth n twittering-timeline-data))) ;; tweet "<next>")) (setq n (1- n))) (start-process "twittering-saykana" nil "saykana_wrapper" s))))
8 がユーザ名で、1 が tweet とかいちいち調べましたからね。
twittering-mode で既に getter があるかなーと思ったんですけど、よくわからんかったです。
start-process は非同期で外部プログラム実行ですね。以下が saykana-wrapper です。ruby です。
#!/usr/bin/env ruby # -*- coding: utf-8 -*- timeline = ARGV.join.split('<next>') timeline.each do |tl| user,tweet = tl.split('</>') t = `echo #{tweet} | mecab -Owakati | mecab -Oyomi | sed -e 's/ハ/ワ/g'` `saykana '#{user}さんのはつげん'` `saykana '#{t.strip}'` end
saykana は 「11月」とかはいい感じで呼んでくれるのですが
それ以外の漢字は読めないので、カタカナに変換して saykana に渡しています。
一応動いてくれてはいますが、やはりやっつけで書いたのでかなりおかしいです。
- @hoge とか RT とかの対処(消すなり「〜さん宛」に直すとか
- 英字をそのまま呼んでしまう (gongo → ジーオーエヌジーオー)
- そのまま読むのでhttp 〜が長い場合はうざすぎる
saykanji *1 っぽく作ると発音はよくなるでしょう。いずれパクります。
あと、URLなどのいらん箇所も省けばいいと思う。すぐできるけどめんどいから今はやらん。
他にもいろいろあるけど、どうせお遊びなので気にしない気にしない。誰か直して。
ちなみに、Windows であればソフトークだったりがあるけど、Linux って say コマンドっぽいのあったかなー
追記 2010/01/17 17:24
id:hayamiz さんのコメントにより、以下な感じで直せました。
(add-hook 'twittering-new-tweets-hook (lambda () (let ((tweets twittering-timeline-data) (s "")) (setq s (with-output-to-string (while tweets (princ (twittering-format-status (car tweets) "%S</>%t<next>")) (setq tweets (cdr tweets))))) (start-process "twittering-saykana" nil "saykana_wrapper" s))))
あとは Ruby 側をちゃんとすればいいかなー
2009-12-22
カーソルの位置にある数字列をインクリメントする emacs lisp 改修
emacs |
http://d.hatena.ne.jp/kitokitoki/20091219/p1
上記リンク先にある http://www.emacswiki.org/emacs/IncrementNumber に良い感じのものが
looking-at、match-string、replace-match のコンボを見た。すごいなー。関数の存在すら知らなかった。
そんなわけで、パクリつつ引数やマイナスにも対応したのが以下
今度は数字の後ろに(ry
追記 2010/01/08
他サイトをパクリ、move-to-column を使ってカーソルの位置を覚えるようにしました。
まあこれで終わりじゃないっすか
2009-11-27
カーソルの位置にある数字列をインクリメントする emacs lisp
emacs |
久々に elisp 書いたよー。
vim だと C-a とかでできるらしいものなんだけど、emacs には無いみたい。
ありそうなんだけどなーと思いつつ、とりあえず書いてみた。
(defun increment-string-as-number (number) "Replace progression string of the position of the cursor by string that added NUMBER. Interactively, NUMBER is the prefix arg. examle: At the cursor string \"12\" M-x increment-string-as-number ;; replaced by \"13\" C-u 10 M-x increment-string-as-number ;; replaced by \"22\" At the cursor string \"-12\" M-x increment-string-as-number ;; replaced by \"-11\" C-u 100 M-x increment-string-as-number ;; replaced by \"89\"" (interactive "P") (if (string=~ "[0-9]" (char-to-string (char-after)) t) (save-excursion (save-restriction (let ((p (if (integerp number) number 1)) begin end augend) (re-search-backward "^\\\|[^0-9]") (if (string=~ "[^-0-9]" (char-to-string (char-after)) t) (forward-char)) (setq begin (point)) (re-search-forward "[0-9]+") (setq end (point)) (narrow-to-region begin end) (setq augend (string-to-number (buffer-string))) (delete-region (point-min) (point-max)) (insert (number-to-string (+ augend p))) (widen) ))) (error "Can't calculation because not number at cursor point")))
おおむね良好な動作だとは思うが、不満としてはインクリメント後に、その数字列の
先頭に移動してしまうこと。narrow -> widen だとカーソル位置覚えてないんだっけ?
一応 save-excursion は入れてるけど・・あんまよくわかりませんね。
まぁ、久々の elisp ってだけで満足してるのでいいです。誰か書き直してください。
2009-11-01
BAYONETTAしてましたよー
konozamaくらいましたが、なんとか30日についたので、そこからひたすらプレイしてました。
金曜夜に少しやって、土曜は一日中。こういう系はあまりやったことないので、
ノーマルでもかなり苦戦しましたが、なんとかクリアしました。ゲーム時間12時間弱でしたね。
敵の攻撃とかは事前に光ったりしてわかるので、混戦でもそれなりによけれるのですが
ボスのあのいつくるんだ的なのは反射神経弱い俺には難しい。あれも光ってるんだけどね。タイミングが・・
まあそれでも楽しいです。爽快感。なによりべヨネッタ姐さんがエロい。
天使とのダンスバトルだったり、天使の一目惚れが一瞬で終わったり、
チェシェだったかニコだったかリコがまあまあのイケメン(笑)ぶりだったり
そういったギャグ要素はさすがプラチナゲームズと言ったところでしょうか。
ゴッドハンド経験者には、時折「こういうのゴッドハンドにもあったな」ってのがわかるかも。
今は、攻略サイトでついつい知ってしまったお金稼ぎ方法でコスを全部買いました。
体操服のバリエーションあると思ったら、なんでその色だけ変わるのw
体操服はいらないわけじゃないけど、せめて秘書とかスーツ系が欲しかったです。
DLCとかで出てきたらどうすっか・・!
しばらくはまだまだ遊べます

twittering-format-status関数のフォーマット文字列は、twittering-status-format変数のドキュメントを見るとわかると思います。
(with-output-to-string
(let ((n 3)
(tweets twittering-timeline-data))
(while (< 0 n)
(princ (twittering-format-status (car tweets) "%S</>%t<next>"))
(setq tweets (cdr tweets))
(decf n))))
twittering-status-format、見落としていました。
ど、長髪、短い髪型はすべてあって、あなたのご光臨を歓迎します
ようこそwww.fhaircut.com へ
どうぞよろしくお願いします.