From 52d243f7af259bb888ead2284c82a5a23caadb9d Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Sun, 29 Mar 2015 21:05:43 +0200 Subject: [PATCH] [fix] piratebay: missing torrent link --- searx/engines/piratebay.py | 10 ++++++--- searx/tests/engines/test_piratebay.py | 31 ++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/searx/engines/piratebay.py b/searx/engines/piratebay.py index fa5c61128..55446b410 100644 --- a/searx/engines/piratebay.py +++ b/searx/engines/piratebay.py @@ -1,4 +1,4 @@ -## Piratebay (Videos, Music, Files) +# Piratebay (Videos, Music, Files) # # @website https://thepiratebay.se # @provide-api no (nothing found) @@ -78,7 +78,11 @@ def response(resp): leech = 0 magnetlink = result.xpath(magnet_xpath)[0] - torrentfile = result.xpath(torrent_xpath)[0] + torrentfile_links = result.xpath(torrent_xpath) + if torrentfile_links: + torrentfile_link = torrentfile_links[0].attrib.get('href') + else: + torrentfile_link = None # append result results.append({'url': href, @@ -87,7 +91,7 @@ def response(resp): 'seed': seed, 'leech': leech, 'magnetlink': magnetlink.attrib.get('href'), - 'torrentfile': torrentfile.attrib.get('href'), + 'torrentfile': torrentfile_link, 'template': 'torrent.html'}) # return results sorted by seeder diff --git a/searx/tests/engines/test_piratebay.py b/searx/tests/engines/test_piratebay.py index 17bc3a526..5699380be 100644 --- a/searx/tests/engines/test_piratebay.py +++ b/searx/tests/engines/test_piratebay.py @@ -65,12 +65,39 @@ class TestPiratebayEngine(SearxTestCase): 13 334 + + +
+ Anime
+ (Anime) +
+ + +
+ + This is the title + +
+ + Magnet link + + + VIP + + + + This is the content and should be OK + + + 13 + 334 + """ response = mock.Mock(text=html) results = piratebay.response(response) self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) + self.assertEqual(len(results), 2) self.assertEqual(results[0]['title'], 'This is the title') self.assertEqual(results[0]['url'], 'https://thepiratebay.se/this.is.the.link') self.assertEqual(results[0]['content'], 'This is the content and should be OK') @@ -79,6 +106,8 @@ class TestPiratebayEngine(SearxTestCase): self.assertEqual(results[0]['magnetlink'], 'magnet:?xt=urn:btih:MAGNETLINK') self.assertEqual(results[0]['torrentfile'], 'http://torcache.net/torrent/TORRENTFILE.torrent') + self.assertEqual(results[1]['torrentfile'], None) + html = """