MINFO_PROVIDER_BUS_NAME = 'com.simonpena.maevies.minfoprovider'
TMDB_MOVIE_INTERFACE = 'com.simonpena.maevies.tmdbmovie'
TMDB_MOVIE_BUS_NAME = 'com.simonpena.maevies.tmdbmovie'
+WATC_MOVIE_INTERFACE = 'com.simonpena.maevies.watcmovie'
+WATC_MOVIE_BUS_NAME = 'com.simonpena.maevies.watcmovie'
TMDB = 0
WATC = 1
if interface == TMDB_MOVIE_INTERFACE:
for path in object_paths:
- movies.append(MovieProxy(self._bus, path))
- else:
- pass
+ movies.append(TmdbMovie(self._bus, path))
+ elif interface == WATC_MOVIE_INTERFACE:
+ for path in object_paths:
+ movies.append(WatcMovie(self._bus, path))
if self.response_received_cb:
self.response_received_cb(movies)
-class MovieImage:
+class TmdbMovieImage:
def __init__(self, image_struct):
self._type, self._url, self._size, self._id = image_struct
str += '\t%s\n' % field
return str
-class MovieProxy:
+class GenericMovie(object):
- def __init__(self, bus, object_path):
+ def __init__(self, bus):
self._bus = bus
- self.interface = self._create_movie_interface(object_path)
- self.fields = ['Title', 'Release date', 'Rating', 'Popularity']
- self._images = self._retrieve_images()
+ pass
- def _create_movie_interface(self, object_path):
- proxy = self._bus.get_object(TMDB_MOVIE_BUS_NAME,
- object_path)
+ def _create_interface(self, bus_name, bus_interface, object_path):
+ proxy = self._bus.get_object(bus_name,
+ object_path)
interface = dbus.Interface(proxy,
- dbus_interface=TMDB_MOVIE_INTERFACE)
+ dbus_interface=bus_interface)
return interface
+ def get_title(self):
+ return ''
+
+ def get_info(self):
+ return ''
+
+ def get_value(self, field):
+ return ''
+
+ def get_image(self, type=None, size=None):
+ return self.get_placeholder_image()
+
+ def get_placeholder_image(self):
+ return self._get_placeholder_pixbuf()
+
+ def _get_placeholder_pixbuf(self):
+ pixbuf = gtk.IconTheme().load_icon('general_video_file', 48, 0)
+ return pixbuf
+
+class WatcMovie(GenericMovie):
+
+ def __init__(self, bus, object_path):
+ super(WatcMovie, self).__init__(bus)
+ self.interface = self._create_interface(WATC_MOVIE_BUS_NAME,
+ WATC_MOVIE_INTERFACE,
+ object_path)
+ self.fields = ['Name', 'Year', 'Stingers']
+
+ def get_value(self, field):
+ if field == 'Name':
+ return self.get_title()
+ elif field == 'Year':
+ return self.get_year()
+ elif field == 'Stingers':
+ return self.get_stingers()
+ super(WatcMovie, self).get_value()
+
+ def get_title(self):
+ return self.interface.GetName()
+
+ def get_year(self):
+ return self.interface.GetYear()
+
+ def get_stingers(self):
+ return self.interface.GetStingers()
+
+ def get_info(self):
+ stingers = self.get_stingers()
+ has_stingers = ''
+ if stingers == 0:
+ has_stingers = 'Unknown'
+ elif stingers == 1:
+ has_stingers = 'Yes'
+ elif stingers == 2:
+ has_stingers = 'No'
+
+ return ('<b>%(title)s</b>\n<small><i>Year: </i>%(year)s'
+ ' <i>Has stingers: </i>%(stingers)s</small>' %
+ {'title' : self.get_title(),
+ 'year' : self.get_year(),
+ 'stingers' : has_stingers})
+
+class TmdbMovie(GenericMovie):
+
+ def __init__(self, bus, object_path):
+ super(TmdbMovie, self).__init__(bus)
+ self.interface = self._create_interface(TMDB_MOVIE_BUS_NAME,
+ TMDB_MOVIE_INTERFACE,
+ object_path)
+ self.fields = ['Title', 'Release date', 'Rating', 'Popularity']
+ self._images = self._retrieve_images()
+
def _retrieve_images(self):
images = { }
dbus_images = self.interface.GetImages()
for dbus_image in dbus_images:
- image = MovieImage(dbus_image)
+ image = TmdbMovieImage(dbus_image)
if not images.has_key(image.get_type()):
images[image.get_type()] = {}
images[image.get_type()][image.get_size()] = image
return self.get_rating()
elif field == 'Popularity':
return self.get_popularity()
- else:
- return ''
+ super(TmdbMovie, self).get_value()
def get_title(self):
return self.interface.GetTitle()
return self.interface.GetRating()
def get_image(self, type, size):
- return self._images[type][size]
+ if self._images.has_key(type) and self._images[type].has_key(size):
+ return self._images[type][size]
+ else:
+ return None
def get_released(self):
return self.interface.GetReleased()
def get_overview(self):
return self.interface.GetOverview()
-
- def get_placeholder_image(self):
- return self._get_placeholder_pixbuf()
-
- def _get_placeholder_pixbuf(self):
- pixbuf = gtk.IconTheme().load_icon('general_video_file', 48, 0)
- return pixbuf