| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
"""Tootfinder (social media)"""from datetime import datetimefrom json import loadsfrom searx.utils import html_to_textabout = {    'website': "https://www.tootfinder.ch",    'official_api_documentation': "https://wiki.tootfinder.ch/index.php?name=the-tootfinder-rest-api",    'use_official_api': True,    'require_api_key': False,    'results': "JSON",}categories = ['social media']base_url = "https://www.tootfinder.ch"def request(query, params):    params['url'] = f"{base_url}/rest/api/search/{query}"    return paramsdef response(resp):    results = []            json_str = ""    for line in resp.text.split("\n"):        if line.startswith("[{"):            json_str = line            break    for result in loads(json_str):        thumbnail = None        attachments = result.get('media_attachments', [])        images = [attachment['preview_url'] for attachment in attachments if attachment['type'] == 'image']        if len(images) > 0:            thumbnail = images[0]        title = result.get('card', {}).get('title')        if not title:            title = html_to_text(result['content'])[:75]        results.append(            {                'url': result['url'],                'title': title,                'content': html_to_text(result['content']),                'thumbnail': thumbnail,                'publishedDate': datetime.strptime(result['created_at'], '%Y-%m-%d %H:%M:%S'),            }        )    return results
 |