2011-01-20 22 views
6

मेरे पास बहुत सारे सर्वरों पर जाने के लिए बड़ी फ़ाइलें हैं। अभी के लिए हम rsync का उपयोग करते हैं, लेकिन मैं bittorent के साथ प्रयोग करना चाहता हूँ।क्या आप बिट्टोरेंट का उपयोग करके फ़ाइलों को भेजने/प्राप्त करने के लिए पाइथन libs जानते हैं?

मैं एक पाइथन बिट्टोरेंट क्लाइंट के डेल्यूज के कोड का अध्ययन कर रहा हूं लेकिन यह मुड़ता है और पूरी तरह से जटिल है। क्या आप कुछ हाइट लेवल जानते हैं?

संपादित करें: मैंने अभी पढ़ा है कि फेसबुक बिट्टोरेंट का उपयोग करके कोड परिनियोजन करता है। शायद उन्होंने इसके लिए अपनी lib प्रकाशित की, लेकिन मुझे यह नहीं मिल रहा है। कभी इसके बारे में सुना?

+2

http://code.google.com/p/python-libtorrent/ सहायक हो सकता है। यह सी ++ libtorrent पुस्तकालय के चारों ओर एक पायथन आवरण है। – user225312

+0

इसे जलप्रवाह परियोजना में शामिल किया गया है और अब कुकबुक के साथ कोड की 1000 लाइनों में खींचा गया है। –

उत्तर

5

मैं निश्चित रूप से libtorrent-rasterbar की अनुशंसा करता हूं। यह पायथन बाइंडिंग के साथ एक सी ++ लाइब्रेरी है। वही है जो जलप्रलय, ट्रांसमिशन, मिरो और कई अन्य बिटरोरेंट ग्राहकों को शक्ति देता है।

अन्य libtorrent (जो कि rtorrent प्रोजेक्ट का हिस्सा है) के विपरीत, यह सक्रिय विकास में है और सभी आधुनिक प्रोटोकॉल एक्सटेंशन, जैसे डीएचटी, मेटाडेटा ट्रांसफर और यहां तक ​​कि कुछ स्वामित्व वाले यूटोरेंट एक्सटेंशन जैसे सहकर्मी विनिमय (PEX)।

एपीआई बहुत अच्छी तरह से प्रलेखित है।

#!/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' 

:

आप निम्नलिखित पूरी तरह से कार्य सरल ग्राहक उदाहरण से देख सकते हैं, आप अंतर्निहित प्रोटोकॉल के हर बिट को समझने की जरूरत नहीं है (बेशक, यह एक बहुत जब आप ऐसा करेंगे मदद करता है) पुनश्च फेसबुक के पास उनके ओपनसोर्स परियोजनाओं के लिए http://developers.facebook.com/opensource/ पर एक समर्पित पृष्ठ है। सूचीबद्ध कोई bittorrent कार्यान्वयन नहीं है।

+0

बहुत उपयोगी। धन्यवाद। –

2

मूल बिटटोरेंट क्लाइंट पायथन में लिखा गया है। क्या आपने इसे चेक आउट किया है?

+1

यह हाइट स्तर से बहुत दूर है। यदि आप प्रोटोकॉल को नहीं जानते हैं, तो आप अटक गए हैं। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^