| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | # SPDX-License-Identifier: AGPL-3.0-or-later# lint: pylint# pylint: disable=invalid-name"""9GAG (social media)"""from json import loadsfrom datetime import datetimefrom urllib.parse import urlencodeabout = {    "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 = Truesearch_url = "https://9gag.com/v1/search-posts?{query}"page_size = 10def request(query, params):    query = urlencode({'query': query, 'c': (params['pageno'] - 1) * page_size})    params['url'] = search_url.format(query=query)    return paramsdef 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
 |