def run(self): with self.lock, self.database as kodidb, Database( 'jellyfin') as jellyfindb: default_args = (self.server, jellyfindb, kodidb, self.direct_path) if kodidb.db_file == "video": movies = Movies(*default_args) tvshows = TVShows(*default_args) elif kodidb.db_file == "music": music = Music(*default_args) else: # this should not happen LOG.error('"{}" is not a valid Kodi library type.'.format( kodidb.db_file)) return while True: try: item = self.queue.get(timeout=1) except Queue.Empty: break try: if item['Type'] == 'Movie': movies.userdata(item) elif item['Type'] in ['Series', 'Season', 'Episode']: tvshows.userdata(item) elif item['Type'] == 'MusicAlbum': music.album(item) elif item['Type'] == 'MusicArtist': music.artist(item) elif item['Type'] == 'AlbumArtist': music.albumartist(item) elif item['Type'] == 'Audio': music.userdata(item) except LibraryException as error: if error.status == 'StopCalled': break except Exception as error: LOG.exception(error) self.queue.task_done() if window('jellyfin_should_stop.bool'): break LOG.info("--<[ q:userdata/%s ]", id(self)) self.is_done = True
def run(self): with self.lock, self.database as kodidb, Database( 'jellyfin') as jellyfindb: default_args = (self.server, jellyfindb, kodidb, self.direct_path) if kodidb.db_file == "video": movies = Movies(*default_args) tvshows = TVShows(*default_args) musicvideos = MusicVideos(*default_args) elif kodidb.db_file == "music": music = Music(*default_args) else: # this should not happen LOG.error('"{}" is not a valid Kodi library type.'.format( kodidb.db_file)) return while True: try: item = self.queue.get(timeout=1) except Queue.Empty: break try: LOG.debug('{} - {}'.format(item['Type'], item['Name'])) if item['Type'] == 'Movie': movies.movie(item) elif item['Type'] == 'BoxSet': movies.boxset(item) elif item['Type'] == 'Series': tvshows.tvshow(item) elif item['Type'] == 'Season': tvshows.season(item) elif item['Type'] == 'Episode': tvshows.episode(item) elif item['Type'] == 'MusicVideo': musicvideos.musicvideo(item) elif item['Type'] == 'MusicAlbum': music.album(item) elif item['Type'] == 'MusicArtist': music.artist(item) elif item['Type'] == 'AlbumArtist': music.albumartist(item) elif item['Type'] == 'Audio': music.song(item) if self.notify: self.notify_output.put( (item['Type'], api.API(item).get_naming())) except LibraryException as error: if error.status == 'StopCalled': break except Exception as error: LOG.exception(error) self.queue.task_done() if window('jellyfin_should_stop.bool'): break LOG.info("--<[ q:updated/%s ]", id(self)) self.is_done = True