Fix and beautify output from TorrentReactor

re.findall is looking for "seeders" while in fact the output shows "seeder", this is now working. Also, item.title.text has a prefix showing the category (eg. "[Movies - DVD-R]") which makes it uneasy to read in the results dialog, so this has been stripped off. Finally, the results are being rev sorted by seeds to promote the most popular entries.
This commit is contained in:
TheLegs 2013-12-04 01:36:50 +01:00
parent bb4b001fb6
commit dca825294e

View file

@ -1,8 +1,10 @@
import re import re
import socket import socket
from urllib2 import urlopen from urllib2 import urlopen
from operator import itemgetter
from BeautifulSoup import BeautifulSoup, BeautifulStoneSoup from BeautifulSoup import BeautifulSoup, BeautifulStoneSoup
socket.setdefaulttimeout(15) socket.setdefaulttimeout(15)
class Search: class Search:
@ -59,13 +61,15 @@ class TorrentReactor(Search):
f = urlopen(url) f = urlopen(url)
soup = BeautifulStoneSoup(f.read()) soup = BeautifulStoneSoup(f.read())
for item in soup.findAll('item'): for item in soup.findAll('item'):
(seeds, leechers) = re.findall('Status: (\d+) seeders, (\d+) leecher', item.description.text)[0] (seeds, leechers) = re.findall('Status: (\d+) seeder, (\d+) leecher', item.description.text)[0]
title = re.findall(r'\[(?:[^\]])*\] (.*)', item.title.text)[0]
torrents.append({ torrents.append({
'url': item.enclosure['url'], 'url': item.enclosure['url'],
'name': item.title.text, 'name': title,
'seeds': int(seeds), 'seeds': int(seeds),
'leechers': int(leechers), 'leechers': int(leechers),
}) })
torrents = sorted(torrents, key=itemgetter('seeds'), reverse=True)
return torrents return torrents
if __name__ == '__main__': if __name__ == '__main__':