Browse Source

[mod] int_or_zero refactored to searx_utils

misnyo 7 years ago
parent
commit
33fd938016
3 changed files with 23 additions and 29 deletions
  1. 13 17
      searx/engines/nyaa.py
  2. 1 12
      searx/engines/tokyotoshokan.py
  3. 9 0
      searx/utils.py

+ 13 - 17
searx/engines/nyaa.py

@@ -12,7 +12,7 @@
 from lxml import html
 from searx.engines.xpath import extract_text
 from searx.url_utils import urlencode
-from searx.utils import get_torrent_size
+from searx.utils import get_torrent_size, int_or_zero
 
 # engine dependent config
 categories = ['files', 'images', 'videos', 'music']
@@ -49,14 +49,14 @@ def response(resp):
     for result in dom.xpath(xpath_results):
         # defaults
         filesize = 0
-        seed = 0
-        leech = 0
-        downloads = 0
         magnet_link = ""
         torrent_link = ""
 
         # category in which our torrent belongs
-        category = result.xpath(xpath_category)[0].attrib.get('title')
+        try:
+            category = result.xpath(xpath_category)[0].attrib.get('title')
+        except:
+            pass
 
         # torrent title
         page_a = result.xpath(xpath_title)[0]
@@ -74,12 +74,14 @@ def response(resp):
                 # link to the torrent file
                 torrent_link = url
 
-        # get seeders and leechers
-        try:
-            seed = int(result.xpath(xpath_seeds)[0])
-            leech = int(result.xpath(xpath_leeches)[0])
-        except:
-            pass
+        # seed count
+        seed = int_or_zero(result.xpath(xpath_seeds))
+
+        # leech count
+        leech = int_or_zero(result.xpath(xpath_leeches))
+
+        # torrent downloads count
+        downloads = int_or_zero(result.xpath(xpath_downloads))
 
         # let's try to calculate the torrent size
         try:
@@ -89,12 +91,6 @@ def response(resp):
         except:
             pass
 
-        # torrent downloads count
-        try:
-            downloads = result.xpath(xpath_downloads)[0]
-        except:
-            pass
-
         # content string contains all information not included into template
         content = 'Category: "{category}". Downloaded {downloads} times.'
         content = content.format(category=category, downloads=downloads)

+ 1 - 12
searx/engines/tokyotoshokan.py

@@ -15,7 +15,7 @@ from lxml import html
 from searx.engines.xpath import extract_text
 from datetime import datetime
 from searx.url_utils import urlencode
-from searx.utils import get_torrent_size
+from searx.utils import get_torrent_size, int_or_zero
 
 # engine dependent config
 categories = ['files', 'videos', 'music']
@@ -26,17 +26,6 @@ base_url = 'https://www.tokyotosho.info/'
 search_url = base_url + 'search.php?{query}'
 
 
-# convert a variable to integer or return 0 if it's not a number
-def int_or_zero(num):
-    if isinstance(num, list):
-        if len(num) < 1:
-            return 0
-        num = num[0]
-    if num.isdigit():
-        return int(num)
-    return 0
-
-
 # do search-request
 def request(query, params):
     query = urlencode({'page': params['pageno'], 'terms': query})

+ 9 - 0
searx/utils.py

@@ -290,6 +290,15 @@ def convert_str_to_int(number_str):
         return 0
 
 
+# convert a variable to integer or return 0 if it's not a number
+def int_or_zero(num):
+    if isinstance(num, list):
+        if len(num) < 1:
+            return 0
+        num = num[0]
+    return convert_str_to_int(num)
+
+
 def is_valid_lang(lang):
     is_abbr = (len(lang) == 2)
     if is_abbr: