| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | # SPDX-License-Identifier: AGPL-3.0-or-later"""npms.io"""from urllib.parse import urlencodefrom dateutil import parserabout = {    "website": "https://npms.io/",    "wikidata_id": "Q7067518",    "official_api_documentation": "https://api-docs.npms.io/",    "use_official_api": False,    "require_api_key": False,    "results": "JSON",}categories = ['it', 'packages']# engine dependent configpaging = Truepage_size = 25search_api = "https://api.npms.io/v2/search?"def request(query: str, params):    args = urlencode(        {            'from': (params["pageno"] - 1) * page_size,            'q': query,            'size': page_size,        }    )    params['url'] = search_api + args    return paramsdef response(resp):    results = []    content = resp.json()    for entry in content["results"]:        package = entry["package"]        publishedDate = package.get("date")        if publishedDate:            publishedDate = parser.parse(publishedDate)        tags = list(entry.get("flags", {}).keys()) + package.get("keywords", [])        results.append(            {                "template": "packages.html",                "url": package["links"]["npm"],                "title": package["name"],                'package_name': package["name"],                "content": package.get("description", ""),                "version": package.get("version"),                "maintainer": package.get("author", {}).get("name"),                'publishedDate': publishedDate,                "tags": tags,                "homepage": package["links"].get("homepage"),                "source_code_url": package["links"].get("repository"),            }        )    return results
 |