2012-11-28 30 views
2

我試圖連接到一個洪流跟蹤器,以接收對等列表來播放bit洪流,但是我無法形成正確的GET請求。Torrent Tracker info hash GET請求 - Python

據我所知,我必須從.torrent文件中獲取bencoded'info'部分的20字節SHA1哈希。我使用下面的代碼:

h = hashlib.new('sha1') 
h.update(bencode.bencode(meta_dict['info'])) 
info_hash = h.digest() 

這就是我卡住的地方。我不知道如何創建適當的url編碼info_hash作爲參數粘貼到URL字符串中。

我相信它涉及urllib.urlencode和urllib.quote的一些組合,但是我的嘗試目前還沒有奏效。

+0

urllib.quote()應該是你所需要的... –

+1

罕見的情況下,種子有一個信息字典鍵不字典順序排序,或者包含重複鍵。在這種情況下,您對它的重新編碼很可能會產生與.torrent文件不同的字節序列,也會產生錯誤的散列。爲了解決這個問題,請將原始範圍散列在與信息字典對應的.torrent文件中。 – Arvid

回答

0

我認爲urllib.quote_plus()是你所需要的。

1

好一點,但可能會幫助別人。

使用模塊requests通過它自己對url進行編碼。首先你需要創建一個帶參數的字典(info_hash,peer_id等)。然後,你只需要做一個GET請求

response = requests.get(tracker_url, params=params)