KOYAMA Yoshiaki のブログ

プログラミングについての試行錯誤をつらつら書き溜めていきます。

list.py

iPhone いよいよ発売されましたね。私の利用方法が、主に自宅の Wi-Fi を想定したものだと考えると、 iPhone 16GB で 月額料金 \8720円(+通話料) は躊躇してしまいますね。
本体一括払いにすると、月額料金\5360(+通話料) になるようですが!
たぶん、iPod touch 32GB を購入することになると思います。ただし、iPod も 9月には一新される噂もあるので迷っています。


前回にも書いたように

を続けて読んでいます。574ページまで読みました。今月中には読み終わりそうです。


簡単なプログラムを作りたくなり、2ch 掲示板 '新・mac' 板のスレッド一覧をダウンロードし、スレッドタイトル名でソートして表示するプログラムを作ってみました。

------------------[ list.py ]------------------
#!/usr/bin/env python
# coding: UTF-8

import httplib
import re

connection = httplib.HTTPConnection( 'pc11.2ch.net' )

connection.putrequest('GET', '/mac/subject.txt')
connection.putheader('User-Agent', 'Monazilla/1.00')
connection.endheaders()
connection.send('')

response = connection.getresponse()

print response.status, response.reason

data_shift = response.read()

connection.close()

data = data_shift.decode('shift-jis', 'ignore')

re_line = re.compile("(.*)<>(.*)\((\d+)\)")

subject = []

for line in data.splitlines():
	match = re_line.match(line)
	t = (match.group(1), match.group(2), int(match.group(3)))
	subject.append(t)

subject.sort(lambda x,y: cmp(x[1], y[1]))

for f, t, d in subject:
	print '%(f)s %(d)4d %(t)s' % {'f': f, 'd': d, 't': t} 

------------------[ list.py ]------------------


利用しやすいように Zip で圧縮したものを以下のリンク先に置いておきます。

ダウンロードファイル list.zip
URL [ http://homepage.mac.com/yos_koyama/list.zip ]


実行結果


ターミナルの環境設定で下図の赤丸部分に注意してください。デフォルトの設定だと文字が汚い場合があります。
その場合は、ターミナルの環境設定を開き、テキストタブを選択し、'フォント' を Monaco 11 pt. 、'ボールドフォントを使用' のチェックを外してください。
次にウインドウタブを選択し、'ウインドウサイズ' を 列 80、行 30 に設定してください。
気に入らない場合は、いろいろ試してみてください。ただし、文字コードUTF-8 以外だと正しく動作しません。



5行目
connection = httplib.HTTPConnection( 'pc11.2ch.net' )

の URL: pc11.2ch.net は変更になる可能性があるので注意してください。

変更された URL は、拙作 Search2chBBS [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#se201 ] か bbsmenu.html [ http://menu.2ch.net/bbsmenu.html ] から判断できます。


プログラムを作るためには、リファレンスが必要なので

Python Programming Language -- Official Website
http://www.python.org/

の DOCUMENTATION から Download Current Documentation をクリックし

Download Python 2.5.2 Documentation
http://www.python.org/doc/2.5.2/download/

から HTML 版の Zip ファイル [ html-2.5.2.zip ] をダウンロードしました。

Global Module の httplib、re の使用方法も、ダウンロードしたファイル html-2.5.2.zip を展開して作成されたドキュメントを参考にしました。正しい使用方法なのか、あまり自信はありません。

Python入門
http://www.pythonweb.jp/tutorial/index.html

も参考になると思います。


簡単なプログラムなので理解しやすいと思います。大ざっぱに言えば、ブラウザで

http://pc11.2ch.net/mac/subject.txt

にアクセスするのと同様な動作を行っています。


2ch の仕様については、拙作

2ch Script version 0.2 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#2cs02 ]
2ch Script version 0.1 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#2cs01 ]
Search2chBBS version 0.1 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#se201 ]

の ReadMe やその中で紹介されている参考文献を参考にしてください。それほど複雑ではないと思います。


拙作、2ch Script version 0.2 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#2cs02 ] は頻繁に利用しているので、暇があれば Python で書き直してみたいですね!(2ch Script version 0.2は、sh、curlruby で作成されています。)