| 
									
										
										
										
											2013-12-30 22:42:37 +01:00
										 |  |  | from urllib import urlencode | 
					
						
							| 
									
										
										
										
											2014-01-05 13:55:17 +01:00
										 |  |  | from lxml import html | 
					
						
							| 
									
										
										
										
											2013-12-30 22:42:37 +01:00
										 |  |  | from json import loads | 
					
						
							|  |  |  | from cgi import escape | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | categories = ['videos'] | 
					
						
							| 
									
										
										
										
											2014-01-05 13:55:17 +01:00
										 |  |  | locale = 'en_US' | 
					
						
							| 
									
										
										
										
											2013-12-30 22:42:37 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | # 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 | 
					
						
							| 
									
										
										
										
											2014-01-05 13:55:17 +01:00
										 |  |  |     params['url'] = search_url.format(query=urlencode({'search': query, 'localization': locale })) | 
					
						
							| 
									
										
										
										
											2013-12-30 22:42:37 +01:00
										 |  |  |     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 = '<a href="{0}" title="{0}" ><img src="{1}" /></a><br />'.format(url, res['thumbnail_360_url']) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             content = '' | 
					
						
							|  |  |  |         if res['description']: | 
					
						
							| 
									
										
										
										
											2014-01-05 13:55:17 +01:00
										 |  |  |             description = text_content_from_html(res['description']) | 
					
						
							|  |  |  |             content += description[:500] | 
					
						
							| 
									
										
										
										
											2013-12-30 22:42:37 +01:00
										 |  |  |         results.append({'url': url, 'title': title, 'content': content}) | 
					
						
							|  |  |  |     return results | 
					
						
							| 
									
										
										
										
											2014-01-05 13:55:17 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | def text_content_from_html(html_string): | 
					
						
							|  |  |  |     desc_html = html.fragment_fromstring(html_string, create_parent=True) | 
					
						
							|  |  |  |     return desc_html.text_content() |