youtube.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from json import loads
  2. from urllib import urlencode
  3. categories = ['videos']
  4. search_url = 'https://gdata.youtube.com/feeds/api/videos?alt=json&{query}&start-index={index}&max-results=25' # noqa
  5. paging = True
  6. def request(query, params):
  7. index = (params['pageno'] - 1) * 25 + 1
  8. params['url'] = search_url.format(query=urlencode({'q': query}),
  9. index=index)
  10. return params
  11. def response(resp):
  12. results = []
  13. search_results = loads(resp.text)
  14. if not 'feed' in search_results:
  15. return results
  16. feed = search_results['feed']
  17. for result in feed['entry']:
  18. url = [x['href'] for x in result['link'] if x['type'] == 'text/html']
  19. if not len(url):
  20. return
  21. # remove tracking
  22. url = url[0].replace('feature=youtube_gdata', '')
  23. if url.endswith('&'):
  24. url = url[:-1]
  25. title = result['title']['$t']
  26. content = ''
  27. thumbnail = ''
  28. if len(result['media$group']['media$thumbnail']):
  29. thumbnail = result['media$group']['media$thumbnail'][0]['url']
  30. content += '<a href="{0}" title="{0}" ><img src="{1}" /></a>'.format(url, thumbnail) # noqa
  31. if len(content):
  32. content += '<br />' + result['content']['$t']
  33. else:
  34. content = result['content']['$t']
  35. results.append({'url': url,
  36. 'title': title,
  37. 'content': content,
  38. 'template': 'videos.html',
  39. 'thumbnail': thumbnail})
  40. return results