Remove content with update library

Now remove irrelevant content as well
This commit is contained in:
angelblue05 2018-10-04 05:10:25 -05:00
commit 586717c7a1
6 changed files with 121 additions and 18 deletions

View file

@ -126,7 +126,6 @@ class Movies(KodiDb):
self.add_people(*values(obj, QU.add_people_movie_obj))
self.add_streams(*values(obj, QU.add_streams_obj))
self.artwork.add(obj['Artwork'], obj['MovieId'], "movie")
self.item_ids.append(obj['Id'])
return not update

View file

@ -30,6 +30,7 @@ class Music(KodiDb):
self.emby_db = emby_db.EmbyDatabase(embydb.cursor)
self.objects = Objects()
self.item_ids = []
KodiDb.__init__(self, musicdb.cursor)
@ -49,7 +50,7 @@ class Music(KodiDb):
@stop()
@emby_item()
@library_check()
def artist(self, item, e_item, library, artist_type=None):
def artist(self, item, e_item, library):
''' If item does not exist, entry will be added.
If item exists, entry will be updated.
@ -74,7 +75,7 @@ class Music(KodiDb):
obj['LibraryId'] = library['Id']
obj['LibraryName'] = library['Name']
obj['LastScraped'] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
obj['ArtistType'] = artist_type or "MusicArtist"
obj['ArtistType'] = "MusicArtist"
obj['Genre'] = " / ".join(obj['Genres'] or [])
obj['Bio'] = API.get_overview(obj['Bio'])
obj['Artwork'] = API.get_all_artwork(self.objects.map(item, 'ArtworkMusic'), True)
@ -96,6 +97,7 @@ class Music(KodiDb):
self.update(obj['Genre'], obj['Bio'], obj['Thumb'], obj['Backdrops'], obj['LastScraped'], obj['ArtistId'])
self.artwork.add(obj['Artwork'], obj['ArtistId'], "artist")
self.item_ids.append(obj['Id'])
def artist_add(self, obj):
@ -163,6 +165,7 @@ class Music(KodiDb):
self.update_album(*values(obj, QU.update_album_obj))
self.add_genres(*values(obj, QU.add_genres_obj))
self.artwork.add(obj['Artwork'], obj['AlbumId'], "album")
self.item_ids.append(obj['Id'])
def album_add(self, obj):
@ -218,10 +221,10 @@ class Music(KodiDb):
except Exception as error:
LOG.error(error)
continue
else:
self.update_artist_name(*values(temp_obj, QU.update_artist_name_obj))
self.update_artist_name(*values(temp_obj, QU.update_artist_name_obj))
self.link(*values(temp_obj, QU.update_link_obj))
self.item_ids.append(temp_obj['Id'])
@stop()
@ -290,6 +293,7 @@ class Music(KodiDb):
self.add_genres(*values(obj, QU.update_genre_song_obj))
self.artwork.add(obj['Artwork'], obj['SongId'], "song")
self.item_ids.append(obj['Id'])
if obj['SongAlbumId'] is None:
self.artwork.add(obj['Artwork'], obj['AlbumId'], "album")
@ -320,7 +324,7 @@ class Music(KodiDb):
self.add_song(*values(obj, QU.add_song_obj))
self.emby_db.add_reference(*values(obj, QUEM.add_reference_song_obj))
LOG.info("ADD song [%s/%s/%s] %s: %s", obj['PathId'], obj['AlbumId'], obj['SongId'], obj['Id'], obj['Title'])
LOG.debug("ADD song [%s/%s/%s] %s: %s", obj['PathId'], obj['AlbumId'], obj['SongId'], obj['Id'], obj['Title'])
def song_update(self, obj):
@ -375,6 +379,7 @@ class Music(KodiDb):
continue
self.link(*values(temp_obj, QU.update_link_obj))
self.item_ids.append(temp_obj['Id'])
if obj['Album']:
@ -408,6 +413,7 @@ class Music(KodiDb):
continue
self.link_song_artist(*values(temp_obj, QU.update_song_artist_obj))
self.item_ids.append(temp_obj['Id'])
def single(self, obj):
@ -523,3 +529,32 @@ class Music(KodiDb):
self.artwork.delete(kodi_id, "song")
self.delete_song(kodi_id)
LOG.info("DELETE song [%s] %s", kodi_id, item_id)
@emby_item()
def get_child(self, item_id, e_item):
''' Get all child elements from tv show emby id.
'''
obj = {'Id': item_id}
child = []
try:
obj['KodiId'] = e_item[0]
obj['FileId'] = e_item[1]
obj['ParentId'] = e_item[3]
obj['Media'] = e_item[4]
except TypeError:
return child
obj['ParentId'] = obj['KodiId']
for album in self.emby_db.get_item_by_parent_id(*values(obj, QUEM.get_item_by_parent_album_obj)):
temp_obj = dict(obj)
temp_obj['ParentId'] = album[1]
child.append((album[0],))
for song in self.emby_db.get_item_by_parent_id(*values(temp_obj, QUEM.get_item_by_parent_song_obj)):
child.append((song[0],))
return child

View file

@ -30,6 +30,7 @@ class MusicVideos(KodiDb):
self.emby_db = emby_db.EmbyDatabase(embydb.cursor)
self.objects = Objects()
self.item_ids = []
KodiDb.__init__(self, videodb.cursor)
@ -136,6 +137,7 @@ class MusicVideos(KodiDb):
self.add_people(*values(obj, QU.add_people_mvideo_obj))
self.add_streams(*values(obj, QU.add_streams_obj))
self.artwork.add(obj['Artwork'], obj['MvideoId'], "musicvideo")
self.item_ids.append(obj['Id'])
return not update

View file

@ -22,15 +22,17 @@ LOG = logging.getLogger("EMBY."+__name__)
class TVShows(KodiDb):
def __init__(self, server, embydb, videodb, direct_path):
def __init__(self, server, embydb, videodb, direct_path, update_library=False):
self.server = server
self.emby = embydb
self.video = videodb
self.direct_path = direct_path
self.update_library = update_library
self.emby_db = emby_db.EmbyDatabase(embydb.cursor)
self.objects = Objects()
self.item_ids = []
KodiDb.__init__(self, videodb.cursor)
@ -126,6 +128,7 @@ class TVShows(KodiDb):
self.add_genres(*values(obj, QU.add_genres_tvshow_obj))
self.add_studios(*values(obj, QU.add_studios_tvshow_obj))
self.artwork.add(obj['Artwork'], obj['ShowId'], "tvshow")
self.item_ids.append(obj['Id'])
season_episodes = {}
@ -133,9 +136,13 @@ class TVShows(KodiDb):
if season['SeriesId'] != obj['Id']:
obj['SeriesId'] = season['SeriesId']
self.item_ids.append(season['SeriesId'])
try:
self.emby_db.get_item_by_id(*values(obj, QUEM.get_item_series_obj))[0]
if self.update_library:
season_episodes[season['Id']] = season['SeriesId']
except TypeError:
self.emby_db.add_reference(*values(obj, QUEM.add_reference_pool_obj))
@ -144,6 +151,7 @@ class TVShows(KodiDb):
try:
self.emby_db.get_item_by_id(season['Id'])[0]
self.item_ids.append(season['Id'])
except TypeError:
self.season(season, obj['ShowId'])
else:
@ -236,6 +244,7 @@ class TVShows(KodiDb):
if obj['Location'] != "Virtual":
self.emby_db.add_reference(*values(obj, QUEM.add_reference_season_obj))
self.item_ids.append(obj['Id'])
self.artwork.add(obj['Artwork'], obj['SeasonId'], "season")
LOG.info("UPDATE season [%s/%s] %s: %s", obj['ShowId'], obj['SeasonId'], obj['Title'] or obj['Index'], obj['Id'])
@ -336,6 +345,7 @@ class TVShows(KodiDb):
self.add_streams(*values(obj, QU.add_streams_obj))
self.add_playstate(*values(obj, QU.add_bookmark_obj))
self.artwork.update(obj['Artwork']['Primary'], obj['EpisodeId'], "episode", "thumb")
self.item_ids.append(obj['Id'])
if not self.direct_path and obj['Resume']:
@ -421,6 +431,8 @@ class TVShows(KodiDb):
else:
obj['ShowId'] = obj['ShowId'][0]
self.item_ids.append(obj['SeriesId'])
return True
@ -558,7 +570,7 @@ class TVShows(KodiDb):
if not self.emby_db.get_item_by_parent_id(*values(obj, QUEM.delete_item_by_parent_season_obj)):
self.remove_show(obj['ParentId'], obj['Id'])
self.remove_tvshow(obj['ParentId'], obj['Id'])
self.emby_db.remove_item_by_kodi_id(*values(obj, QUEM.delete_item_by_parent_tvshow_obj))
# Remove any series pooling episodes
@ -586,3 +598,35 @@ class TVShows(KodiDb):
self.artwork.delete(kodi_id, "episode")
self.delete_episode(kodi_id, file_id)
LOG.info("DELETE episode [%s/%s] %s", file_id, kodi_id, item_id)
@emby_item()
def get_child(self, item_id, e_item):
''' Get all child elements from tv show emby id.
'''
obj = {'Id': item_id}
child = []
try:
obj['KodiId'] = e_item[0]
obj['FileId'] = e_item[1]
obj['ParentId'] = e_item[3]
obj['Media'] = e_item[4]
except TypeError:
return child
obj['ParentId'] = obj['KodiId']
for season in self.emby_db.get_item_by_parent_id(*values(obj, QUEM.get_item_by_parent_season_obj)):
temp_obj = dict(obj)
temp_obj['ParentId'] = season[1]
child.append(season[0])
for episode in self.emby_db.get_item_by_parent_id(*values(temp_obj, QUEM.get_item_by_parent_episode_obj)):
child.append(episode[0])
for episode in self.emby_db.get_media_by_parent_id(obj['Id']):
child.append(episode[0])
return child