[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

sb-yomiuri.el より正確な日付



 README.shimbun.ja のサンプルを試していたら、ウェブページ側で、日付が
ズレていたので、それを正確に取得するものを書いてみました。

 shimbun もまだよく分かってない上に、elisp さえ分かってないので、適当
なのですが、動いているようです。
# 二度も記事本文を取りに行くのは無駄すぎるんでしょうが、本文取得時に、
# shimbun-header をいじれないような気がした(見てないですが)ので、こう
# なってしまいました。

 より無駄の少ないやり方ってありますでしょうか。
 ズレるのは深夜の記事だけで、数もあまり多くないので、気にしなくてもい
いかもしれませんが、ソートするときに困るような気がしたので。
# ソートするほどの日数は使っていないのですが(^^;

 ところで、ファイル先頭に "-*- coding: iso-2022-7bit -*-" って付けな
くても大丈夫なんでしょうか?

-- 
Ta-ku-ya II <ayucat@pop21.odn.ne.jp> <ayucat@esprix.net>
            http://esprix.net/~takuya2/

# (string-match "hoge" bar) の後での、
# (match-string 0 bar) と (match-beginning 0)  ;; (match-end 0) も?
# との順番に 2日も悩んでいました(^^;; 順番ってあるんですね。
*** sb-yomiuri.el.orig	Wed Aug 22 03:13:16 2001
--- sb-yomiuri.el	Thu Dec 12 16:35:22 2002
***************
*** 51,56 ****
--- 51,60 ----
  
  (defvar shimbun-yomiuri-expiration-days 7)
  
+ (defvar shimbun-yomiuri-exact-date nil)
+ (defvar shimbun-yomiuri-exact-date-hour-beg 0)
+ (defvar shimbun-yomiuri-exact-date-hour-end 3)
+ 
  (luna-define-method shimbun-index-url ((shimbun shimbun-yomiuri))
    (concat (shimbun-url-internal shimbun)
  	  (cdr (assoc (shimbun-current-group-internal shimbun)
***************
*** 93,106 ****
  			    (progn (search-forward "<br>" nil t) (point)))
  			   "<[^>]+>")
  			  ""))
! 		date)
  	    (when (string-match "^◆" subject)
  	      (setq subject (substring subject (match-end 0))))
! 	    (if (string-match "(\\([0-9][0-9]:[0-9][0-9]\\))$" subject)
! 		(setq date (shimbun-make-date-string
! 			    year month day (match-string 1 subject))
! 		      subject (substring subject 0 (match-beginning 0)))
! 	      (setq date (shimbun-make-date-string year month day)))
  	    (push (shimbun-make-header
  		   0
  		   (shimbun-mime-encode-string subject)
--- 97,122 ----
  			    (progn (search-forward "<br>" nil t) (point)))
  			   "<[^>]+>")
  			  ""))
! 		date hour hm)
  	    (when (string-match "^◆" subject)
  	      (setq subject (substring subject (match-end 0))))
! 	    (when (string-match "(\\(\\([0-9][0-9]\\):[0-9][0-9]\\))$" subject)
! 	      (setq hour (string-to-number (match-string 2 subject))
! 		    hm (match-string 1 subject)
! 		    subject (substring subject 0 (match-beginning 0))))
! 	    (if (and shimbun-yomiuri-exact-date
! 		     (>= hour shimbun-yomiuri-exact-date-hour-beg)
! 		     (<= hour shimbun-yomiuri-exact-date-hour-end))
! 		(with-temp-buffer
! 		  (shimbun-retrieve-url
! 		   (concat (shimbun-url-internal shimbun) url) 'reload)
! 		  (when (re-search-forward "\\([0-9]?[0-9]\\)月\\([0-9]?[0-9]\\)日" nil t)
! 		    (message "Checking exact date...")
! 		    (setq month (string-to-number (match-string 1))
! 			  day (string-to-number (match-string 2)))
! 		    (if (and (= month 1) (= day 1)) (+1 year))
! 		    (message "Checking exact date...done"))))
! 	    (setq date (shimbun-make-date-string year month day hm))
  	    (push (shimbun-make-header
  		   0
  		   (shimbun-mime-encode-string subject)