fix dailymotion engine and add comments to it

This commit is contained in:
Thomas Pointhuber 2014-09-01 15:36:53 +02:00
parent 144f89bf78
commit 90dcfc1ddd
1 changed files with 37 additions and 21 deletions

View File

@ -1,45 +1,61 @@
## 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
#
# @todo set content-parameter with correct data
from urllib import urlencode from urllib import urlencode
from json import loads from json import loads
from lxml import html from lxml import html
# engine dependent config
categories = ['videos'] categories = ['videos']
locale = 'en_US' locale = 'en_US'
# see http://www.dailymotion.com/doc/api/obj-video.html
search_url = 'https://api.dailymotion.com/videos?fields=title,description,duration,url,thumbnail_360_url&sort=relevance&limit=25&page={pageno}&{query}' # noqa
# TODO use video result template
content_tpl = '<a href="{0}" title="{0}" ><img src="{1}" /></a><br />'
paging = True paging = True
# search-url
# see http://www.dailymotion.com/doc/api/obj-video.html
search_url = 'https://api.dailymotion.com/videos?fields=title,description,duration,url,thumbnail_360_url&sort=relevance&limit=5&page={pageno}&{query}' # noqa
# do search-request
def request(query, params): def request(query, params):
params['url'] = search_url.format( params['url'] = search_url.format(
query=urlencode({'search': query, 'localization': locale}), query=urlencode({'search': query, 'localization': locale}),
pageno=params['pageno']) pageno=params['pageno'])
return params return params
# get response from search-request
def response(resp): def response(resp):
results = [] results = []
search_res = loads(resp.text) search_res = loads(resp.text)
# return empty array if there are no results
if not 'list' in search_res: if not 'list' in search_res:
return results return []
# parse results
for res in search_res['list']: for res in search_res['list']:
title = res['title'] title = res['title']
url = res['url'] url = res['url']
if res['thumbnail_360_url']: #content = res['description']
content = content_tpl.format(url, res['thumbnail_360_url'])
else:
content = '' content = ''
if res['description']: thumbnail = res['thumbnail_360_url']
description = text_content_from_html(res['description'])
content += description[:500] results.append({'template': 'videos.html',
results.append({'url': url, 'title': title, 'content': content}) 'url': url,
'title': title,
'content': content,
'thumbnail': thumbnail})
# return results
return results return results
def text_content_from_html(html_string):
desc_html = html.fragment_fromstring(html_string, create_parent=True)
return desc_html.text_content()