Diary?

2007-10-03
Wed

(20:19)

無茶苦茶適当なこと書くけど、 Web ページのデザインでプログラマを分類すると

  • やたらサイドバーとかに詰め込んでる: IDE 大好き、重厚長大な言語のプログラマ
  • 本文以外に貧相なぐらい何もない: 古参の Unix 系プログラマか古参の C ゲンガー

という傾向があるという印象。

(22:11)

ゆっくりはっきり喋ってくれる英語ニュースの VOA News Special English は結構ありがたい存在なのだけど、問題が二つ。 VOA News は Podcast を使えるらしいのだけど、

  • 俺は Podcast 用クライアントなぞ一つも知らん
  • その Podcast にはトランススクリプトが付いてこない

というわけで、適当なものをでっちあげることにした。とりあえずこんな感じ。

#!/usr/bin/env python
import feedparser
import os
import urllib2
from htmllib import HTMLParser
from formatter import AbstractFormatter, NullWriter
 
def get_mp3_url(url):
  parser = HTMLParser(AbstractFormatter(NullWriter()))
  print 'getting %s ...' % (url)
  text = urllib2.urlopen(url).read()
  parser.feed(text)
  for i in parser.anchorlist:
    if i.endswith('.mp3'):
      return i
  return ''
 
def main():
  try:
    feed = feedparser.parse('http://www.voanews.com/specialenglish/customCF/RecentStoriesRSS.cfm?keyword=TopStories')
    while 1:
      for i, v in enumerate(feed.entries):
        print '%2d: %s' % (i, v.title)
      num = int(raw_input('enter entry\'s number> '))
      if num == -1: break
      url = get_mp3_url(feed.entries[num].link)
      print url
      os.system('mplayer %s' % (url))
    return 0
  except KeyboardInterrupt, e:
    return -1
  except Exception, e:
    import traceback
    traceback.print_exc()
    return -1
 
if __name__ == '__main__':
  import sys
  sys.exit(main())

Feed Parser と MPlayer に依存してるので、事前にインストールしておくこと。というか Plagger でやれとの声が聞こえてきそうだけど、 Plagger なんぞ知らん。後は適当に改造すればトランススクリプトを表示させたりとか出来るようになるし、その場合 Tkinter で GUI フロントエンドを作るのも悪くなさそうだけど、今日はもうこれでいいや。

ところで VOA News って Last-Modified を出力してくれないのでこっちの方でキャッシュを持って負荷軽減が難しくなってる。一度 GET したら 12 時間の間はキャッシュを参照とかにした方がいいだろうな (そのぐらいの間隔でも大丈夫だろう)。

Creative Commons
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。