| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | # SPDX-License-Identifier: AGPL-3.0-or-later# lint: pylint"""Stack Exchange API v2.3* https://api.stackexchange.com/"""import htmlfrom json import loadsfrom urllib.parse import urlencodeabout = {    "website": 'https://stackexchange.com',    "wikidata_id": 'Q3495447',    "official_api_documentation": 'https://api.stackexchange.com/docs',    "use_official_api": True,    "require_api_key": False,    "results": 'JSON',}paging = Truepagesize = 10api_site = 'stackoverflow'api_sort= 'activity'api_order = 'desc'# https://api.stackexchange.com/docs/advanced-searchsearch_api = 'https://api.stackexchange.com/2.3/search/advanced?'def request(query, params):    args = urlencode({        'q' : query,        'page' : params['pageno'],        'pagesize' : pagesize,        'site' : api_site,        'sort' : api_sort,        'order': 'desc',        })    params['url'] = search_api + args    return paramsdef response(resp):    results = []    json_data = loads(resp.text)    for result in json_data['items']:        content = "[%s]" % ", ".join(result['tags'])        content += " %s" % result['owner']['display_name']        if result['is_answered']:            content += ' // is answered'        content += " // score: %s" % result['score']        results.append({            'url': "https://%s.com/q/%s" % (api_site, result['question_id']),            'title':  html.unescape(result['title']),            'content': html.unescape(content),        })    return results
 |