Example #1
0
 def return_info(self, file_torrent):
     if file_torrent.startswith('http://'):
         try:
             info_torrent = bencode.decode(urlopen(file_torrent).read())
         except:
             import ipdb; ipdb.set_trace()
     else:
         info_torrent = bencode.decode(open(file_torrent).read()) 
     return info_torrent
Example #2
0
 def scrape_trackers(self, info, info_torrent):
     query = urlencode( [('info_hash', info)] )
     complete, downloaded, incomplete = [], [], []
     try:
         announces = info_torrent['announce-list']
     except KeyError:
         announces = []
         announces.append(info_torrent['announce'])
     for tracker in announces:
         scrape_url = tracker.replace('announce', 'scrape')
         url = scrape_url + '?' + query
         try: 
             response = urlopen(url, timeout=5).read()
             resp = bencode.decode(response)
             try:
                 torrent_scraped = resp['files'][resp['files'].keys()[0]]
                 complete.append(torrent_scraped['complete'])
                 downloaded.append(torrent_scraped['downloaded'])
                 incomplete.append(torrent_scraped['incomplete'])
             except IndexError:
                 pass
         except URLError:
             pass
     complete.sort()
     downloaded.sort()
     incomplete.sort()
     if not complete: complete = [0]
     if not downloaded: downloaded = [0] 
     if not incomplete: incomplete = [0] 
     return {
         'complete' :  complete[-1],
         'downloaded': downloaded[-1],
         'incomplete': incomplete[-1]
     }