| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | """ Digg (News, Social media) @website     https://digg.com/ @provide-api no @using-api   no @results     HTML (using search portal) @stable      no (HTML can change) @parse       url, title, content, publishedDate, thumbnail"""import randomimport stringfrom dateutil import parserfrom json import loadsfrom lxml import htmlfrom searx.url_utils import urlencodefrom datetime import datetime# engine dependent configcategories = ['news', 'social media']paging = True# search-urlbase_url = 'https://digg.com/'search_url = base_url + 'api/search/?{query}&from={position}&size=20&format=html'# specific xpath variablesresults_xpath = '//article'link_xpath = './/small[@class="time"]//a'title_xpath = './/h2//a//text()'content_xpath = './/p//text()'pubdate_xpath = './/time'digg_cookie_chars = string.ascii_uppercase + string.ascii_lowercase +\    string.digits + "+_"# do search-requestdef request(query, params):    offset = (params['pageno'] - 1) * 20    params['url'] = search_url.format(position=offset,                                      query=urlencode({'q': query}))    params['cookies']['frontend.auid'] = ''.join(random.choice(        digg_cookie_chars) for _ in range(22))    return params# get response from search-requestdef response(resp):    results = []    search_result = loads(resp.text)    # parse results    for result in search_result['mapped']:        published = datetime.strptime(result['created']['ISO'], "%Y-%m-%d %H:%M:%S")        # append result        results.append({'url': result['url'],                        'title': result['title'],                        'content': result['excerpt'],                        'template': 'videos.html',                        'publishedDate': published,                        'thumbnail': result['images']['thumbImage']})    # return results    return results
 |