/views.py

http://radioappz.googlecode.com/ · Python · 107 lines · 82 code · 24 blank · 1 comment · 10 complexity · 34d466a5e3b0b90dcbd67ae17d3ac4c3 MD5 · raw file

  1. from django.http import HttpResponseRedirect
  2. from django.shortcuts import render_to_response
  3. from google.appengine.api import users, memcache
  4. from datetime import datetime
  5. import time
  6. import random
  7. import pylast
  8. import gdata.youtube
  9. import gdata.youtube.service
  10. def cb(response):
  11. response["Expires"] = 'Thu, 19 Nov 1981 08:52:00 GMT'
  12. response["Last-Modified"] = str(datetime.now().ctime()) +" GMT"
  13. response["Cache-Control"] = 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0, max-age=0, must-revalidate'
  14. response["Pragma"] = 'no-cache'
  15. response["P3P"] = 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'
  16. return response
  17. def index(request):
  18. if request.method == 'POST':
  19. API_KEY = ""
  20. API_SECRET = ""
  21. username = ""
  22. password_hash = pylast.md5("")
  23. network = pylast.get_lastfm_network(api_key = API_KEY, api_secret = API_SECRET, username = username, password_hash = password_hash)
  24. s = str(request.POST['text'])
  25. if not memcache.get(s + 'tops'):
  26. top_songs = []
  27. artist = network.get_artist(s)
  28. top_tracks = artist.get_top_tracks()
  29. for i in range(0,7):
  30. top_songs.append(top_tracks[i]['item'])
  31. tops = artist.get_similar(10)
  32. memcache.add(s + 'top_similar', tops, 7200)
  33. artist1 = network.get_artist(str(tops[0]['item']))
  34. top_tracks = artist1.get_top_tracks()
  35. for i in range(0,10):
  36. top_songs.append(top_tracks[i]['item'])
  37. artist2 = network.get_artist(str(tops[1]['item']))
  38. top_tracks = artist2.get_top_tracks()
  39. for i in range(0,4):
  40. top_songs.append(top_tracks[i]['item'])
  41. artist3 = network.get_artist(str(tops[2]['item']))
  42. top_tracks = artist3.get_top_tracks()
  43. for i in range(0,4):
  44. top_songs.append(top_tracks[i]['item'])
  45. artist4 = network.get_artist(str(tops[3]['item']))
  46. top_tracks = artist4.get_top_tracks()
  47. for i in range(0,4):
  48. top_songs.append(top_tracks[i]['item'])
  49. artist5 = network.get_artist(str(tops[4]['item']))
  50. top_tracks = artist5.get_top_tracks()
  51. for i in range(0,2):
  52. top_songs.append(top_tracks[i]['item'])
  53. artist6 = network.get_artist(str(tops[5]['item']))
  54. top_tracks = artist6.get_top_tracks()
  55. for i in range(0,2):
  56. top_songs.append(top_tracks[i]['item'])
  57. artist7 = network.get_artist(str(tops[6]['item']))
  58. top_tracks = artist7.get_top_tracks()
  59. for i in range(0,2):
  60. top_songs.append(top_tracks[i]['item'])
  61. memcache.add(s + 'tops', top_songs, 7200)
  62. top_songs = memcache.get(s + 'tops')
  63. similar = memcache.get(s + 'top_similar')
  64. random.shuffle(top_songs)
  65. #google youtubeApi
  66. client = gdata.youtube.service.YouTubeService()
  67. query = gdata.youtube.service.YouTubeVideoQuery()
  68. query.vq = str(top_songs[0])
  69. query.max_results = '1'
  70. query.start_index = '1'
  71. query.racy = 'exclude'
  72. query.format = '5'
  73. query.orderby = 'relevance'
  74. video = client.YouTubeQuery(query)
  75. title = video.entry[0].title.text
  76. url = video.entry[0].media.content[0].url
  77. response = render_to_response('radio.html', {'search': s, 'title': title, 'url': url, 'similar': similar })
  78. return cb(response)
  79. response = render_to_response('search.html')
  80. return cb(response)
  81. def test(request):
  82. response = render_to_response('test.html')
  83. return cb(response)