Navi2chで実況してみよう

  • 何かコメントください。おもしろアイデア募集中。
  • ChangeLog
    • [2010-12-13 Mon] ID 消しルールを 2011 年版へ更新。
    • [2010-01-12 Tue] サーバ移転に伴う変更などを追加。
      • 書き込み後に返ってくるエラーを回避する」を削除。現在はサーバ側が 200 を返すようになっている。
      • 「etc.txt に実況板と予備板を追加する」を更新。
      • 「名前欄に somebody@ を自動的に挿入する」を更新。
      • 「自動的に中右から選手名を検索する」を更新。
      • 「中右データファイル生成スクリプト」を削除。このページのフォーマットが崩れてしまうため。
      • 「中右データファイル」を削除。最新版を直接このページに貼り付けてある。
    • [2006-03-27 Mon] 「zonumatu対応版背番号表ヤクルト詳細編」に合わせて、ゴン の背番号を変更。
    • [2006-02-19 Sun] 「zonumatu対応版背番号表ヤクルト詳細編」に合わせて、根岸さん を追加。
    • [2006-02-19 Sun] Emacs-w3m の w3m-antenna を使って、この Wiki を捕捉する人々へ。
    • [2006-01-28 Sat] 「名前欄に @somebody を自動的に挿入する」を 2006 年版に更新。
    • [2006-01-27 Fri] 「zonumatu対応版背番号表ヤクルト詳細編」に合わせて中右データファイルを更新。
    • [2005-12-24 Sat] 「zonumatu対応版背番号表ヤクルト詳細編」から中右データファイルを生成するスクリプトを掲示。
    • [2005-12-24 Sat] 「zonumatu対応版背番号表ヤクルト詳細編」に合わせて中右データファイルを更新。
    • [2005-10-08 Sat] 「zonumatu対応版背番号表ヤクルト詳細編」に合わせて中右データファイルを更新。
    • [2005-09-19 Mon] 「gikope.el 用 2get AA データファイル」を添付。txt ファイルを gzip で圧縮。
    • [2005-07-31 Sun] 「点呼を取る」を追加。
    • [2005-07-24 Sun] 「自動的に中右から選手名を検索する」を更新。
    • [2005-07-23 Sat] 「板 ID に別名を付ける」を追加。
    • [2005-06-12 Sun] 「自動的に中右から選手名を検索する」と「コメント募集中」を追加。
    • [2005-06-04 Sat] 「はじめから実況板を含む板リストを使う」を追加。


etc.txt に実況板と予備板を追加する

$HOME/.navi2ch/etc.txt に次のような記述を加えればよい。3 行目の swa の部分は好きな単語を使える。

燕軍団軍団実況板
http://tubame.org/swa/
swa


はじめから実況板を含む板リストを使う

etc.txt を編集しなくても、下記の設定を .emacs.el かどこかに加えれば、実況板と予備板が板リストに追加される。環境によっては (require 'cl) が必要になるかもしれない。

;; 野球実況を含む bbsmenu.html を指定する。
(setq navi2ch-list-bbstable-url "http://www43.tok2.com/home/syatol/2chboard/bbsmenu.html")
;; これはおまじない。
(eval-after-load "navi2ch-list"
'(defadvice navi2ch-list-make-board-txt (around navi2ch-list-make-around activate)
(flet ((navi2ch-list-valid-board (url) t))
ad-do-it)))


名前欄に somebody@ を自動的に挿入する

名前欄にいちいち somebody@ と入力せねばならないのは面倒だ。下の設定を適切に加えると自動的に somebody@ を名前欄に挿入してくれるようになる。

(eval-after-load "navi2ch-message"
'(progn
;; 2011
(setq navi2ch-tsubame-id-keyword-list
'("uneri" "kaeru" "faniki" "fukutin" "baletin"
"seugun" "geha" "zousan" "takeun" "messi"))

