From dd9127492f85dc5cfa25fbb5351735ea2190b058 Mon Sep 17 00:00:00 2001 From: ta Date: Mon, 22 Aug 2022 17:35:07 +0700 Subject: [PATCH] add 9gag engine 9GAG is a social media website where users upload and share user-generated images and videos --- searx/engines/9gag.py | 66 +++++++++++++++++++++++++++++++++++++++++++ searx/settings.yml | 5 ++++ 2 files changed, 71 insertions(+) create mode 100644 searx/engines/9gag.py diff --git a/searx/engines/9gag.py b/searx/engines/9gag.py new file mode 100644 index 00000000..b142adc0 --- /dev/null +++ b/searx/engines/9gag.py @@ -0,0 +1,66 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +# lint: pylint +# pylint: disable=C0103 +"""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']['posts'] + + for result in json_results: + result_type = result['type'] + + 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': result['images']['imageFbThumbnail']['url'], + } + ) + elif result_type == 'Animated': + results.append( + { + 'template': 'videos.html', + 'url': result['url'], + 'title': result['title'], + 'content': result['description'], + 'publishedDate': datetime.utcfromtimestamp(result['creationTs']), + 'thumbnail': result['images']['imageFbThumbnail']['url'], + } + ) + + return results diff --git a/searx/settings.yml b/searx/settings.yml index a61be107..73119d2d 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