| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | # SPDX-License-Identifier: AGPL-3.0-or-later""" Dailymotion (Videos)"""from json import loadsfrom datetime import datetimefrom urllib.parse import urlencodefrom searx.utils import match_language, html_to_text# aboutabout = {    "website": 'https://www.dailymotion.com',    "wikidata_id": 'Q769222',    "official_api_documentation": 'https://www.dailymotion.com/developer',    "use_official_api": True,    "require_api_key": False,    "results": 'JSON',}# engine dependent configcategories = ['videos']paging = True# search-url# see http://www.dailymotion.com/doc/api/obj-video.htmlsearch_url = 'https://api.dailymotion.com/videos?fields=created_time,title,description,duration,url,thumbnail_360_url,id&sort=relevance&limit=5&page={pageno}&{query}'  # noqasupported_languages_url = 'https://api.dailymotion.com/languages'# do search-requestdef request(query, params):    if params['language'] == 'all':        locale = 'en-US'    else:        locale = match_language(params['language'], supported_languages)    params['url'] = search_url.format(        query=urlencode({'search': query, 'localization': locale}), pageno=params['pageno']    )    return params# get response from search-requestdef response(resp):    results = []    search_res = loads(resp.text)    # return empty array if there are no results    if 'list' not in search_res:        return []    # parse results    for res in search_res['list']:        title = res['title']        url = res['url']        content = html_to_text(res['description'])        thumbnail = res['thumbnail_360_url']        publishedDate = datetime.fromtimestamp(res['created_time'], None)        # http to https        thumbnail = thumbnail.replace("http://", "https://")        results.append(            {                'template': 'videos.html',                'url': url,                'title': title,                'content': content,                'publishedDate': publishedDate,                'iframe_src': "https://www.dailymotion.com/embed/video/" + res['id'],                'thumbnail': thumbnail,            }        )    # return results    return results# get supported languages from their sitedef _fetch_supported_languages(resp):    supported_languages = {}    response_json = loads(resp.text)    for language in response_json['list']:        supported_languages[language['code']] = {}        name = language['native_name']        if name:            supported_languages[language['code']]['name'] = name        english_name = language['name']        if english_name:            supported_languages[language['code']]['english_name'] = english_name    return supported_languages
 |