2011-01-20 14 views
6

多くのサーバーに移動するためのファイルがあります。今のところrsyncを使用していますが、私はbittorentを試してみたいと思います。Bittorentを使ってファイルを送受信するPythonライブラリを知っていますか?

私はPython bittorentクライアントであるDelugeのコードを勉強していますが、それはねじれを使用していて、まったく複雑です。あなたは何かの高さを知っていますか?

編集:私はFacebookがBittorentを使ってコードを展開していると読んだだけです。たぶん彼らはそれのためのライブラリを公開したが、私はそれを見つけることができません。それを聞いたことがありますか?

+2

http://code.google.com/p/python-libtorrent/が役立つ可能性があります。これは、C++のlibtorrentライブラリのPythonラッパーです。 – user225312

+0

それは洪水プロジェクトに含まれていて、現在は1000本のコードで作成されています。 –

答えて

5

私は間違いなくlibtorrent-rasterbarをお勧めします。 Pythonバインディングを持つC++ライブラリです。デリュージ、トランスミッション、ミロ、その他の多くのビットトレントクライアントにも同じ機能を提供します。

他のlibtorrent(rTorrentプロジェクトに含まれるもの)とは対照的に、この1つは現在開発中であり、DHT、メタデータ転送、ピアツーピア(PEXなどの独自のuTorrent拡張)。

APIは非常によく文書化されています。

#!/bin/python 
# Copyright Arvid Norberg 2008. Use, modification and distribution is 
# subject to the Boost Software License, Version 1.0. (See accompanying 
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 


import libtorrent as lt 
import time 
import sys 

ses = lt.session() 
ses.listen_on(6881, 6891) 

info = lt.torrent_info(sys.argv[1]) 
h = ses.add_torrent({'ti': info, 'save_path': './'}) 
print 'starting', h.name() 

while (not h.is_seed()): 
    s = h.status() 

    state_str = ['queued', 'checking', 'downloading metadata', 'downloading', \ 
     'finished', 'seeding', 'allocating', 'checking fastresume'] 
    print '\r%.2f%% complete (down: %.1f kb/s up: %.1f kB/s peers: %d) %s' % \ 
     (s.progress * 100, s.download_rate/1000, s.upload_rate/1000, \ 
     s.num_peers, state_str[s.state]), 
    sys.stdout.flush() 

    time.sleep(1) 

print h.name(), 'complete' 

次の完全に機能する簡単なクライアントの例からわかるように、あなたは基本的なプロトコルのすべてのビットを理解する必要はありませんが(もちろん、それはあなたが多くのことができます) PS Facebookは、オープンソースプロジェクト専用のページをhttp://developers.facebook.com/opensource/に持っています。ビットトレント実装はリストされていません。

+0

非常に便利です。ありがとうございます。 –

2

オリジナルのBitTorrentクライアントはPythonで書かれています。あなたはそれをチェックしましたか?

+1

これは高レベルから非常に遠いです。あなたがプロトコルを知らないなら、あなたは立ち往生しています。 –

関連する問題