RSSフィードをLCDに表示させる(未完放置)

えらく久しぶりにfeedparserを使う。
http://feedparser.googlecode.com/files/feedparser-4.1.zip
READMEを読む。ライセンスが独自なのだな。バイナリで配布する場合には、ライセンス掲示が必要か。
Windowsでのインストールは、どうするのかな。setup.py形式でのインストールになっているようだ。

>python setup.py install

としてみたけど、pythonはコマンド検索パスに入っていないので起動できなかった。
拡張子の関連付けで面倒を見てくれるはずなので、

>setup.py install

とする。
パスを入力するのがめんどくさい場合は、コマンドプロンプトのウインドウにsetup.pyをドラッグすると楽。
まずは、リハビリを兼ねてIDELで動作チェック。

>>> import feedparser
>>> d = feedparser.parse("http://fxfeeds.mozilla-japan.org/rss20.xml")
>>> for entry in d.entries:
	print entry.title


>>> print d.version
None
>>> print d.feed.title

Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    print d.feed.title
  File "C:\Python25\Lib\site-packages\feedparser.py", line 236, in __getattr__
    raise AttributeError, "object has no attribute '%s'" % key
AttributeError: object has no attribute 'title'

なんかダメ風。Windowsじゃ動かないとか?
http://d.hatena.ne.jp/kinneko/20050222/p3
取れなかった場合のエラーを戻す仕組みは相変わらずないのかな?
他に依存しているモジュールがあったかもな。
調べてみたけど、なさそうだな...
http://wiki.python.org/moin/RssLibraries
代替できそうなものはない。
pyxmlとかほんとにいらないの?


どうも、feedparserのせいではないようだ。
urllibでアクセスしてみると、socket.getaddrinfoに失敗している。

>>> import urllib
>>> f = urllib.urlopen("http://d.hatena.ne.jp/kinneko/rss")

Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    f = urllib.urlopen("http://d.hatena.ne.jp/kinneko/rss")
  File "C:\Python25\lib\urllib.py", line 82, in urlopen
    return opener.open(url)
  File "C:\Python25\lib\urllib.py", line 190, in open
    return getattr(self, name)(url)
  File "C:\Python25\lib\urllib.py", line 325, in open_http
    h.endheaders()
  File "C:\Python25\lib\httplib.py", line 856, in endheaders
    self._send_output()
  File "C:\Python25\lib\httplib.py", line 728, in _send_output
    self.send(msg)
  File "C:\Python25\lib\httplib.py", line 695, in send
    self.connect()
  File "C:\Python25\lib\httplib.py", line 663, in connect
    socket.SOCK_STREAM):
IOError: [Errno socket error] (11001, 'getaddrinfo failed')

socket.getaddrinfoのせいかどうか確認してみる。

>>> import socket
>>> socket.getaddrinfo("d.hatena.ne.jp", "80")
[(2, 1, 0, '', ('59.106.108.77', 80)), (2, 2, 0, '', ('59.106.108.77', 80))]

取れますね。
proxyごしにアクセスしようとすると出ることがあるようだけど、今のISPは透過proxyでも入っているのかな?
とりあえず放置。


あ、VMware上のWindowsでやっているってことと関係あるかもしれないな...