diff options
author | Alexandre Flament <alex@al-f.net> | 2022-08-25 09:32:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-25 09:32:52 +0200 |
commit | 5a241e545ed2c64cd71f88a3b46ae4b170b6d883 (patch) | |
tree | e5b29ea2e6bf91e8d51e592e272f8db58048a844 /searx | |
parent | 4dc70b08a53ab1f6ef9a365d74bd5e3443c3326b (diff) | |
parent | cef7bbab228173db6f3a68a28b57e5dc241b9982 (diff) | |
download | searxng-5a241e545ed2c64cd71f88a3b46ae4b170b6d883.tar.gz searxng-5a241e545ed2c64cd71f88a3b46ae4b170b6d883.zip |
Merge pull request #1688 from liimee/eng-9gag
Add 9gag engine
Diffstat (limited to 'searx')
-rw-r--r-- | searx/engines/9gag.py | 77 | ||||
-rw-r--r-- | searx/settings.yml | 5 |
2 files changed, 82 insertions, 0 deletions
diff --git a/searx/engines/9gag.py b/searx/engines/9gag.py new file mode 100644 index 000000000..d1846725c --- /dev/null +++ b/searx/engines/9gag.py @@ -0,0 +1,77 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +# lint: pylint +# pylint: disable=invalid-name +"""9GAG (social media)""" + +from json import loads +from datetime import datetime +from urllib.parse import urlencode + +about = { + "website": 'https://9gag.com/', + "wikidata_id": 'Q277421', + "official_api_documentation": None, + "use_official_api": True, + "require_api_key": False, + "results": 'JSON', +} + +categories = ['social media'] +paging = True + +search_url = "https://9gag.com/v1/search-posts?{query}" +page_size = 10 + + +def request(query, params): + query = urlencode({'query': query, 'c': (params['pageno'] - 1) * page_size}) + + params['url'] = search_url.format(query=query) + + return params + + +def response(resp): + results = [] + + json_results = loads(resp.text)['data'] + + for result in json_results['posts']: + result_type = result['type'] + + # Get the not cropped version of the thumbnail when the image height is not too important + if result['images']['image700']['height'] > 400: + thumbnail = result['images']['imageFbThumbnail']['url'] + else: + thumbnail = result['images']['image700']['url'] + + if result_type == 'Photo': + results.append( + { + 'template': 'images.html', + 'url': result['url'], + 'title': result['title'], + 'content': result['description'], + 'publishedDate': datetime.utcfromtimestamp(result['creationTs']), + 'img_src': result['images']['image700']['url'], + 'thumbnail_src': thumbnail, + } + ) + elif result_type == 'Animated': + results.append( + { + 'template': 'videos.html', + 'url': result['url'], + 'title': result['title'], + 'content': result['description'], + 'publishedDate': datetime.utcfromtimestamp(result['creationTs']), + 'thumbnail': thumbnail, + 'iframe_src': result['images'].get('image460sv', {}).get('url'), + } + ) + + if 'tags' in json_results: + for suggestion in json_results['tags']: + results.append({'suggestion': suggestion['key']}) + + return results diff --git a/searx/settings.yml b/searx/settings.yml index a61be1071..73119d2d4 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -262,6 +262,11 @@ categories_as_tabs: social media: engines: + - name: 9gag + engine: 9gag + shortcut: 9g + disabled: true + - name: apk mirror engine: apkmirror timeout: 4.0 |