トップ «前日 最新 翌日» 編集
RSS feed

ただのにっき


2002-05-28(火) 7074歩 [長年日記]

スカパー

(雑誌は買わずに)週間の番組表が欲しいと思って、自作しようと考えていたのだが、その前にまずGoogleしたら、ちゃんとあった。危ない危ない、再発明してしまうところだったぜ。左フレームのURLのいじり方はわかったので(←悪党)、毎週一回、自動的にアクセスしてメールで送りつけるようなスクリプトをcronに仕込めばバッチリやね(現実的には2日に1回か)。

でも、一覧には番組名だけが出ていて内容までわからないから、我が愛するディスカバリーチャンネルの番組表はほぼ役に立たない。リンク先をたどって内容も埋め込むようなツールを作る必要はあるなぁ。……というわけで作った。実行すると標準出力に番組内容を含んだ1週間分の番組表が出る。本日の昼休みの成果。

#!/usr/bin/env ruby
 
require 'net/http'
require 'timeout'
require 'nkf'
 
HOST = 'www.sp3.com'
PORT = 80
TBL_PATH = '/cgi-bin/bean.pl?rf=0&bw=0&ofs=-3&ch=321'
PRG_PATH = '/EPG/program/'
 
# if you need proxy access, set below.
PROXY_HOST = nil
PROXY_PORT = nil
 
class String
   def euc
      NKF::nkf( '-e', self )
   end
end
 
def get_html( path )
   body = ''
   timeout( 10 ) do
      begin
         Net::HTTP.Proxy( PROXY_HOST, PROXY_PORT ).start( HOST, PORT ) do |http|
            res, = http.get( path )
            body = res.body
         end
      rescue
      end
   end
   body.euc
end
 
def get_episode( html )
   html.gsub!( /<[^>]*>/, '' ).gsub( "[\n\r]", '' )
   if /エピソード:([^<]*)/ =~ html then
      $1
   else
      ''
   end
end
 
table = ''
get_html( TBL_PATH ).each do |line|
   next if /^<center>/ =~ line
   line.gsub!( / NOWRAP/, '' )
   line.gsub!( /   /, '' )
   line.gsub!( /<BR>[^<]*/, '' )
   if /<A HREF="([^"]*)">/ =~ line then
      episode = get_episode( get_html( PRG_PATH + $1 ) )
      line.sub!( /<\/TD>/, "<BR>#{episode}</TD>" )
   end
   table << line
end
 
puts NKF::nkf( '-Ze', table )

 これを印刷しておけばよい。しかし、A4横で出すと4ページにもなってしまうという罠。

 それにしても、こういうのこそWebサービスにして欲しいものだよな。

tDiary: Plugin Viewer

面白いもの作るよねぇ。

もっとも、どういう場面で便利なのか、イマイチ想像が及ばず(笑)。いや、便利そうだと思う人はいるので、それはかまわないのだけど。ところでプラグインのメタ情報、統一しないといけないね、やっぱ。

Meta Pad

おお、製品化するのか? ちょっと期待。これ、見方によっては「CPU付きディスク」という、「レンズ付きフィルム」のような逆転の発想的デバイスだと思う。こういうのは好きだ。

でも、必要な「シェル」を全部揃えると、すげぇ金がかかったりするんだろうな……。

UTF-8対策(2)

おお。頭いいなー。それなら記録はちゃんとされるし、将来UTF-8対応ができるようになったらきちんと表示されるようにできるもんねー。ちょっと自分の日記で試してみよう。こんな感じにしてみた。

['google\..*?[io]e=(utf|UTF)8.*', 'google検索(???)']

スカパー(2)

53行目、それはソースを引用するときに「\」が消えてしまったのであります。とほほ。直しておきました。

ディスカバリーチャンネルのTime Tableは、PDFですよね。ポータビリティがHTMLより劣るので、個人的には採用したくないな、ということで上のようなスクリプトになったのです。HTMLにしておいてインターネット上に置いておけば、どこからでも見られるし。もしかすると他のチャンネルにも使えるかも知れないし(←これがメインの理由かな)。それに、再放送の時は内容が省略してあったりして、あのPDFはちょっとイマイチ。

PDF

だいたい、うちのLinux環境、満足にPDFが表示できないじゃん! ……と思っていたんだけど、IRCでtakahataさめからAsumiにAcrobat Readerを入れる方法を教わったので、入れてみたらなかなかきれい。Maryの時は見られたもんじゃなかった記憶があるんだけど、ずいぶん良くなったものだ(単にフォントの入れ忘れかも知れない)。

ちなみにHEADからacrobat-reader-4.05-4k.nosrc.rpmとacrobat-reader-jpnfont-386-6k.nosrc.rpmを持ってきてビルドするだけ。

本日のツッコミ(全8件) [ツッコミを入れる]
fortress (2002-05-28(火) 21:06)

スカパー用のスクリプトいいですね。利用させてもらいます。53行目ですが</TD>にマッチさせるのなら、line.sub!( %r!</TD>!, "<BR>#{episode}</TD>" )とかですかね?

にもり (2002-05-28(火) 21:25)

ディスカバリーチャンネルから Time Table 落とせばよいのでは?といってみるテスト

Nyan2 (2002-05-28(火) 23:59)

文字化けしていても、リファラ内容が見えた方がいいので、私もその設定を追加しました。
一部文字化けしますが、それでもいいかんじです(^^

たむら (2002-05-29(水) 01:43)

実はこっそり、AcrobatReader-5.05が出てるらしいっす。
http://www.ruby-lang.org/~eban/diary/200205b.html#200205202
spec ファイルの書き換えで行けるかな。

ただただし (2002-05-29(水) 21:48)

5.05は4用のSPECではいけないらしいっす。じきに出るでしょうけど。

にもり (2002-05-29(水) 21:53)

確かに見にくいですよね.このチャンネルは1ヶ月まじめに見ると2ヶ月は見なくても大丈夫なのは私だけ?ワイルドディスカバリーはおすすめですね.

smbd (2002-05-29(水) 22:34)

acrobat-reader-5.0.5 HEAD用に作ってcommitしたんですけど
jpnfontにゴシックフォントが入ってなくてゴシックが表示でき無いという罠…
あとから4.05用のjpnfontを突っ込めばいいのですがね

ただただし (2002-05-29(水) 22:40)

そうらしいっすね。いろいろ大変だなぁ


トップ «前日 最新 翌日» 編集
RSS feed