;; 2010
; (setq navi2ch-tsubame-id-keyword-list
; '("kbkr" "maoh" "massu" "bans" "araki"
; "makeyan" "gom" "yossan" "kkkk" "yuki"))

(defun navi2ch-tsubame-insert-header ()
(insert (navi2ch-read-only-string "From: ")
(nth (% (nth 3 (decode-time (current-time))) 10)
navi2ch-tsubame-id-keyword-list)
"@\n"
(navi2ch-read-only-string "Mail: ")
(or (and navi2ch-message-remember-user-name
(cdr (assq 'mail navi2ch-message-current-article)))
(cdr (assoc (cdr (assq 'id navi2ch-message-current-board))
navi2ch-message-mail-address-alist))
"")
"\n"
(navi2ch-read-only-string
(navi2ch-propertize navi2ch-message-header-separator
'navi2ch-message-header-separator t)))
(setq buffer-undo-list nil)
(set-buffer-modified-p nil))

(defadvice navi2ch-message-insert-header (around
navi2ch-message-insert-header-around
activate)
(if (string-match "http://tubame\\.org/swa/"
(cdr (assq 'uri navi2ch-message-current-board)))
(navi2ch-tsubame-insert-header)
ad-do-it))
))


自動的に中右から選手名を検索する

この設定は、zonu 占いを使ったレスに含まれる ``中右'' という文字列にカーソルを合わせると、その zonu 占いの結果に一致する選手名がエコーエリアに表示されるようになる、というものだ。まあ、下の画像を見て欲しい。

#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (navi2ch.png)

ただし、設定方法がほんのちょっとだけ面倒なので、素人にはおすすめできない。まあ、並の Emacs 使いなら楽勝だろう。

まず、背番号と選手名との対応を保存しておくファイルを作る。このページ添付されている swallows.sexp を使えばいい。これは [[zonumatu対応表(ヤクルツ特化版)>zonumatu対応版背番号表ヤクルト詳細編] から背番号と選手名を抽出したものよ。その swallows.sexp をどこか適当な場所に置いておこう。あたしは $HOME/.emacs.d/swallows.sexp としている。

ファイルのアップロードがうまくいかないようなので、swallows.sexp を直接ここに貼ってしまう。

(
("00"
"川島 慶三、かわしま けいぞう、内野手、選手")
("0"
"濱中 治、はまなか おさむ、外野手、選手")
("1"
"青木 宣親、あおき のりちか、外野手、選手(ヤクルト選手会副会長)")
("2"
"相川 亮二、あいかわ りょうじ、捕手、選手")
("3"
"福地 寿樹、ふくち かずき、外野手、選手")
("4"
"ウラディミール・バレンティン、Wladimir Balentien、外野手、選手")
("5"
"アーロン・ガイエル、Aaron Guiel、外野手、選手")
("6"
"宮本 慎也、みやもと しんや、内野手、選手兼任コーチ")
("7"
"田中 浩康、たなか ひろやす、内野手、選手(ヤクルト選手会書記)")
("8"
"武内 晋一、たけうち しんいち、外野手、選手")
("9"
"飯原 誉士、いいはら やすし、外野手、選手")
("10"
"藤本 敦士、ふじもと あつし、内野手、選手")
("11"
"由規、さとう よしのり、投手、選手")
("12"
"林昌勇、イム・チャンヨン、投手、選手")
("13"
"佐藤 賢、さとう まさる、投手、選手")
("14"
"中澤 雅人、なかざわ まさと、投手、選手")
("15"
"村中 恭兵、むらなか きょうへい、投手、選手")
("16"
"加藤 幹典、かとう みきのり、投手、選手")
("17"
"川島 亮、かわしま りょう、投手、選手(ヤクルト選手会書記)")
("19"
"石川 雅規、いしかわ まさのり、投手、選手(ヤクルト選手会会長)")
("20"
"山本 哲哉、やまもと てつや、投手、選手")
("21"
"松岡 健一、まつおか けんいち、投手、選手")
("22"
"増渕 竜義、ますぶち たつよし、投手、選手")
("23"
"山田 哲人、やまだ てつと、内野手、選手")
("24"
"荒木 貴裕、あらき たかひろ、内野手、選手")
("25"
"館山 昌平、たてやま しょうへい、投手、選手(ヤクルト選手会副会長)")
("26"
"久古 健太郎、きゅうこ けんたろう、投手、選手")
("28"
"川本 良平、かわもと りょうへい、捕手、選手")
("30"
"西田 明央、にしだ あきひさ、捕手、選手")
("31"
"松元 ユウイチ、まつもと ゆういち、外野手、選手")
("32"
"新田 玄気、にった げんき、捕手、選手")
("33"
"畠山 和洋、はたけやま かずひろ、内野手、選手")
("35"
"橋本 義隆、はしもと よしたか、投手、選手")
("36"
"川端 慎吾、かわばた しんご、内野手、選手")
("37"
"福川 将和、ふくかわ まさかず、捕手、選手")
("38"
"衣川 篤史、きぬがわ あつし、捕手、選手")
("39"
"又野 知弥、またの ともや、外野手、選手")
("40"
"吉本 亮、よしもと りょう、内野手、選手")
("41"
"雄平、たかい ゆうへい、外野手、選手")
("42"
"七條 祐樹 、しちじょう ゆうき、投手、選手")
("43"
"一場 靖弘、いちば やすひろ、投手、選手")
("44"
"松井 光介、まつい こうすけ、投手、選手")
("45"
"日高 亮、ひだか りょう、投手、選手")
("46"
"鬼崎 裕司、おにざき ゆうじ、内野手、選手")
("47"
"赤川 克紀、あかがわ かつき、投手、選手")
("48"
"渡辺 恒樹、わたなべ こうき、投手、選手")
("49"
"宮出 隆自、みやで りゅうじ、外野手、選手")
("50"
"上田 剛史、うえだ つよし、外野手、選手")
("51"
"山岸 穣、やまぎし みのる、投手、選手")
("52"
"中村 悠平、なかむら ゆうへい、捕手、選手")
("54"
"高市 俊、たかいち しゅん、投手、選手")
("55"
"野口 祥順、のぐち よしゆき、内野手、選手")
("56"
"中尾 敏浩、なかお としひろ、外野手、選手")
("57"
"松井 淳、まつい じゅん、外野手、選手")
("58"
"高木 啓充、たかぎ ひろみつ、投手、選手")
("59"
"水野 祐希、みずの ゆうき、捕手、選手")
("60"
"三輪 正義、みわ まさよし、内野手、選手")
("61"
"石井 弘寿、いしい ひろとし、投手、選手")
("62"
"吉川 昌宏、よしかわ まさひろ、投手、選手")
("63"
"山本 斉、やまもと ひとし、投手、選手")
("64"
"川崎 成晃、かわさき なりあき、外野手、選手")
("65"
"押本 健彦、おしもと たけひこ、投手、選手")
("67"
"平井 諒、ひらい りょう、投手、選手")
("68"
"森岡 良介、もりおか りょうすけ、内野手、選手")
("70"
"八木 亮祐、やぎ りょうすけ、投手、選手")
("71"
"中西 親志、なかにし ちかし、1軍バッテリーコーチ")
("72"
"荒木 大輔、あらき だいすけ、1軍チーフ兼任投手コーチ")
("75"
"土橋 勝征、どばし かつゆき、2軍内野守備走塁コーチ")
("77"
"真中 満、まなか みつる、2軍監督")
("78"
"古久保 健二、ふるくぼ けんじ、2軍バッテリーコーチ")
("79"
"淡口 憲治、あわぐち けんじ、2軍打撃コーチ")
("80"
"小川 淳司、おがわ じゅんじ、1軍監督")
("81"
"伊勢 孝夫、いせ たかお、1軍総合コーチ")
("82"
"佐藤 真一、さとう しんいち、1軍作戦担当兼任打撃コーチ")
("83"
"度会 博文、わたらい ひろぶみ、2軍外野守備走塁コーチ")
("84"
"伊藤 智仁、いとう ともひと、1軍投手コーチ")
("85"
"飯田 哲也、いいだ てつや、1軍外野守備走塁コーチ")
("87"
"城石 憲之、ながた たかゆき、1軍内野守備走塁コーチ")
("89"
"松井 優典、まつい まさのり、戸田寮長兼任2軍育成コーチ")
("92"
"伊東 昭光、いとう あきみつ、2軍投手コーチ")
("93"
"加藤 博人、かとう ひろと、2軍投手コーチ")
("96"
"池山 隆寛、いけやま たかひろ、2軍打撃コーチ")
("100"
"江花 正直、えばな まさなお、ブルペン捕手")
("101"
"押尾 健一、おしお けんいち、打撃投手")
("102"
"石堂 克利、いしどう かつとし、打撃投手")
("103"
"西沢 浩一、にしざわ こういち、打撃投手")
("104"
"村田 正幸、むらた まさゆき、打撃投手")
("105"
"阿部 茂樹、あべ しげき、ブルペン捕手")
("106"
"山口 重幸、やまぐち しげゆき、打撃投手")
("107"
"丹野 祐樹、たんの ゆうき、打撃投手")
("108"
"鮫島 秀旗、さめじま ひでき、ブルペン捕手")
("109"
"前田 浩継、まえだ ひろつぐ、打撃投手")
("110"
"乱橋 幸仁、らんばし ゆきひと、打撃投手")
("111"
"佐藤 貴規、さとう たかのり、外野手、育成選手")
("112"
"小山田 貴雄、おやまだ たかお、ブルペン捕手")
("113"
"伊藤 真、いとう まこと、スコアラー兼任打撃投手")
("114"
"麻生 知史、あそう ともふみ、内野手、育成選手")
("115"
"ラファエル・フェルナンデス、Rafael Fernandes、投手、育成選手")
("116"
"北野 洸貴、きたの こうき、外野手、育成選手")
("117"
"曲尾 マイケ、まがりお まいけ、外野手、育成選手")
("118"
"上野 啓輔、うえの けいすけ、投手、育成選手")
;; 背番号未定なの?
;; (""
;; "朴石鎮、パク・ソクジン、2軍投手コーチ")
)

次に設定を .emacs.el かどこかへ加える。昔の navi2ch は navi2ch-article.el で defsubst を多用していたため、navi2ch-article.el にパッチを当ててバイトコンパイルをしなければならなかったが、2.0.0 系列ならば defsubst を使っていないようなので、.emacs.el で navi2ch-article.el の関数を上書きするだけで済む。

もし my-navi2ch を使っているのならば、navi2ch-article-header-format-function の上書きがちゃんとされているかどうか確認したほうがいい。my-navi2ch.el でも navi2ch-article-header-format-function を上書きするようになっているためだ。

(eval-after-load "navi2ch-article"
'(progn
(defface navi2ch-article-nakamigi-face
'((t (:foreground "firebrick")))
"中右に対する face."
:group 'navi2ch-face)

(defface navi2ch-article-nakamigi-mona-face
'((t (:inherit navi2ch-mona14-face :foreground "firebrick")))
"モナーフォントを使ったときの中右に対する face."
:group 'navi2ch-face)

(defface navi2ch-article-fortunist-mona-face
'((t (:inherit navi2ch-article-nakamigi-mona-face)))
"モナーフォントを使ったときの fortunist に対する face."
:group 'navi2ch-face)

(defsubst navi2ch-article-nakamigi-get-name (nakamigi)
(let ((naka (substring nakamigi 0 1))
(migi (substring nakamigi 1 2))
entry)
(cond ((string= nakamigi "00") ;; ここはあやしい.
(let ((z (assoc "0" swallows))
(zz (assoc "00" swallows)))
(cond ((and z zz)
(concat (nth 1 z) "もしくは" (nth 1 zz)))
((and z (not zz))
(nth 1 z))
((and (not z) zz)
(nth 1 zz))
(t
"いないお。"))))
((string= naka "0")
(setq entry (assoc migi swallows))
(if entry (nth 1 entry) "いないお。"))
(t
(setq entry (assoc nakamigi swallows))
(if entry (nth 1 entry) "いないお。")))))

(defun navi2ch-article-nakamigi-header-format-function (number name mail date)
(when (string-match (concat "\\`" navi2ch-article-number-number-regexp
"\\'")
name)
(navi2ch-article-set-link-property-subr (match-beginning 0)
(match-end 0)
'number
(match-string 0 name)
name))
(let ((from-header (navi2ch-propertize "From: "
'face 'navi2ch-article-header-face))
(from (navi2ch-propertize (concat (format "[%d] " number)
name
(format " <%s>\n" mail))
'face 'navi2ch-article-header-contents-face))
(date-header (navi2ch-propertize "Date: "
'face 'navi2ch-article-header-face))
(date (navi2ch-propertize (if navi2ch-article-dispweek
;;曜日表示する?
(navi2ch-article-appendweek date)
date)
'face
'navi2ch-article-header-contents-face))
(nakamigi (if (string-match "\\[\\([0-9]\\)|\\([0-9]\\)|\\([0-9]\\)\\]" date)
(concat (match-string 2 date) (match-string 3 date))
nil))
(start 0) next)
(while start
(setq next
(next-single-property-change start 'navi2ch-fusianasan-flag from))
(when (get-text-property start 'navi2ch-fusianasan-flag from)
(add-text-properties start (or next (length from))
'(face navi2ch-article-header-fusianasan-face)
from))
(setq start next))
(when (and (string-match "中右" from)
nakamigi)
(add-text-properties (match-beginning 0) (match-end 0)
(list
'help-echo (navi2ch-article-nakamigi-get-name nakamigi)
'face 'navi2ch-article-nakamigi-face
'navi2ch-link t)
from))
(concat from-header from date-header date "\n\n")))

(defsubst navi2ch-article-nakamigi-put-face (nakamigi)
(when nakamigi
(goto-char (point-min))
(while (search-forward "中右" nil t)
(let ((begin (match-beginning 0))
(end (match-end 0)))
(put-text-property begin end
'help-echo (navi2ch-article-nakamigi-get-name nakamigi))
(put-text-property begin end 'face 'navi2ch-article-nakamigi-mona-face)
(put-text-property begin end 'navi2ch-link t)))))

(defsubst navi2ch-article-fortunist-put-face ()
(let ((start (goto-char (point-min)))
next)
(while start
(setq next
(next-single-property-change start 'navi2ch-fortunist-flag))
(when (get-text-property start 'navi2ch-fortunist-flag)
(add-text-properties start next
'(face navi2ch-article-fortunist-mona-face)))
(setq start next))))

(defun navi2ch-article-insert-message (num alist)
(let ((p (point))
name mail date nakamigi)
(setq name (cdr (assq 'name alist)))
(setq mail (cdr (assq 'mail alist)))
(setq date (cdr (assq 'date alist)))
(when (and (string-match "zonu" mail)
(string-match "\\[\\([0-9]\\)|\\([0-9]\\)|\\([0-9]\\)\\]" date))
(setq nakamigi (concat (match-string 2 date)
(match-string 3 date))))
(insert (funcall navi2ch-article-header-format-function num name mail date))
(put-text-property p (1+ p) 'current-number num)
(setq p (point))
(insert (cdr (assq 'data alist)) "\n")
(save-excursion
(save-restriction
(narrow-to-region p (point))
;; (navi2ch-article-cleanup-message) ; やっぱ遅い
(put-text-property (point-min) (point-max) 'face
'navi2ch-article-face)
(navi2ch-article-put-cite-face)
(navi2ch-article-set-link-property)
(navi2ch-article-nakamigi-put-face nakamigi) ;; nakamigi
(navi2ch-article-fortunist-put-face) ;; fortunist
(if navi2ch-article-auto-decode-p
(navi2ch-article-auto-decode-encoded-section))
(navi2ch-article-arrange-message))))
(navi2ch-article-insert-message-separator num))

;; my-navi2ch.el で上書きされる
(setq navi2ch-article-header-format-function
'navi2ch-article-nakamigi-header-format-function)
))

(eval-after-load "my-navi2ch"
;; my-navi2ch.el で上書きされる
'(setq navi2ch-article-header-format-function
'navi2ch-article-nakamigi-header-format-function))

(setq swallows
(with-temp-buffer
(insert-file-contents "~/.emacs.d/swallows.sexp")
(read (current-buffer))))


点呼を取る

これは、いま見ているスレに出現している ID の数を数える関数だ。スレを開いているときに M-x navi2ch-article-count-id-occur を実行すると、次のような計測情報が kill-ring に追加される。計測したい範囲を指定するには、M-: (eval-expression) で (navi2ch-article-count-id-occur 開始レス番 終了レス番) を評価すればいい。手抜きプログラムなので、うまく動かないかもしれない。手直し希望。

852 個のレスのうち ID は 34 通りあって、
??? が 789 レス、ti5qFZak が 14 レス、jMT2OdvU が 5 レス、
98XGCnss が 4 レス、TQMyG7zM が 3 レス、UAkFHbFM が 3 レス、
qIuFYqH. が 2 レス、RvnCNcOQ が 2 レス、GChbFgTY が 2 レス、
VQyq3GdY が 2 レス、FkT/cndg が 2 レス、6hf2JVdM が 2 レス、
VKEQTTZI が 1 レス、AMIcwoZY が 1 レス、udyuI.XY が 1 レス、
/rKoZvNg が 1 レス、f5n9nfzY が 1 レス、eX9jb9Xw が 1 レス、
GpCfqwM2 が 1 レス、55FngCWA が 1 レス、XGUNLh3Y が 1 レス、
q9BaMN2k が 1 レス、xAONAbJU が 1 レス、.Eg6ns3M が 1 レス、
18O88inI が 1 レス、f0jGp6KU が 1 レス、ajgiJB/I が 1 レス、
uC9dJKPQ が 1 レス、.cqSe4cM が 1 レス、6zrTVjAQ が 1 レス、
bbpHn.OQ が 1 レス、6GejMX6k が 1 レス、wGw065Vk が 1 レス、
PT0OOzB6 が 1 レス、だお。
(defun navi2ch-article-get-id-occur-list (&optional begin end)
(let* ((end (or end (length navi2ch-article-message-list)))
(begin (or begin 1))
(i begin)
alst)
(while (<= i end)
(let ((msg (nth (- i 1) navi2ch-article-message-list)))
(when (listp (cdr msg))
(let* ((num (car msg))
(date (cdr (assq 'date (cdr msg))))
id elt)
(when (string-match " ID:\\(.*\\)\\'" date)
(setq id (match-string 1 date))
(setq elt (assoc id alst))
(if elt
(setcdr elt (append (cdr elt) (list num)))
(add-to-list 'alst (cons id (list num)) t))))))
(setq i (1+ i)))
(cons (+ (- end begin) 1) alst)))

(defun navi2ch-article-pp-id-occur-list (cons)
(let ((number (car cons))
(alst (sort (cdr cons)
'(lambda (elm1 elm2)
(> (length (cdr elm1)) (length (cdr elm2)))))))
(kill-new
(concat (format "%d 個のレスのうち ID は %d 通りあって、\n"
number
(length alst))
(let ((i 0)
(lng (length alst))
elm rtn)
(while (< i lng)
(setq elm (nth i alst))
(setq rtn (concat rtn
(format "%-8s が %3d レス、"
(car elm)
(length (cdr elm)))
(if (= (% i 3) 2) "\n" "")))
(setq i (1+ i)))
rtn)
"だお。"))))

(defun navi2ch-article-count-id-occur (&optional begin end)
(interactive)
(navi2ch-article-pp-id-occur-list
(navi2ch-article-get-id-occur-list begin end)))


板 ID に別名を付ける

板リストを http://www43.tok2.com/home/syatol/2chboard/bbsmenu.html にすると、板 ID が分かりにくい。あたしは、分かりにくい板 ID を覚えられないので、別名を付けられるようにしてみた。下記を設定ファイルに加えればいい。変数 my-navi2ch-board-alias-alist で別名を設定している。

(defvar my-navi2ch-board-alias-alist
'(("swa" . "livetsubame")
("swa:2" . "livetsubamespare")
("livecarp" . "livekoi")
("live:5" . "livehoshi")
("doara" . "liveryu")
("base2" . "livetora")
("giants" . "liveusagi")
("base:5" . "livekamome")))

(eval-after-load "navi2ch-list"
'(defun navi2ch-list-goto-board (&optional default)
(interactive)
(let (alist board)
(setq alist (mapcar (lambda (x) (cons (cdr (assq 'id x)) x))
navi2ch-list-board-name-list))
;; BEGIN: Put aliases into alist.
(let (b)
(dolist (alias my-navi2ch-board-alias-alist)
(when (setq b (assoc (car alias) alist))
(add-to-list 'alist (cons (cdr alias) (cdr b))))))
;; END
(save-window-excursion
(setq board (cdr (assoc
(completing-read
(concat "Board name"
(when default
(format " (%s)" (cdr (assq 'id default))))
": ")
alist nil t)
alist))))
(setq board (or board
(assoc (cdr (assq 'id default)) alist)))
(when board
(when (eq (navi2ch-get-major-mode navi2ch-board-buffer-name)
'navi2ch-board-mode)
(navi2ch-board-save-info))
(navi2ch-list-select-board board))))
)

(eval-after-load "navi2ch-article"
'(defun navi2ch-article-goto-number-or-board ()
"入力された数字の位置に移動するか、入力された板を表示する。
名前が数字ならばデフォルトはその名前の数字。"
(interactive)
(let (default alist ret)
(setq default
(let* ((msg (navi2ch-article-get-message
(navi2ch-article-get-current-number)))
(from (cdr (assq 'name msg)))
(data (cdr (assq 'data msg))))
(or (and from
(string-match "^[^◆0-90-9]*\\([0-90-9]+\\)" from)
(japanese-hankaku (match-string 1 from)))
(and data
(string-match "[0-90-9]+" data)
(japanese-hankaku (match-string 0 data)))
nil)))
(setq alist (mapcar (lambda (x) (cons (cdr (assq 'id x)) x))
navi2ch-list-board-name-list))
;; BEGIN: Put aliases into alist.
(let (b)
(dolist (alias my-navi2ch-board-alias-alist)
(when (setq b (assoc (car alias) alist))
(add-to-list 'alist (cons (cdr alias) (cdr b))))))
;; END
(setq ret (completing-read
(concat "Input number or board"
(and default (format "(%s)" default))
": ")
alist nil nil))
(setq ret (if (string= ret "") default ret))
(if ret
(let ((num (string-to-number ret)))
(if (and (> num 0)
(equal ret (number-to-string num)))
(navi2ch-article-goto-number num t t)
(let (board board-id)
(setq board-id (try-completion ret alist))
(and (eq board-id t) (setq board-id ret))
(setq board (cdr (assoc board-id alist)))
(if board
(progn
(when (eq (navi2ch-get-major-mode
navi2ch-board-buffer-name)
'navi2ch-board-mode)
(navi2ch-board-save-info navi2ch-board-current-board))
(navi2ch-article-exit)
(navi2ch-bm-select-board board))
(error "No such board"))))))))
)


gikope.el 用 2get AA データファイル

実況板で見かける 2get AA を集めたファイル。次のファイルを ~/.navi2ch/mojidata.txt に追加すればよい。

filemojidata-swallows.txt.gz

ファイルがありません(2010/09/09)


Emacs-w3m の w3m-antenna を使って、この Wiki を捕捉する人々へ

下のようなコードを適切な場所に入れると、w3m-antenna でこの Wiki の最終更新時刻を捕捉できるようになる。たぶん。

(defun my-tsubame-observer ()
(let ((regexp (concat "^<li> <span class=\"date\">"
"\\([0-9][0-9][0-9][0-9]\\)-\\([0-9][0-9]\\)-\\([0-9][0-9]\\)"
" (...) "
"\\([0-9][0-9]\\):\\([0-9][0-9]\\):\\([0-9][0-9]\\)</span>")))
(goto-char (point-min))
(when (re-search-forward regexp nil t)
(encode-time (string-to-number (match-string 6))
(string-to-number (match-string 5))
(string-to-number (match-string 4))
(string-to-number (match-string 3))
(string-to-number (match-string 2))
(string-to-number (match-string 1))
32400))))

(defun my-w3m-antenna-check-page-tsubame (site handler)
(my-w3m-antenna-check-page-subr 'my-tsubame-observer site handler))

(add-to-list 'w3m-antenna-sites
'("http://antithese.hp.infoseek.co.jp/cgi-bin/wiki/index.cgi?RecentChanges"
"RecentChanges - 燕軍団軍団実況板 Wiki"
(my-w3m-antenna-check-page-tsubame)))


コメント募集中

コメント:
  • 2011年verに更新してみました。朴石鎮コーチは退団の様ですが、修正法が分からないのでお願いします (2010-12-13 09:18:45)
  • ↓サンクスです。中右データファイルを更新しました。 -- 2006-03-27 (Mon) 22:18:03
  • ゴンザレスが78番に変更となったので背番号表更新しました -- 2006-03-27 (Mon) 18:31:27
  • 背番号表の更新、ありがとうございました。 -- 2006-02-19 (Sun) 20:22:41
  • 背番号表更新しました -- 2006-02-14 (Tue) 14:32:04
  • ↓お疲れ様です。今年で最後と書いてしまいましたが根岸さんが入ってきそうですね -- 2006-01-27 (Fri) 09:36:32
  • 社長はなしでいいと思います。石井一久の読みが「たかいゆうへい」になっていたのを直しときました。 -- 2006-01-25 (Wed) 22:16:31
  • あと実況板で社長が69番としてネタになってますがこれは入れた方が良いんでしょうか?一応あの人は選手ではないので入れるのはどうかなと迷ったのですが -- 2006-01-25 (Wed) 15:51:46
  • 背番号表更新しました。多分石井と高井の変更で今年は最後だと思います -- 2006-01-25 (Wed) 15:50:00
  • 更新が遅くなってすみません。 -- 2005-12-25 (Sun) 22:08:40
  • ↓ありがとです。いまちょっと忙しいので後で更新します。 -- 2005-10-17 (Mon) 23:30:00
  • zonumatu背番号表を更新しました。樹を消去しました。 -- 2005-10-17 (Mon) 23:23:35
  • zonumatu背番号表を更新しました。サトシン、渡辺さんを消去。もし来季75番が埋まらなかったら75番がゾヌでネタにされると思うので役職だけ変更しました -- 2005-10-14 (Fri) 21:53:46
  • 自己紹介乙 -- 2005-09-20 (Tue) 02:17:41
  • ネカマ氏ね -- 2005-07-25 (Mon) 01:02:16









これまでのアクセス数  -

本日のアクセス数 -
昨日のアクセス数 -

タグ:

+ タグ編集
  • タグ:
最終更新:2010年12月13日 09:18