From 9eddcdb8e4cc8ce673ef07be9f26162ed6f89b93 Mon Sep 17 00:00:00 2001 From: dalf Date: Mon, 30 Dec 2013 22:24:42 +0100 Subject: [PATCH 1/3] flickr engine: bug fix --- searx/engines/flickr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/engines/flickr.py b/searx/engines/flickr.py index 04a24552a..a9832856d 100755 --- a/searx/engines/flickr.py +++ b/searx/engines/flickr.py @@ -7,7 +7,7 @@ from urlparse import urljoin categories = ['images'] url = 'https://secure.flickr.com/' -search_url = url+'search/?q={query}' +search_url = url+'search/?{query}' def request(query, params): params['url'] = search_url.format(query=urlencode({'q': query})) From 664c039b387d6c50f09e27de36f794821c101fd9 Mon Sep 17 00:00:00 2001 From: dalf Date: Mon, 30 Dec 2013 22:34:35 +0100 Subject: [PATCH 2/3] xpath engine: bug fix --- searx/engines/xpath.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/engines/xpath.py b/searx/engines/xpath.py index 068f2ba61..ad3a97ffa 100644 --- a/searx/engines/xpath.py +++ b/searx/engines/xpath.py @@ -28,7 +28,7 @@ def extract_url(xpath_results): url = xpath_results[0].attrib.get('href') else: url = xpath_results.attrib.get('href') - if not url.startswith('http://') or not url.startswith('https://'): + if not url.startswith('http://') and not url.startswith('https://'): url = 'http://'+url parsed_url = urlparse(url) if not parsed_url.netloc: From d3e272d0350aec7d8c397bd2fd8ae5c1a84362bb Mon Sep 17 00:00:00 2001 From: dalf Date: Mon, 30 Dec 2013 22:42:37 +0100 Subject: [PATCH 3/3] add dailymotion engine --- engines.cfg_sample | 5 +++++ searx/engines/dailymotion.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 searx/engines/dailymotion.py diff --git a/engines.cfg_sample b/engines.cfg_sample index 5a0554d53..d76d31214 100644 --- a/engines.cfg_sample +++ b/engines.cfg_sample @@ -79,3 +79,8 @@ suggestion_xpath = //div[@id="satat"]//a [youtube] engine = youtube categories = videos + +[dailymotion] +engine = dailymotion +categories = videos + diff --git a/searx/engines/dailymotion.py b/searx/engines/dailymotion.py new file mode 100644 index 000000000..7046132f3 --- /dev/null +++ b/searx/engines/dailymotion.py @@ -0,0 +1,32 @@ +from urllib import urlencode +from json import loads +from cgi import escape + +categories = ['videos'] +localization = 'en' + +# 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=1&{query}' + +def request(query, params): + global search_url + params['url'] = search_url.format(query=urlencode({'search': query, 'localization': localization })) + return params + + +def response(resp): + results = [] + search_res = loads(resp.text) + if not 'list' in search_res: + return results + for res in search_res['list']: + title = res['title'] + url = res['url'] + if res['thumbnail_360_url']: + content = '
'.format(url, res['thumbnail_360_url']) + else: + content = '' + if res['description']: + content += escape(res['description'][:500]) + results.append({'url': url, 'title': title, 'content': content}) + return results