logo

searx

My custom branche(s) on searx, a meta-search engine git clone https://hacktivis.me/git/searx.git
commit: 830f70a6bc2a6e0b7a78d0a13277b28f03c18504
parent 4e2dae30f013d8ef9fd6d22e3f01e38f13f13c11
Author: Thomas Pointhuber <thomas.pointhuber@gmx.at>
Date:   Sat, 10 Jan 2015 19:40:27 +0100

[enh] improve torrent results

Diffstat:

Msearx/engines/kickass.py31+++++++++++++++++++++++++++++++
Msearx/templates/oscar/result_templates/torrent.html16+++++++++++++---
2 files changed, 44 insertions(+), 3 deletions(-)

diff --git a/searx/engines/kickass.py b/searx/engines/kickass.py @@ -24,6 +24,7 @@ search_url = url + 'search/{search_term}/{pageno}/' # specific xpath variables magnet_xpath = './/a[@title="Torrent magnet link"]' +torrent_xpath = './/a[@title="Download torrent file"]' content_xpath = './/span[@class="font11px lightgrey block"]' @@ -60,6 +61,9 @@ def response(resp): method="text")) seed = result.xpath('.//td[contains(@class, "green")]/text()')[0] leech = result.xpath('.//td[contains(@class, "red")]/text()')[0] + filesize = result.xpath('.//td[contains(@class, "nobr")]/text()')[0] + filesize_multiplier = result.xpath('.//td[contains(@class, "nobr")]//span/text()')[0] + files = result.xpath('.//td[contains(@class, "center")][2]/text()')[0] # convert seed to int if possible if seed.isdigit(): @@ -73,7 +77,31 @@ def response(resp): else: leech = 0 + # convert filesize to byte if possible + try: + filesize = float(filesize) + + # convert filesize to byte + if filesize_multiplier == 'TB': + filesize = int(filesize * 1024*1024*1024*1024) + elif filesize_multiplier == 'GB': + filesize = int(filesize * 1024*1024*1024) + elif filesize_multiplier == 'MB': + filesize = int(filesize * 1024*1024) + elif filesize_multiplier == 'kb': + filesize = int(filesize * 1024) + except: + filesize = None + + # convert files to int if possible + if files.isdigit(): + files = int(files) + else: + files = None + magnetlink = result.xpath(magnet_xpath)[0].attrib['href'] + + torrentfile = result.xpath(torrent_xpath)[0].attrib['href'] # append result results.append({'url': href, @@ -81,7 +109,10 @@ def response(resp): 'content': content, 'seed': seed, 'leech': leech, + 'filesize': filesize, + 'files': files, 'magnetlink': magnetlink, + 'torrentfile':torrentfile, 'template': 'torrent.html'}) # return results sorted by seeder diff --git a/searx/templates/oscar/result_templates/torrent.html b/searx/templates/oscar/result_templates/torrent.html @@ -5,9 +5,19 @@ {% if result.publishedDate %}<time class="text-muted" datetime="{{ result.pubdate }}" >{{ result.publishedDate }}</time>{% endif %} <small><a class="text-info" href="https://web.archive.org/web/{{ result.url }}">{{ icon('link') }} {{ _('cached') }}</a></small> -<p class="result-content">{{ icon('transfer') }} {{ _('Seeder') }} <span class="badge">{{ result.seed }}</span>, {{ _('Leecher') }} <span class="badge">{{ result.leech }}</span> -<br/> -<a href="{{ result.magnetlink }}" class="magnetlink">{{ icon('magnet') }} magnet link</a></p> +<p class="result-content">{{ icon('transfer') }} {{ _('Seeder') }} <span class="badge">{{ result.seed }}</span> &bull; {{ _('Leecher') }} <span class="badge">{{ result.leech }}</span> +{% if result.filesize %}</br>{{ icon('floppy-disk') }} {{ _('Filesize') }} + <span class="badge"> + {% if result.filesize < 1024 %}{{ result.filesize }} Byte + {% elif result.filesize < 1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024) }} kb + {% elif result.filesize < 1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024) }} MB + {% elif result.filesize < 1024*1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024/1024) }} GB{% endif %} + </span>{% endif %} +{% if result.files %}</br>{{ icon('file') }} {{ _('Number of Files') }} <span class="badge">{{ result.files }}</span>{% endif %}</p> +<p class="result-content"> + <a href="{{ result.magnetlink }}" class="magnetlink">{{ icon('magnet') }} magnet link</a> + {% if result.torrentfile %}</br><a href="{{ result.torrentfile }}" class="torrentfile">{{ icon('download-alt') }} torrent file</a>{% endif %} +</p> {% if result.content %}<p class="result-content">{{ result.content|safe }}</p>{% endif %}