on master help sign in
[mod] restore btdigg engine as btdig.com (#1515)
eb182dfvolth
searx/engines/btdigg.py+16−23
@@ -1,7 +1,7 @@
1"""
1"""
2 BTDigg (Videos, Music, Files)
2 BTDigg (Videos, Music, Files)
3
3
4− @website https://btdigg.org
4+ @website https://btdig.com
5 @provide-api yes (on demand)
5 @provide-api yes (on demand)
6
6
7 @using-api no
7 @using-api no
@@ -21,7 +21,7 @@ categories = ['videos', 'music', 'files']
21paging = True
21paging = True
22
22
23# search-url
23# search-url
24−url = 'https://btdigg.org'
24+url = 'https://btdig.com'
25search_url = url + '/search?q={search_term}&p={pageno}'
25search_url = url + '/search?q={search_term}&p={pageno}'
26
26
27
27
@@ -39,7 +39,7 @@ def response(resp):
39
39
40 dom = html.fromstring(resp.text)
40 dom = html.fromstring(resp.text)
41
41
42− search_res = dom.xpath('//div[@id="search_res"]/table/tr')
42+ search_res = dom.xpath('//div[@class="one_result"]')
43
43
44 # return empty array if nothing is found
44 # return empty array if nothing is found
45 if not search_res:
45 if not search_res:
@@ -47,46 +47,39 @@ def response(resp):
47
47
48 # parse results
48 # parse results
49 for result in search_res:
49 for result in search_res:
50− link = result.xpath('.//td[@class="torrent_name"]//a')[0]
50+ link = result.xpath('.//div[@class="torrent_name"]//a')[0]
51 href = urljoin(url, link.attrib.get('href'))
51 href = urljoin(url, link.attrib.get('href'))
52 title = extract_text(link)
52 title = extract_text(link)
53− content = extract_text(result.xpath('.//pre[@class="snippet"]')[0])
54− content = "<br />".join(content.split("\n"))
55
53
56− filesize = result.xpath('.//span[@class="attr_val"]/text()')[0].split()[0]
54+ excerpt = result.xpath('.//div[@class="torrent_excerpt"]')[0]
57− filesize_multiplier = result.xpath('.//span[@class="attr_val"]/text()')[0].split()[1]
55+ content = html.tostring(excerpt, encoding='unicode', method='text', with_tail=False)
58− files = result.xpath('.//span[@class="attr_val"]/text()')[1]
56+ # it is better to emit <br/> instead of |, but html tags are verboten
59− seed = result.xpath('.//span[@class="attr_val"]/text()')[2]
57+ content = content.strip().replace('\n', ' | ')
58+ content = ' '.join(content.split())
60
59
61− # convert seed to int if possible
60+ filesize = result.xpath('.//span[@class="torrent_size"]/text()')[0].split()[0]
62− if seed.isdigit():
61+ filesize_multiplier = result.xpath('.//span[@class="torrent_size"]/text()')[0].split()[1]
63− seed = int(seed)
62+ files = (result.xpath('.//span[@class="torrent_files"]/text()') or ['1'])[0]
64− else:
65− seed = 0
66−
67− leech = 0
68
63
69 # convert filesize to byte if possible
64 # convert filesize to byte if possible
70 filesize = get_torrent_size(filesize, filesize_multiplier)
65 filesize = get_torrent_size(filesize, filesize_multiplier)
71
66
72 # convert files to int if possible
67 # convert files to int if possible
73− if files.isdigit():
68+ try:
74 files = int(files)
69 files = int(files)
75− else:
70+ except:
76 files = None
71 files = None
77
72
78− magnetlink = result.xpath('.//td[@class="ttth"]//a')[0].attrib['href']
73+ magnetlink = result.xpath('.//div[@class="torrent_magnet"]//a')[0].attrib['href']
79
74
80 # append result
75 # append result
81 results.append({'url': href,
76 results.append({'url': href,
82 'title': title,
77 'title': title,
83 'content': content,
78 'content': content,
84− 'seed': seed,
85− 'leech': leech,
86 'filesize': filesize,
79 'filesize': filesize,
87 'files': files,
80 'files': files,
88 'magnetlink': magnetlink,
81 'magnetlink': magnetlink,
89 'template': 'torrent.html'})
82 'template': 'torrent.html'})
90
83
91 # return results sorted by seeder
84 # return results sorted by seeder
92− return sorted(results, key=itemgetter('seed'), reverse=True)
85+ return results
searx/settings.yml+4
@@ -115,6 +115,10 @@ engines:
115 disabled : True
115 disabled : True
116 shortcut : bb
116 shortcut : bb
117
117
118+ - name : btdigg
119+ engine : btdigg
120+ shortcut : bt
121+
118 - name : ccc-tv
122 - name : ccc-tv
119 engine : xpath
123 engine : xpath
120 paging : False
124 paging : False
searx/templates/courgette/result_templates/torrent.html+1−1
@@ -4,7 +4,7 @@
4 {% endif %}
4 {% endif %}
5 <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
5 <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
6 {% if result.content %}<span class="content">{{ result.content|safe }}</span><br />{% endif %}
6 {% if result.content %}<span class="content">{{ result.content|safe }}</span><br />{% endif %}
7− <span class="stats">{{ _('Seeder') }} : {{ result.seed }}, {{ _('Leecher') }} : {{ result.leech }}</span><br />
7+ {% if result.seed %}<span class="stats">{{ _('Seeder') }} : {{ result.seed }}, {{ _('Leecher') }} : {{ result.leech }}</span><br />{% endif %}
8 <span>
8 <span>
9 {% if result.magnetlink %}<a href="{{ result.magnetlink }}" class="magnetlink">{{ _('magnet link') }}</a>{% endif %}
9 {% if result.magnetlink %}<a href="{{ result.magnetlink }}" class="magnetlink">{{ _('magnet link') }}</a>{% endif %}
10 {% if result.torrentfile %}<a href="{{ result.torrentfile }}" class="torrentfile" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ _('torrent file') }}</a>{% endif %}
10 {% if result.torrentfile %}<a href="{{ result.torrentfile }}" class="torrentfile" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ _('torrent file') }}</a>{% endif %}
searx/templates/legacy/result_templates/torrent.html+1−1
@@ -8,6 +8,6 @@
8 <p>
8 <p>
9 {% if result.magnetlink %}<a href="{{ result.magnetlink }}" class="magnetlink">{{ _('magnet link') }}</a>{% endif %}
9 {% if result.magnetlink %}<a href="{{ result.magnetlink }}" class="magnetlink">{{ _('magnet link') }}</a>{% endif %}
10 {% if result.torrentfile %}<a href="{{ result.torrentfile }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="torrentfile">{{ _('torrent file') }}</a>{% endif %} -
10 {% if result.torrentfile %}<a href="{{ result.torrentfile }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="torrentfile">{{ _('torrent file') }}</a>{% endif %} -
11− <span class="stats">{{ _('Seeder') }} : {{ result.seed }}, {{ _('Leecher') }} : {{ result.leech }}</span>
11+ {% if result.seed %}<span class="stats">{{ _('Seeder') }} : {{ result.seed }}, {{ _('Leecher') }} : {{ result.leech }}</span>{% endif %}
12 </p>
12 </p>
13</div>
13</div>
searx/templates/oscar/result_templates/torrent.html+1−1
@@ -3,7 +3,7 @@
3{{ result_header(result, favicons) }}
3{{ result_header(result, favicons) }}
4{{ result_sub_header(result) }}
4{{ result_sub_header(result) }}
5
5
6−<p class="result-content">{{ icon('transfer') }} {{ _('Seeder') }} <span class="badge">{{ result.seed }}</span> &bull; {{ _('Leecher') }} <span class="badge">{{ result.leech }}</span>
6+{% if result.seed %}<p class="result-content">{{ icon('transfer') }} {{ _('Seeder') }} <span class="badge">{{ result.seed }}</span> &bull; {{ _('Leecher') }} <span class="badge">{{ result.leech }}</span>{% endif %}
7{% if result.filesize %}<br />{{ icon('floppy-disk') }} {{ _('Filesize') }}
7{% if result.filesize %}<br />{{ icon('floppy-disk') }} {{ _('Filesize') }}
8 <span class="badge">
8 <span class="badge">
9 {% if result.filesize < 1024 %}{{ result.filesize }} {{ _('Bytes') }}
9 {% if result.filesize < 1024 %}{{ result.filesize }} {{ _('Bytes') }}
tests/unit/engines/test_btdigg.py+71−343
@@ -14,7 +14,7 @@ class TestBtdiggEngine(SearxTestCase):
14 params = btdigg.request(query, dicto)
14 params = btdigg.request(query, dicto)
15 self.assertIn('url', params)
15 self.assertIn('url', params)
16 self.assertIn(query, params['url'])
16 self.assertIn(query, params['url'])
17− self.assertIn('btdigg.org', params['url'])
17+ self.assertIn('btdig.com', params['url'])
18
18
19 def test_response(self):
19 def test_response(self):
20 self.assertRaises(AttributeError, btdigg.response, None)
20 self.assertRaises(AttributeError, btdigg.response, None)
@@ -26,359 +26,87 @@ class TestBtdiggEngine(SearxTestCase):
26 self.assertEqual(btdigg.response(response), [])
26 self.assertEqual(btdigg.response(response), [])
27
27
28 html = u"""
28 html = u"""
29− <div id="search_res">
29+ <div class="one_result" style="display:table-row;background-color:#e8e8e8">
30− <table>
30+ <div style="display:table-cell;color:rgb(0, 0, 0)">
31− <tr>
31+ <div style="display:table">
32− <td class="idx">1</td>
32+ <div style="display:table-row">
33− <td>
34− <table class="torrent_name_tbl">
35− <tr>
36− <td class="torrent_name">
33+ <div class="torrent_name" style="display:table-cell">
37− <a href="/url">Should be the title</a>
34+ <a style="color:rgb(0, 0, 204);text-decoration:underline;font-size:150%"
38− </td>
35+ href="http://btdig.com/a72f35b7ee3a10928f02bb799e40ae5db701ed1c/pdf?q=pdf&amp;p=1&amp;order=0"
39− </tr>
36+ >3.9GBdeLibrosByHuasoFromHell(3de4)</a>
37+ </div>
38+ </div>
39+ </div>
40− </table>
40+ <div style="display:table">
41− <table class="torrent_name_tbl">
41+ <div style="display:table-row">
42− <tr>
42+ <div style="display:table-cell">
43− <td class="ttth">
43+ <span class="torrent_files" style="color:#666;padding-left:10px">4217</span> files <span
44− <a onclick="fclck(this.href)" href="magnet:?xt=urn:btih:magnet&amp;dn=Test"
44+ class="torrent_size" style="color:#666;padding-left:10px">1 GB</span><span
45− title="Télécharger des liens Magnet">[magnet]</a>
45+ class="torrent_age" style="color:rgb(0, 102, 0);padding-left:10px;margin: 0px 4px"
46− </td>
46+ >found 3 years ago</span>
47− <td class="ttth">
47+ </div>
48− <a href="https://btcloud.io/manager?cmd=add&amp;info_hash=hash"
48+ </div>
49− target="_blank" title="Ajouter à BTCloud">[cloud]</a>
49+ </div>
50− </td>
50+ <div style="display:table;width:100%;padding:10px">
51− <td>
51+ <div style="display:table-row">
52− <span class="attr_name">Taille:</span>
52+ <div class="torrent_magnet" style="display:table-cell">
53− <span class="attr_val">8 B</span>
53+ <div class="fa fa-magnet" style="color:#cc0000">
54− </td>
54+ <a href="magnet:?xt=urn:btih:a72f35b7ee3a10928f02bb799e40ae5db701ed1c&amp;dn=3.9GBdeLibrosBy..."
55− <td>
55+ title="Download via magnet-link"> magnet:?xt=urn:btih:a72f35b7ee...</a>
56− <span class="attr_name">Fichiers:</span>
56+ </div>
57− <span class="attr_val">710</span>
57+ </div>
58− </td>
58+ <div style="display:table-cell;color:rgb(0, 0, 0);text-align:right">
59− <td>
59+ <span style="color:rgb(136, 136, 136);margin: 0px 0px 0px 4px"></span><span
60− <span class="attr_name">Téléchargements:</span>
60+ style="color:rgb(0, 102, 0);margin: 0px 4px">found 3 years ago</span>
61− <span class="attr_val">5</span>
61+ </div>
62− </td>
62+ </div>
63− <td>
63+ </div>
64− <span class="attr_name">Temps:</span>
64+ <div class="torrent_excerpt" style="display:table;padding:10px;white-space:nowrap">
65− <span class="attr_val">417.8&nbsp;jours</span>
65+ <div class="fa fa-folder-open" style="padding-left:0em"> 3.9GBdeLibrosByHuasoFromHell(3de4)</div><br/>
66− </td>
66+ <div class="fa fa-folder-open" style="padding-left:1em"> Libros H-Z</div><br/>
67− <td>
67+ <div class="fa fa-folder-open" style="padding-left:2em"> H</div><br/><div class="fa fa-file-archive-o"
68− <span class="attr_name">Dernière&nbsp;mise&nbsp;à&nbsp;jour:</span>
68+ style="padding-left:3em"> H.H. Hollis - El truco de la espada-<b
69− <span class="attr_val">5.3&nbsp;jours</span>
69+ style="color:red; background-color:yellow">pdf</b>.zip</div><span
70− </td>
70+ style="color:#666;padding-left:10px">17 KB</span><br/>
71− <td>
71+ <div class="fa fa-file-archive-o" style="padding-left:3em"> Hagakure - El Libro del Samurai-<b
72− <span class="attr_name">Faux:</span>
72+ style="color:red; background-color:yellow">pdf</b>.zip</div><span
73− <span class="attr_val">Aucun</span>
73+ style="color:#666;padding-left:10px">95 KB</span><br/>
74− </td>
74+ <div class="fa fa-folder-open" style="padding-left:3em"> Hamsun, Knut (1859-1952)</div><br/>
75− </tr>
75+ <div class="fa fa-file-archive-o" style="padding-left:4em"> Hamsun, Knut - Hambre-<b
76− </table>
76+ style="color:red; background-color:yellow">pdf</b>.zip</div><span
77− <pre class="snippet">
77+ style="color:#666;padding-left:10px">786 KB</span><br/>
78− Content
78+ <div class="fa fa-plus-circle"><a
79− </pre>
79+ href="http://btdig.com/a72f35b7ee3a10928f02bb799e40ae5db701ed1c/pdf?q=pdf&amp;p=1&amp;order=0"
80− </td>
80+ > 4214 hidden files<span style="color:#666;padding-left:10px">1 GB</span></a></div>
81− </tr>
81+ </div>
82− </table>
82+ </div>
83 </div>
83 </div>
84 """
84 """
85 response = mock.Mock(text=html.encode('utf-8'))
85 response = mock.Mock(text=html.encode('utf-8'))
86 results = btdigg.response(response)
86 results = btdigg.response(response)
87 self.assertEqual(type(results), list)
87 self.assertEqual(type(results), list)
88 self.assertEqual(len(results), 1)
88 self.assertEqual(len(results), 1)
89− self.assertEqual(results[0]['title'], 'Should be the title')
89+ self.assertEqual(results[0]['title'], '3.9GBdeLibrosByHuasoFromHell(3de4)')
90− self.assertEqual(results[0]['url'], 'https://btdigg.org/url')
90+ self.assertEqual(results[0]['url'],
91+ 'http://btdig.com/a72f35b7ee3a10928f02bb799e40ae5db701ed1c/pdf?q=pdf&p=1&order=0')
91− self.assertEqual(results[0]['content'], 'Content')
92+ self.assertEqual(results[0]['content'],
92− self.assertEqual(results[0]['seed'], 5)
93+ '3.9GBdeLibrosByHuasoFromHell(3de4) | ' +
93− self.assertEqual(results[0]['leech'], 0)
94+ 'Libros H-Z | ' +
95+ 'H H.H. Hollis - El truco de la espada-pdf.zip17 KB | ' +
96+ 'Hagakure - El Libro del Samurai-pdf.zip95 KB | ' +
97+ 'Hamsun, Knut (1859-1952) | Hamsun, Knut - Hambre-pdf.zip786 KB | ' +
98+ '4214 hidden files1 GB')
94− self.assertEqual(results[0]['filesize'], 8)
99+ self.assertEqual(results[0]['filesize'], 1 * 1024 * 1024 * 1024)
95− self.assertEqual(results[0]['files'], 710)
100+ self.assertEqual(results[0]['files'], 4217)
96− self.assertEqual(results[0]['magnetlink'], 'magnet:?xt=urn:btih:magnet&dn=Test')
101+ self.assertEqual(results[0]['magnetlink'],
102+ 'magnet:?xt=urn:btih:a72f35b7ee3a10928f02bb799e40ae5db701ed1c&dn=3.9GBdeLibrosBy...')
97
103
98 html = """
104 html = """
99− <div id="search_res">
105+ <div style="display:table-row;background-color:#e8e8e8">
100− <table>
101− </table>
102− </div>
103− """
104− response = mock.Mock(text=html.encode('utf-8'))
105− results = btdigg.response(response)
106− self.assertEqual(type(results), list)
107− self.assertEqual(len(results), 0)
108
106
109− html = u"""
110− <div id="search_res">
111− <table>
112− <tr>
113− <td class="idx">1</td>
114− <td>
115− <table class="torrent_name_tbl">
116− <tr>
117− <td class="torrent_name">
118− <a href="/url">Should be the title</a>
119− </td>
120− </tr>
121− </table>
122− <table class="torrent_name_tbl">
123− <tr>
124− <td class="ttth">
125− <a onclick="fclck(this.href)" href="magnet:?xt=urn:btih:magnet&amp;dn=Test"
126− title="Télécharger des liens Magnet">[magnet]</a>
127− </td>
128− <td class="ttth">
129− <a href="https://btcloud.io/manager?cmd=add&amp;info_hash=hash"
130− target="_blank" title="Ajouter à BTCloud">[cloud]</a>
131− </td>
132− <td>
133− <span class="attr_name">Taille:</span>
134− <span class="attr_val">1 KB</span>
135− </td>
136− <td>
137− <span class="attr_name">Fichiers:</span>
138− <span class="attr_val">710</span>
139− </td>
140− <td>
141− <span class="attr_name">Téléchargements:</span>
142− <span class="attr_val">5</span>
143− </td>
144− <td>
145− <span class="attr_name">Temps:</span>
146− <span class="attr_val">417.8&nbsp;jours</span>
147− </td>
148− <td>
149− <span class="attr_name">Dernière&nbsp;mise&nbsp;à&nbsp;jour:</span>
150− <span class="attr_val">5.3&nbsp;jours</span>
151− </td>
152− <td>
153− <span class="attr_name">Faux:</span>
154− <span class="attr_val">Aucun</span>
155− </td>
156− </tr>
157− </table>
158− <pre class="snippet">
159− Content
160− </pre>
161− </td>
162− </tr>
163− <tr>
164− <td class="idx">1</td>
165− <td>
166− <table class="torrent_name_tbl">
167− <tr>
168− <td class="torrent_name">
169− <a href="/url">Should be the title</a>
170− </td>
171− </tr>
172− </table>
173− <table class="torrent_name_tbl">
174− <tr>
175− <td class="ttth">
176− <a onclick="fclck(this.href)" href="magnet:?xt=urn:btih:magnet&amp;dn=Test"
177− title="Télécharger des liens Magnet">[magnet]</a>
178− </td>
179− <td class="ttth">
180− <a href="https://btcloud.io/manager?cmd=add&amp;info_hash=hash"
181− target="_blank" title="Ajouter à BTCloud">[cloud]</a>
182− </td>
183− <td>
184− <span class="attr_name">Taille:</span>
185− <span class="attr_val">1 MB</span>
186− </td>
187− <td>
188− <span class="attr_name">Fichiers:</span>
189− <span class="attr_val">a</span>
190− </td>
191− <td>
192− <span class="attr_name">Téléchargements:</span>
193− <span class="attr_val">4</span>
194− </td>
195− <td>
196− <span class="attr_name">Temps:</span>
197− <span class="attr_val">417.8&nbsp;jours</span>
198− </td>
199− <td>
200− <span class="attr_name">Dernière&nbsp;mise&nbsp;à&nbsp;jour:</span>
201− <span class="attr_val">5.3&nbsp;jours</span>
202− </td>
203− <td>
204− <span class="attr_name">Faux:</span>
205− <span class="attr_val">Aucun</span>
206− </td>
207− </tr>
208− </table>
209− <pre class="snippet">
210− Content
211− </pre>
212− </td>
213− </tr>
214− <tr>
215− <td class="idx">1</td>
216− <td>
217− <table class="torrent_name_tbl">
218− <tr>
219− <td class="torrent_name">
220− <a href="/url">Should be the title</a>
221− </td>
222− </tr>
223− </table>
224− <table class="torrent_name_tbl">
225− <tr>
226− <td class="ttth">
227− <a onclick="fclck(this.href)" href="magnet:?xt=urn:btih:magnet&amp;dn=Test"
228− title="Télécharger des liens Magnet">[magnet]</a>
229− </td>
230− <td class="ttth">
231− <a href="https://btcloud.io/manager?cmd=add&amp;info_hash=hash"
232− target="_blank" title="Ajouter à BTCloud">[cloud]</a>
233− </td>
234− <td>
235− <span class="attr_name">Taille:</span>
236− <span class="attr_val">1 GB</span>
237− </td>
238− <td>
239− <span class="attr_name">Fichiers:</span>
240− <span class="attr_val">710</span>
241− </td>
242− <td>
243− <span class="attr_name">Téléchargements:</span>
244− <span class="attr_val">3</span>
245− </td>
246− <td>
247− <span class="attr_name">Temps:</span>
248− <span class="attr_val">417.8&nbsp;jours</span>
249− </td>
250− <td>
251− <span class="attr_name">Dernière&nbsp;mise&nbsp;à&nbsp;jour:</span>
252− <span class="attr_val">5.3&nbsp;jours</span>
253− </td>
254− <td>
255− <span class="attr_name">Faux:</span>
256− <span class="attr_val">Aucun</span>
257− </td>
258− </tr>
259− </table>
260− <pre class="snippet">
261− Content
262− </pre>
263− </td>
264− </tr>
265− <tr>
266− <td class="idx">1</td>
267− <td>
268− <table class="torrent_name_tbl">
269− <tr>
270− <td class="torrent_name">
271− <a href="/url">Should be the title</a>
272− </td>
273− </tr>
274− </table>
275− <table class="torrent_name_tbl">
276− <tr>
277− <td class="ttth">
278− <a onclick="fclck(this.href)" href="magnet:?xt=urn:btih:magnet&amp;dn=Test"
279− title="Télécharger des liens Magnet">[magnet]</a>
280− </td>
281− <td class="ttth">
282− <a href="https://btcloud.io/manager?cmd=add&amp;info_hash=hash"
283− target="_blank" title="Ajouter à BTCloud">[cloud]</a>
284− </td>
285− <td>
286− <span class="attr_name">Taille:</span>
287− <span class="attr_val">1 TB</span>
288− </td>
289− <td>
290− <span class="attr_name">Fichiers:</span>
291− <span class="attr_val">710</span>
292− </td>
293− <td>
294− <span class="attr_name">Téléchargements:</span>
295− <span class="attr_val">2</span>
296− </td>
297− <td>
298− <span class="attr_name">Temps:</span>
299− <span class="attr_val">417.8&nbsp;jours</span>
300− </td>
301− <td>
302− <span class="attr_name">Dernière&nbsp;mise&nbsp;à&nbsp;jour:</span>
303− <span class="attr_val">5.3&nbsp;jours</span>
304− </td>
305− <td>
306− <span class="attr_name">Faux:</span>
307− <span class="attr_val">Aucun</span>
308− </td>
309− </tr>
310− </table>
311− <pre class="snippet">
312− Content
313− </pre>
314− </td>
315− </tr>
316− <tr>
317− <td class="idx">1</td>
318− <td>
319− <table class="torrent_name_tbl">
320− <tr>
321− <td class="torrent_name">
322− <a href="/url">Should be the title</a>
323− </td>
324− </tr>
325− </table>
326− <table class="torrent_name_tbl">
327− <tr>
328− <td class="ttth">
329− <a onclick="fclck(this.href)" href="magnet:?xt=urn:btih:magnet&amp;dn=Test"
330− title="Télécharger des liens Magnet">[magnet]</a>
331− </td>
332− <td class="ttth">
333− <a href="https://btcloud.io/manager?cmd=add&amp;info_hash=hash"
334− target="_blank" title="Ajouter à BTCloud">[cloud]</a>
335− </td>
336− <td>
337− <span class="attr_name">Taille:</span>
338− <span class="attr_val">a TB</span>
339− </td>
340− <td>
341− <span class="attr_name">Fichiers:</span>
342− <span class="attr_val">710</span>
343− </td>
344− <td>
345− <span class="attr_name">Téléchargements:</span>
346− <span class="attr_val">z</span>
347− </td>
348− <td>
349− <span class="attr_name">Temps:</span>
350− <span class="attr_val">417.8&nbsp;jours</span>
351− </td>
352− <td>
353− <span class="attr_name">Dernière&nbsp;mise&nbsp;à&nbsp;jour:</span>
354− <span class="attr_val">5.3&nbsp;jours</span>
355− </td>
356− <td>
357− <span class="attr_name">Faux:</span>
358− <span class="attr_val">Aucun</span>
359− </td>
360− </tr>
361− </table>
362− <pre class="snippet">
363− Content
364− </pre>
365− </td>
366− </tr>
367− </table>
368 </div>
107 </div>
369 """
108 """
370 response = mock.Mock(text=html.encode('utf-8'))
109 response = mock.Mock(text=html.encode('utf-8'))
371 results = btdigg.response(response)
110 results = btdigg.response(response)
372 self.assertEqual(type(results), list)
111 self.assertEqual(type(results), list)
373− self.assertEqual(len(results), 5)
112+ self.assertEqual(len(results), 0)
374− self.assertEqual(results[0]['title'], 'Should be the title')
375− self.assertEqual(results[0]['url'], 'https://btdigg.org/url')
376− self.assertEqual(results[0]['content'], 'Content')
377− self.assertEqual(results[0]['seed'], 5)
378− self.assertEqual(results[0]['leech'], 0)
379− self.assertEqual(results[0]['files'], 710)
380− self.assertEqual(results[0]['magnetlink'], 'magnet:?xt=urn:btih:magnet&dn=Test')
381− self.assertEqual(results[0]['filesize'], 1024)
382− self.assertEqual(results[1]['filesize'], 1048576)
383− self.assertEqual(results[2]['filesize'], 1073741824)
384− self.assertEqual(results[3]['filesize'], 1099511627776)