youtube.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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}'
  5. def request(query, params):
  6. params['url'] = search_url.format(query=urlencode({'q': query}))
  7. return params
  8. def response(resp):
  9. results = []
  10. search_results = loads(resp.text)
  11. if not 'feed' in search_results:
  12. return results
  13. feed = search_results['feed']
  14. for result in feed['entry']:
  15. url = [x['href'] for x in result['link'] if x['type'] == 'text/html']
  16. if not len(url):
  17. return
  18. # remove tracking
  19. url = url[0].replace('feature=youtube_gdata', '')
  20. if url.endswith('&'):
  21. url = url[:-1]
  22. title = result['title']['$t']
  23. content = ''
  24. thumbnail = ''
  25. if len(result['media$group']['media$thumbnail']):
  26. thumbnail = result['media$group']['media$thumbnail'][0]['url']
  27. content += '<a href="{0}" title="{0}" ><img src="{1}" /></a>'.format(url, thumbnail)
  28. if len(content):
  29. content += '<br />' + result['content']['$t']
  30. else:
  31. content = result['content']['$t']
  32. results.append({'url': url
  33. , 'title': title
  34. , 'content': content
  35. , 'template':'videos.html'
  36. , 'thumbnail':thumbnail})
  37. return results