2009-11-05 13 views
7

मैंने बिट-टोरेंट विनिर्देश पढ़ा है और कई खोजों को किया है, यह पता लगाने की कोशिश कर रहा हूं कि मैं टोरेंट ट्रैकर से बीज/सहकर्मी/डाउनलोड किए गए डेटा कैसे प्राप्त कर सकता हूं (पायथन का उपयोग करके)। मैं टोरेंट की समस्या से जानकारी हैश की गणना कर सकता हूं, जो विभिन्न काम करने वाले धार अनुप्रयोगों द्वारा दी गई जानकारी हैश के साथ मेल खाता है।एक धार के लिए स्क्रैप यूआरएल की गणना कैसे करें

हालांकि

, जब मैं किस रूप में मैं में यूआरएल डाल पर निर्भर करता है पर नजर मैं या तो टाइमआउट (ट्रैकर काम कर रहा है) से जानकारी प्राप्त या खाली डेटा प्राप्त करने की कोशिश:

http://tracker.openbittorrent.com/scrape?info_hash=a8c482902b1c735de462479721b011dc7b3d3558 - समय समाप्त

मुझे बताया गया था कि यह 20 वर्ण लंबा होना चाहिए, इसलिए एक सबस्ट्रिंग लिया गया, लेकिन यह खाली डेटा देता है।

http://tracker.openbittorrent.com/scrape?info_hash=a8c482902b1c735de462 - d5: filesdee

मुझे लगता है कि मुझे लगता है मैं कैसे सांकेतिक शब्दों में बदलना या खरोंच URL के लिए infohash करना चाहिए के साथ कुछ गलत समझा है, लेकिन के लिए मुझे के जीवन को देखने नहीं कर सकते हैं।

उत्तर

6

आप info_hash के हेक्स-चरित्र प्रतिनिधित्व में गुजर रहे हैं। यह एक बाइनरी प्रतिनिधित्व होना चाहिए। यूआरएल उपयोग यूआरएल एन्कोडिंग में गंदा बाइट्स प्राप्त करने के लिए:

/scrape?info_hash=%A8%C4%82%90%2B%1Cs%5D%E4bG%97%21%B0%11%DC%7B%3D5X 

(मैं भी info_hash पैरामीटर में _ एन्कोडिंग ... नहीं है कि यह सही नहीं है से बचने की कोशिश करते हैं, लेकिन यह की तरह है बात मैं गंदगी के लिए कुछ लिखा-for-गति ट्रैकर उम्मीद करेंगे)

+1

पायथन 3 में, urllib.parse.quote (infohash) का उपयोग करें। पायथन 2 में, urllib.quote (infohash) का उपयोग करें। – Mead

+1

यदि आपके पास केवल इन्फोहाश का हेक्स संस्करण है, तो इसे वापस 'binascii.a2b_hex (हेक्सिनफोहाश)' के साथ बाइनरी में परिवर्तित करें। आपको 'binascii.a2b_hex (hexinfohash.encode (" utf-8 ")) को कॉल करने की आवश्यकता हो सकती है) यदि आप पाइथन 3 में हैं। – Mead

3

मेरे समाधान:।

import binascii 

binary_info_hash = binascii.unhexlify('79b193385de5b967175ca86073670fce0e45a324') 
print binary_info_hash 

परिणाम:

y%B1%938%5D%E5%B9g%17%5C%A8%60sg%0F%CE%0EE%A3%24 

अधिक जानकारी: binascii.unhexlify