main_screen.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import pygame
  2. import logging
  3. import hashlib
  4. import os
  5. import urllib
  6. import urllib2
  7. import json
  8. from mopidy.audio import PlaybackState
  9. from .touch_text_manager import TouchTextManager
  10. from .dynamic_background import DynamicBackground
  11. logger = logging.getLogger(__name__)
  12. margin = 10
  13. class MainScreen():
  14. def __init__(self,size,manager,cache):
  15. self.size = size
  16. self.manager = manager
  17. self.background = DynamicBackground()
  18. self.track = None
  19. self.cache = cache
  20. self.image = None
  21. self.touch_text_manager = TouchTextManager(size)
  22. def update(self,core):
  23. screen = pygame.Surface(self.size)
  24. self.background.drawBackground(screen)
  25. if self.track!=None:
  26. if self.image is not None:
  27. screen.blit(self.image, (0, 0))
  28. self.touch_text_manager.render(screen)
  29. return screen
  30. def track_started(self, track):
  31. self.track = track
  32. logger.error("hemen nago")
  33. self.touch_text_manager.add_text_object(self.track.name,(0,0), self.size, (255.255,255))
  34. if not self.is_image_in_cache():
  35. self.downloadImage()
  36. else:
  37. self.loadImage()
  38. def getImageFileName(self):
  39. name = self.track.album.name
  40. md5name = hashlib.md5(name).hexdigest()+".png"
  41. return md5name
  42. def getCoverFolder(self):
  43. if(not os.path.isdir(self.cache+"/covers")):
  44. os.makedirs(self.cache+"/covers")
  45. return self.cache+"/covers/"
  46. def is_image_in_cache(self):
  47. self.getCoverFolder()
  48. return os.path.isfile(self.cache+self.getCoverFolder()+self.getImageFileName())
  49. def downloadImage(self):
  50. self.imageStatus = 0
  51. #safe_artist=urllib.quote_plus(self.track.artists)
  52. safe_artist='clean+bandit'
  53. safe_album=urllib.quote_plus(self.track.album.name)
  54. url="http://ws.audioscrobbler.com/2.0/?"
  55. params="method=album.getinfo&api_key=59a04c6a73fb99d6e8996e01db306829&artist="+safe_artist+"&album="+safe_album+"&format=json"
  56. response = urllib2.urlopen(url+params)
  57. data = json.load(response)
  58. image = data['album']['image'][2]['#text']
  59. logger.error(image)
  60. urllib.urlretrieve(image, self.getCoverFolder()+self.getImageFileName())
  61. self.loadImage()
  62. def loadImage(self):
  63. size = self.size[0]/2 - margin
  64. self.image = pygame.transform.scale(pygame.image.load(self.getCoverFolder()+self.getImageFileName()),(size,size))