ui: Added support for fetching movie images
[maevies] / ui / maeviesui / util / moviemanager.py
index 4689eee..8cfc617 100644 (file)
@@ -36,7 +36,7 @@ WATC = 1
 
 class MovieManager:
 
-    def __init__(self, response_received_cb = None):
+    def __init__(self, response_received_cb=None):
         self.response_received_cb = response_received_cb
         self._bus = None
         self._provider = None
@@ -52,12 +52,12 @@ class MovieManager:
         provider_proxy = self._bus.get_object(MINFO_PROVIDER_BUS_NAME,
                                              '/MInfoProvider')
         provider_interface = dbus.Interface(provider_proxy,
-                                            dbus_interface = MINFO_PROVIDER_INTERFACE)
-        provider_interface.connect_to_signal("ResponseReceived",
+                                            dbus_interface=MINFO_PROVIDER_INTERFACE)
+        provider_interface.connect_to_signal('ResponseReceived',
                                              self._on_response_received)
         return provider_interface
 
-    def query(self, movie_name = '', query_type = TMDB):
+    def query(self, movie_name='', query_type=TMDB):
         try:
             self._get_provider().Query(query_type, movie_name)
         except DBusException:
@@ -71,31 +71,55 @@ class MovieManager:
         if self.response_received_cb:
             self.response_received_cb(movies)
 
+class MovieImage:
+    def __init__(self, image_struct):
+        self._type, self._url, self._size, self._id = image_struct
+
+    def get_url(self):
+        return self._url
+
+    def get_id(self):
+        return self._id
+
+    def get_size(self):
+        return self._size
+
+    def get_type(self):
+        return self._type
+
 class MovieProxy:
 
     def __init__(self, bus, object_path):
         self._bus = bus
         self.interface = self._create_movie_interface(object_path)
-        self.fields = ["Title", "Release date", "Rating", "Popularity"]
+        self.fields = ['Title', 'Release date', 'Rating', 'Popularity']
+        self._images = self._retrieve_images()
 
     def _create_movie_interface(self, object_path):
         proxy = self._bus.get_object(TMDB_MOVIE_BUS_NAME,
                                     object_path)
         interface = dbus.Interface(proxy,
-                                   dbus_interface = TMDB_MOVIE_INTERFACE)
+                                   dbus_interface=TMDB_MOVIE_INTERFACE)
         return interface
 
+    def _retrieve_images(self):
+        images = []
+        dbus_images = self.interface.GetImages()
+        for image in dbus_images:
+            images.append(MovieImage(image))
+        return images
+
     def get_value(self, field):
-        if field == "Title":
+        if field == 'Title':
             return self.get_title()
-        elif field == "Release date":
+        elif field == 'Release date':
             return self.get_released()
-        elif field == "Rating":
+        elif field == 'Rating':
             return self.get_rating()
-        elif field == "Popularity":
+        elif field == 'Popularity':
             return self.get_popularity()
         else:
-            return ""
+            return ''
 
     def get_title(self):
         return self.interface.GetTitle()
@@ -106,15 +130,20 @@ class MovieProxy:
     def get_rating(self):
         return self.interface.GetRating()
 
+    def get_images(self):
+        return self._images
+
     def get_released(self):
         return self.interface.GetReleased()
 
     def get_info(self):
-        return "<b>%(title)s</b>\n<small><i>Popularity: </i>%(popularity)s\
-    <i>Rating: </i>%(rating)s    <i>Released: </i>%(released)s</small>" % {'title' : self.get_title(),
-                                                                           'popularity' : self.get_popularity(),
-                                                                           'rating' : self.get_rating(),
-                                                                           'released' : self.get_released()}
+        return ('<b>%(title)s</b>\n<small><i>Popularity: </i>%(popularity)s'
+                '    <i>Rating: </i>%(rating)s    <i>Released: </i>'
+                '%(released)s</small>' %
+                {'title' : self.get_title(),
+                 'popularity' : self.get_popularity(),
+                 'rating' : self.get_rating(),
+                 'released' : self.get_released()})
 
     def get_overview(self):
         return self.interface.GetOverview()