Пример #1
0
 def play(self, config=None):
     status = "Selected %s" % self.path
     loader = MetadataLoader.get_loader(self.metadata)
     with open(self.path) as fh:
         data = fh.read()
     loader.save_poster(self.metadata, self.url, data)
     self.config.show_status(status)
Пример #2
0
 def draw_mmdb(self, item, m):
     self.clear()
     metadata = m['mmdb']
     season = m.get('season', None)
     loader = MetadataLoader.get_loader(metadata)
     imgpath = loader.get_poster(metadata, season=season)
     print "draw_mmdb: %s, type=%s" % (imgpath, type(imgpath))
     image = self.window.get_image(imgpath)
     y = self.y + self.h - image.height
     self.window.blit(image, self.x, y, 0)
     
     self.window.draw_markup(metadata.get_markup(m.get('media_file', None)),
                             self.window.detail_font,
                             x=self.x + image.width + 10, y=self.y + self.h,
                             anchor_x='left', anchor_y='top',
                             width=self.w - image.width - 10)
     
     icon_codes = metadata.get_icon_codes(m.get('media_file', None))
     print icon_codes
     x = self.x
     for icon_code in icon_codes:
         imgpath = loader.get_icon(icon_code)
         if imgpath is None:
             continue
         print imgpath
         image = self.window.get_image(imgpath)
         self.window.blit(image, x, y - image.height-10, 0)
         x += image.width + 10
Пример #3
0
 def change_metadata(self, media_files, imdb_id):
     # Find all title keys referenced by the scans
     title_keys = set()
     subcat = set()
     for item in media_files:
         title_keys.add(item.scan.title_key)
         subcat.add(item.scan.title_key.subcategory)
     
     if len(subcat) > 1:
         log.error("Multiple categories (%s) for media files: %s, have to fix manually somehow." % (str(subcat),str(media_files)))
         return
     
     subcat = subcat.pop()
     
     metadata = self.get_metadata(imdb_id)
     if metadata is None:
         log.error("Metadata for %s must be stored in database before changing media files' metadata" % imdb_id)
     if metadata.media_subcategory != subcat:
         log.error("Reloading metadata to fix subcategory mismatch: files=%s, metadata=%s" % (subcat, metadata.media_subcategory))
         metadata = MetadataLoader.get_metadata(title_key, media_files)
         self.metadata[metadata.id] = metadata
     
     # Reset title key lookup to use new metadata
     for title_key in title_keys:
         self.title_key_to_metadata[title_key] = metadata
         scans = StaticFileList(self.title_key_map[title_key])
         for item in scans:
             log.debug("Changing metadata for %s" % item.pathname)
             item.metadata = metadata
             metadata.update_with_media_files(scans)
     self.zodb.commit()
Пример #4
0
 def __init__(self, parent, config, result, orig_title_key):
     MMDBPopulator.__init__(self, config)
     self.parent = parent
     self.result = result
     self.title_key = TitleKey(orig_title_key.category, orig_title_key.subcategory, result['title'], result['year'])
     self.loader = MetadataLoader.get_loader(self.title_key)
     self.metadata = self.loader.get_basic_metadata(self.title_key, self.result)
     self.first_time = True
Пример #5
0
 def iter_create(self):
     media_files = list(self.get_media())
     if len(media_files) > 0:
         title_key = media_files[0].scan.title_key
         loader = MetadataLoader.get_loader(self.metadata)
         guesses = loader.search(title_key)
         for result in guesses:
             yield result['title'], ChangeImdb(self, self.config, result, title_key)
Пример #6
0
 def update_posters(self):
     for title_key, metadata in self.title_keys_with_metadata():
         loader = MetadataLoader.get_loader(title_key)
         if loader.has_poster(metadata):
             log.debug("Have poster for %s" % unicode(metadata).encode('utf-8'))
         else:
             log.debug("Loading poster for %s" % unicode(metadata).encode('utf-8'))
             loader.fetch_posters(metadata)
Пример #7
0
 def iter_image_path(self):
     for metadata in self.get_sorted_metadata():
         try:
             loader = MetadataLoader.get_loader(metadata)
             imgpath = loader.get_poster(metadata)
             if imgpath is not None:
                 yield imgpath
         except RuntimeError:
             print "No loader for %s" % str(metadata)
Пример #8
0
 def lookup_metadata(self, title_key, scans, force=False):
     user_mid = MetadataLoader.get_user_specified_metadata_id(title_key)
     metadata = self.title_key_to_metadata.get(title_key, None)
     
     # Also update metadata if the user specified metadata ID has changed
     if force or metadata is None or (user_mid is not None and user_mid != metadata.id) or metadata.media_subcategory != title_key.subcategory:
         metadata = MetadataLoader.get_metadata(title_key, scans)
         if metadata is None:
             return
         
         # Check to see some other title key hasn't already generated
         # the same metadata object, and use the previously saved
         # metadata if so
         if metadata.id in self.metadata:
             metadata = self.metadata[metadata.id]
         else:
             self.metadata[metadata.id] = metadata
         self.title_key_to_metadata[title_key] = metadata
     for item in scans:
         item.metadata = metadata
     metadata.update_with_media_files(scans)
     metadata.merge_database_objects(self)
Пример #9
0
    def draw_imdb_search_result(self, item, m):
        self.clear()
        result = m['imdb_search_result']
        print result
        metadata = m['metadata']
        loader = MetadataLoader.get_loader(metadata)
        imgpath = loader.get_poster(metadata)
        image = self.window.get_image(imgpath)
        self.window.blit(image, self.x, self.h - image.height, 0)
        
        akas = "\n".join([a.replace('::', ' -- ') for a in result.get('akas',[])])
        text = u"""<b>Title:</b> %s
<b>ID:</b> %s
<b>Year:</b> %s
<b>Type:</b> %s

<b>Also known as:</b>
%s
""" % (result['title'], metadata.id, result['year'], result['kind'], akas)

        self.window.draw_markup(text, self.window.detail_font,
                                x=self.x + image.width + 10, y=self.h,
                                anchor_x='left', anchor_y='top',
                                width=self.w - image.width - 10)
Пример #10
0
 def iter_create(self):
     loader = MetadataLoader.get_loader(self.metadata)
     posters = loader.get_known_posters(self.metadata)
     if len(posters) > 0:
         for url, path in posters:
             yield os.path.basename(path), ChangePoster(self, self.config, self.metadata, url, path)