add 9gag engine

9GAG is a social media website where users upload and share user-generated images and videos
This commit is contained in:
ta 2022-08-22 17:35:07 +07:00
parent b84ee9ac60
commit dd9127492f
2 changed files with 71 additions and 0 deletions

66
searx/engines/9gag.py Normal file
View file

@ -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

View file

@ -262,6 +262,11 @@ categories_as_tabs:
social media: social media:
engines: engines:
- name: 9gag
engine: 9gag
shortcut: 9g
disabled: true
- name: apk mirror - name: apk mirror
engine: apkmirror engine: apkmirror
timeout: 4.0 timeout: 4.0