浏览代码

[enh] improve torrent results

Thomas Pointhuber 10 年前
父节点
当前提交
830f70a6bc
共有 2 个文件被更改,包括 44 次插入3 次删除
  1. 31
    0
      searx/engines/kickass.py
  2. 13
    3
      searx/templates/oscar/result_templates/torrent.html

+ 31
- 0
searx/engines/kickass.py 查看文件

24
 
24
 
25
 # specific xpath variables
25
 # specific xpath variables
26
 magnet_xpath = './/a[@title="Torrent magnet link"]'
26
 magnet_xpath = './/a[@title="Torrent magnet link"]'
27
+torrent_xpath = './/a[@title="Download torrent file"]'
27
 content_xpath = './/span[@class="font11px lightgrey block"]'
28
 content_xpath = './/span[@class="font11px lightgrey block"]'
28
 
29
 
29
 
30
 
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
         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
                         '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

+ 13
- 3
searx/templates/oscar/result_templates/torrent.html 查看文件

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>
9
-<br/>
10
-<a href="{{ result.magnetlink }}" class="magnetlink">{{ icon('magnet') }} magnet link</a></p>
8
+<p class="result-content">{{ icon('transfer') }} {{ _('Seeder') }} <span class="badge">{{ result.seed }}</span> &bull; {{ _('Leecher') }} <span class="badge">{{ result.leech }}</span>
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">
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