summaryrefslogtreecommitdiff
path: root/searx/engines/fdroid.py
diff options
context:
space:
mode:
Diffstat (limited to 'searx/engines/fdroid.py')
-rw-r--r--searx/engines/fdroid.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/searx/engines/fdroid.py b/searx/engines/fdroid.py
new file mode 100644
index 000000000..4066dc716
--- /dev/null
+++ b/searx/engines/fdroid.py
@@ -0,0 +1,50 @@
+"""
+ F-Droid (a repository of FOSS applications for Android)
+
+ @website https://f-droid.org/
+ @provide-api no
+ @using-api no
+ @results HTML
+ @stable no (HTML can change)
+ @parse url, title, content
+"""
+
+from lxml import html
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['files']
+paging = True
+
+# search-url
+base_url = 'https://search.f-droid.org/'
+search_url = base_url + '?{query}'
+
+
+# do search-request
+def request(query, params):
+ query = urlencode({'q': query, 'page': params['pageno'], 'lang': ''})
+ params['url'] = search_url.format(query=query)
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ for app in dom.xpath('//a[@class="package-header"]'):
+ app_url = app.xpath('./@href')[0]
+ app_title = extract_text(app.xpath('./div/h4[@class="package-name"]/text()'))
+ app_content = extract_text(app.xpath('./div/div/span[@class="package-summary"]')).strip() \
+ + ' - ' + extract_text(app.xpath('./div/div/span[@class="package-license"]')).strip()
+ app_img_src = app.xpath('./img[@class="package-icon"]/@src')[0]
+
+ results.append({'url': app_url,
+ 'title': app_title,
+ 'content': app_content,
+ 'img_src': app_img_src})
+
+ return results