では、bencode.pyを使って、torrentファイル(メタインフォ・ファイル)を解読します。
適当なtorrentファイルをダウンロードして、bencode.pyと同じフォルダに入れて下さい。
この例では、firefoxのtorrentファイルを使います(http://bittorrent.mozilla.org/)。
bencode.pyのあるフォルダから、pythonの対話モードを起動します。
[tibook:python/BitTorrent-3.4.2/BitTorrent] psyto% python
Python 2.3.3 (#2, Dec 23 2003, 22:56:29)
[GCC 3.1 20020420 (prerelease)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
bencode.pyのインポート
>>> import bencode
firefox-1.0.1-source.tar.bz2.torrentファイルの読み込み
>>> encoded_data = open('firefox-1.0.1-source.tar.bz2.torrent').read()
bdecode関数を使って、bencodeされているデータを解読
>>> decoded_data = bencode.bdecode(encoded_data)
必要のなくなったファイルハンドルは必ず閉じましょう
>>> encoded_data.close()
ディクショナリの中身を表示
>>> decoded_data
{'creation date': 1109285236, 'announce': 'http://bittorrent.mozilla.org:6969/announce', 'info': {'length': 32671529, 'piece length': 262144, 'name': 'firefox-1.0.1-source.tar.bz2', 'pieces': '\xb8\x83vL\t\xbc\x00\x7f\xf8\x7f\xb3..........'}}
メタインフォ・ファイルのキーは、'announce'と'info'(プロトコル仕様書を参照のこと)。
>>> decoded_data['announce']
'http://bittorrent.mozilla.org:6969/announce'
キー'info'のバリューはディクショナリ
>>> decoded_data['info']['name']
'firefox-1.0.1-source.tar.bz2'
>>> decoded_data['info']['piece length']
262144
上記で感覚がつかめれば、第一階層にある、btshowmetainfo.pyを自力で読めると思います。変数の名前はあえて同じにしてません。