on master help sign in
[enh] improve torrent results
830f70aThomas Pointhuber
searx/engines/kickass.py+31
@@ -24,6 +24,7 @@ search_url = url + 'search/{search_term}/{pageno}/'
24
24
25# specific xpath variables
25# specific xpath variables
26magnet_xpath = './/a[@title="Torrent magnet link"]'
26magnet_xpath = './/a[@title="Torrent magnet link"]'
27+torrent_xpath = './/a[@title="Download torrent file"]'
27content_xpath = './/span[@class="font11px lightgrey block"]'
28content_xpath = './/span[@class="font11px lightgrey block"]'
28
29
29
30
@@ -60,6 +61,9 @@ def response(resp):
60 method="text"))
61 method="text"))
61 seed = result.xpath('.//td[contains(@class, "green")]/text()')[0]
62 seed = result.xpath('.//td[contains(@class, "green")]/text()')[0]
62 leech = result.xpath('.//td[contains(@class, "red")]/text()')[0]
63 leech = result.xpath('.//td[contains(@class, "red")]/text()')[0]
64+ filesize = result.xpath('.//td[contains(@class, "nobr")]/text()')[0]
65+ filesize_multiplier = result.xpath('.//td[contains(@class, "nobr")]//span/text()')[0]
66+ files = result.xpath('.//td[contains(@class, "center")][2]/text()')[0]
63
67
64 # convert seed to int if possible
68 # convert seed to int if possible
65 if seed.isdigit():
69 if seed.isdigit():
@@ -73,7 +77,31 @@ def response(resp):
73 else:
77 else:
74 leech = 0
78 leech = 0
75
79
80+ # convert filesize to byte if possible
81+ try:
82+ filesize = float(filesize)
83+
84+ # convert filesize to byte
85+ if filesize_multiplier == 'TB':
86+ filesize = int(filesize * 1024*1024*1024*1024)
87+ elif filesize_multiplier == 'GB':
88+ filesize = int(filesize * 1024*1024*1024)
89+ elif filesize_multiplier == 'MB':
90+ filesize = int(filesize * 1024*1024)
91+ elif filesize_multiplier == 'kb':
92+ filesize = int(filesize * 1024)
93+ except:
94+ filesize = None
95+
96+ # convert files to int if possible
97+ if files.isdigit():
98+ files = int(files)
99+ else:
100+ files = None
101+
76 magnetlink = result.xpath(magnet_xpath)[0].attrib['href']
102 magnetlink = result.xpath(magnet_xpath)[0].attrib['href']
103+
104+ torrentfile = result.xpath(torrent_xpath)[0].attrib['href']
77
105
78 # append result
106 # append result
79 results.append({'url': href,
107 results.append({'url': href,
@@ -81,7 +109,10 @@ def response(resp):
81 'content': content,
109 'content': content,
82 'seed': seed,
110 'seed': seed,
83 'leech': leech,
111 'leech': leech,
112+ 'filesize': filesize,
113+ 'files': files,
84 'magnetlink': magnetlink,
114 'magnetlink': magnetlink,
115+ 'torrentfile':torrentfile,
85 'template': 'torrent.html'})
116 'template': 'torrent.html'})
86
117
87 # return results sorted by seeder
118 # return results sorted by seeder
searx/templates/oscar/result_templates/torrent.html+13−3
@@ -5,9 +5,19 @@
5{% if result.publishedDate %}<time class="text-muted" datetime="{{ result.pubdate }}" >{{ result.publishedDate }}</time>{% endif %}
5{% if result.publishedDate %}<time class="text-muted" datetime="{{ result.pubdate }}" >{{ result.publishedDate }}</time>{% endif %}
6<small><a class="text-info" href="https://web.archive.org/web/{{ result.url }}">{{ icon('link') }} {{ _('cached') }}</a></small>
6<small><a class="text-info" href="https://web.archive.org/web/{{ result.url }}">{{ icon('link') }} {{ _('cached') }}</a></small>
7
7
8−<p class="result-content">{{ icon('transfer') }} {{ _('Seeder') }} <span class="badge">{{ result.seed }}</span>, {{ _('Leecher') }} <span class="badge">{{ result.leech }}</span>
8+<p class="result-content">{{ icon('transfer') }} {{ _('Seeder') }} <span class="badge">{{ result.seed }}</span> &bull; {{ _('Leecher') }} <span class="badge">{{ result.leech }}</span>
9−<br/>
9+{% if result.filesize %}</br>{{ icon('floppy-disk') }} {{ _('Filesize') }}
10+ <span class="badge">
11+ {% if result.filesize < 1024 %}{{ result.filesize }} Byte
12+ {% elif result.filesize < 1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024) }} kb
13+ {% elif result.filesize < 1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024) }} MB
14+ {% elif result.filesize < 1024*1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024/1024) }} GB{% endif %}
15+ </span>{% endif %}
16+{% if result.files %}</br>{{ icon('file') }} {{ _('Number of Files') }} <span class="badge">{{ result.files }}</span>{% endif %}</p>
17+<p class="result-content">
10−<a href="{{ result.magnetlink }}" class="magnetlink">{{ icon('magnet') }} magnet link</a></p>
18+ <a href="{{ result.magnetlink }}" class="magnetlink">{{ icon('magnet') }} magnet link</a>
19+ {% if result.torrentfile %}</br><a href="{{ result.torrentfile }}" class="torrentfile">{{ icon('download-alt') }} torrent file</a>{% endif %}
20+</p>
11
21
12{% if result.content %}<p class="result-content">{{ result.content|safe }}</p>{% endif %}
22{% if result.content %}<p class="result-content">{{ result.content|safe }}</p>{% endif %}
13
23