forked from zaclys/searxng
4a195e0b28
New "embedded" item for the results, allow to give an iframe to display the media directly in the results. Note that the attributes src of the iframes are not set, but instead data-src is set, allowing to only load the iframe when clicked. Deezer engine based on public API (no key).
73 lines
2.1 KiB
Python
73 lines
2.1 KiB
Python
## Dailymotion (Videos)
|
|
#
|
|
# @website https://www.dailymotion.com
|
|
# @provide-api yes (http://www.dailymotion.com/developer)
|
|
#
|
|
# @using-api yes
|
|
# @results JSON
|
|
# @stable yes
|
|
# @parse url, title, thumbnail, publishedDate, embedded
|
|
#
|
|
# @todo set content-parameter with correct data
|
|
|
|
from urllib import urlencode
|
|
from json import loads
|
|
from cgi import escape
|
|
from datetime import datetime
|
|
|
|
# engine dependent config
|
|
categories = ['videos']
|
|
paging = True
|
|
language_support = True
|
|
|
|
# search-url
|
|
# see http://www.dailymotion.com/doc/api/obj-video.html
|
|
search_url = 'https://api.dailymotion.com/videos?fields=created_time,title,description,duration,url,thumbnail_360_url,id&sort=relevance&limit=5&page={pageno}&{query}' # noqa
|
|
embedded_url = '<iframe frameborder="0" width="540" height="304" ' +\
|
|
'data-src="//www.dailymotion.com/embed/video/{videoid}" allowfullscreen></iframe>'
|
|
|
|
|
|
# do search-request
|
|
def request(query, params):
|
|
if params['language'] == 'all':
|
|
locale = 'en-US'
|
|
else:
|
|
locale = params['language']
|
|
|
|
params['url'] = search_url.format(
|
|
query=urlencode({'search': query, 'localization': locale}),
|
|
pageno=params['pageno'])
|
|
|
|
return params
|
|
|
|
|
|
# get response from search-request
|
|
def response(resp):
|
|
results = []
|
|
|
|
search_res = loads(resp.text)
|
|
|
|
# return empty array if there are no results
|
|
if not 'list' in search_res:
|
|
return []
|
|
|
|
# parse results
|
|
for res in search_res['list']:
|
|
title = res['title']
|
|
url = res['url']
|
|
content = escape(res['description'])
|
|
thumbnail = res['thumbnail_360_url']
|
|
publishedDate = datetime.fromtimestamp(res['created_time'], None)
|
|
embedded = embedded_url.format(videoid=res['id'])
|
|
|
|
results.append({'template': 'videos.html',
|
|
'url': url,
|
|
'title': title,
|
|
'content': content,
|
|
'publishedDate': publishedDate,
|
|
'embedded': embedded,
|
|
'thumbnail': thumbnail})
|
|
|
|
# return results
|
|
return results
|