Speed up sync with dedicated add_artwork method
This commit is contained in:
parent
096af4dc7c
commit
463d0540a4
4 changed files with 58 additions and 24 deletions
|
@ -111,6 +111,9 @@ class Movie(ItemBase):
|
||||||
self.kodidb.modify_people(kodi_id,
|
self.kodidb.modify_people(kodi_id,
|
||||||
v.KODI_TYPE_MOVIE,
|
v.KODI_TYPE_MOVIE,
|
||||||
api.people_list())
|
api.people_list())
|
||||||
|
self.kodidb.modify_artwork(api.artwork(),
|
||||||
|
kodi_id,
|
||||||
|
v.KODI_TYPE_MOVIE)
|
||||||
else:
|
else:
|
||||||
LOG.info("ADD movie plex_id: %s - %s", plex_id, title)
|
LOG.info("ADD movie plex_id: %s - %s", plex_id, title)
|
||||||
rating_id = self.kodidb.get_ratingid(kodi_id,
|
rating_id = self.kodidb.get_ratingid(kodi_id,
|
||||||
|
@ -134,6 +137,9 @@ class Movie(ItemBase):
|
||||||
self.kodidb.add_people(kodi_id,
|
self.kodidb.add_people(kodi_id,
|
||||||
v.KODI_TYPE_MOVIE,
|
v.KODI_TYPE_MOVIE,
|
||||||
api.people_list())
|
api.people_list())
|
||||||
|
self.kodidb.add_artwork(api.artwork(),
|
||||||
|
kodi_id,
|
||||||
|
v.KODI_TYPE_MOVIE)
|
||||||
|
|
||||||
# Update Kodi's main entry
|
# Update Kodi's main entry
|
||||||
self.kodidb.add_movie(kodi_id,
|
self.kodidb.add_movie(kodi_id,
|
||||||
|
@ -163,9 +169,7 @@ class Movie(ItemBase):
|
||||||
|
|
||||||
self.kodidb.modify_countries(kodi_id, v.KODI_TYPE_MOVIE, countries)
|
self.kodidb.modify_countries(kodi_id, v.KODI_TYPE_MOVIE, countries)
|
||||||
self.kodidb.modify_genres(kodi_id, v.KODI_TYPE_MOVIE, genres)
|
self.kodidb.modify_genres(kodi_id, v.KODI_TYPE_MOVIE, genres)
|
||||||
self.kodidb.modify_artwork(api.artwork(),
|
|
||||||
kodi_id,
|
|
||||||
v.KODI_TYPE_MOVIE)
|
|
||||||
self.kodidb.modify_streams(file_id, api.mediastreams(), runtime)
|
self.kodidb.modify_streams(file_id, api.mediastreams(), runtime)
|
||||||
self.kodidb.modify_studios(kodi_id, v.KODI_TYPE_MOVIE, studios)
|
self.kodidb.modify_studios(kodi_id, v.KODI_TYPE_MOVIE, studios)
|
||||||
tags = [section_name]
|
tags = [section_name]
|
||||||
|
|
|
@ -183,6 +183,9 @@ class Show(ItemBase, TvShowMixin):
|
||||||
self.kodidb.modify_people(kodi_id,
|
self.kodidb.modify_people(kodi_id,
|
||||||
v.KODI_TYPE_SHOW,
|
v.KODI_TYPE_SHOW,
|
||||||
api.people_list())
|
api.people_list())
|
||||||
|
self.kodidb.modify_artwork(api.artwork(),
|
||||||
|
kodi_id,
|
||||||
|
v.KODI_TYPE_SHOW)
|
||||||
# Update the tvshow entry
|
# Update the tvshow entry
|
||||||
self.kodidb.update_show(api.title(),
|
self.kodidb.update_show(api.title(),
|
||||||
api.plot(),
|
api.plot(),
|
||||||
|
@ -220,6 +223,9 @@ class Show(ItemBase, TvShowMixin):
|
||||||
self.kodidb.add_people(kodi_id,
|
self.kodidb.add_people(kodi_id,
|
||||||
v.KODI_TYPE_SHOW,
|
v.KODI_TYPE_SHOW,
|
||||||
api.people_list())
|
api.people_list())
|
||||||
|
self.kodidb.add_artwork(api.artwork(),
|
||||||
|
kodi_id,
|
||||||
|
v.KODI_TYPE_SHOW)
|
||||||
# Create the tvshow entry
|
# Create the tvshow entry
|
||||||
self.kodidb.add_show(kodi_id,
|
self.kodidb.add_show(kodi_id,
|
||||||
api.title(),
|
api.title(),
|
||||||
|
@ -233,9 +239,6 @@ class Show(ItemBase, TvShowMixin):
|
||||||
studio,
|
studio,
|
||||||
api.sorttitle())
|
api.sorttitle())
|
||||||
self.kodidb.modify_genres(kodi_id, v.KODI_TYPE_SHOW, genres)
|
self.kodidb.modify_genres(kodi_id, v.KODI_TYPE_SHOW, genres)
|
||||||
self.kodidb.modify_artwork(api.artwork(),
|
|
||||||
kodi_id,
|
|
||||||
v.KODI_TYPE_SHOW)
|
|
||||||
# Process studios
|
# Process studios
|
||||||
self.kodidb.modify_studios(kodi_id, v.KODI_TYPE_SHOW, studios)
|
self.kodidb.modify_studios(kodi_id, v.KODI_TYPE_SHOW, studios)
|
||||||
# Process tags: view, PMS collection tags
|
# Process tags: view, PMS collection tags
|
||||||
|
@ -263,6 +266,11 @@ class Season(ItemBase, TvShowMixin):
|
||||||
LOG.error('Error getting plex_id for season, skipping: %s',
|
LOG.error('Error getting plex_id for season, skipping: %s',
|
||||||
xml.attrib)
|
xml.attrib)
|
||||||
return
|
return
|
||||||
|
season = self.plexdb.season(plex_id)
|
||||||
|
if not season:
|
||||||
|
update_item = False
|
||||||
|
else:
|
||||||
|
update_item = True
|
||||||
show_id = api.parent_id()
|
show_id = api.parent_id()
|
||||||
show = self.plexdb.show(show_id)
|
show = self.plexdb.show(show_id)
|
||||||
if not show:
|
if not show:
|
||||||
|
@ -280,10 +288,16 @@ class Season(ItemBase, TvShowMixin):
|
||||||
LOG.error('Still could not find parent tv show %s', show_id)
|
LOG.error('Still could not find parent tv show %s', show_id)
|
||||||
return
|
return
|
||||||
parent_id = show['kodi_id']
|
parent_id = show['kodi_id']
|
||||||
kodi_id = self.kodidb.add_season(parent_id, api.season_number())
|
if update_item:
|
||||||
|
kodi_id = season['kodi_id']
|
||||||
self.kodidb.modify_artwork(api.artwork(),
|
self.kodidb.modify_artwork(api.artwork(),
|
||||||
kodi_id,
|
kodi_id,
|
||||||
v.KODI_TYPE_SEASON)
|
v.KODI_TYPE_SEASON)
|
||||||
|
else:
|
||||||
|
kodi_id = self.kodidb.add_season(parent_id, api.season_number())
|
||||||
|
self.kodidb.add_artwork(api.artwork(),
|
||||||
|
kodi_id,
|
||||||
|
v.KODI_TYPE_SEASON)
|
||||||
self.plexdb.add_season(plex_id=plex_id,
|
self.plexdb.add_season(plex_id=plex_id,
|
||||||
checksum=api.checksum(),
|
checksum=api.checksum(),
|
||||||
section_id=section_id,
|
section_id=section_id,
|
||||||
|
@ -423,6 +437,9 @@ class Episode(ItemBase, TvShowMixin):
|
||||||
self.kodidb.modify_people(kodi_id,
|
self.kodidb.modify_people(kodi_id,
|
||||||
v.KODI_TYPE_EPISODE,
|
v.KODI_TYPE_EPISODE,
|
||||||
api.people_list())
|
api.people_list())
|
||||||
|
self.kodidb.modify_artwork(api.artwork(),
|
||||||
|
kodi_id,
|
||||||
|
v.KODI_TYPE_EPISODE)
|
||||||
self.kodidb.update_episode(api.title(),
|
self.kodidb.update_episode(api.title(),
|
||||||
api.plot(),
|
api.plot(),
|
||||||
ratingid,
|
ratingid,
|
||||||
|
@ -465,6 +482,9 @@ class Episode(ItemBase, TvShowMixin):
|
||||||
self.kodidb.add_people(kodi_id,
|
self.kodidb.add_people(kodi_id,
|
||||||
v.KODI_TYPE_EPISODE,
|
v.KODI_TYPE_EPISODE,
|
||||||
api.people_list())
|
api.people_list())
|
||||||
|
self.kodidb.add_artwork(api.artwork(),
|
||||||
|
kodi_id,
|
||||||
|
v.KODI_TYPE_EPISODE)
|
||||||
self.kodidb.add_episode(kodi_id,
|
self.kodidb.add_episode(kodi_id,
|
||||||
kodi_fileid,
|
kodi_fileid,
|
||||||
api.title(),
|
api.title(),
|
||||||
|
@ -485,9 +505,6 @@ class Episode(ItemBase, TvShowMixin):
|
||||||
parent_id,
|
parent_id,
|
||||||
userdata['UserRating'])
|
userdata['UserRating'])
|
||||||
|
|
||||||
self.kodidb.modify_artwork(api.artwork(),
|
|
||||||
kodi_id,
|
|
||||||
v.KODI_TYPE_EPISODE)
|
|
||||||
streams = api.mediastreams()
|
streams = api.mediastreams()
|
||||||
self.kodidb.modify_streams(kodi_fileid, streams, api.runtime())
|
self.kodidb.modify_streams(kodi_fileid, streams, api.runtime())
|
||||||
self.kodidb.set_resume(kodi_fileid,
|
self.kodidb.set_resume(kodi_fileid,
|
||||||
|
|
|
@ -43,6 +43,24 @@ class KodiDBBase(object):
|
||||||
self.cursor.execute('SELECT url FROM art WHERE type == ?',
|
self.cursor.execute('SELECT url FROM art WHERE type == ?',
|
||||||
(kodi_type, )))
|
(kodi_type, )))
|
||||||
|
|
||||||
|
def add_artwork(self, artworks, kodi_id, kodi_type):
|
||||||
|
"""
|
||||||
|
Pass in an artworks dict (see PlexAPI) to set an items artwork.
|
||||||
|
"""
|
||||||
|
for kodi_art, url in artworks.iteritems():
|
||||||
|
self.add_art(url, kodi_id, kodi_type, kodi_art)
|
||||||
|
|
||||||
|
def add_art(self, url, kodi_id, kodi_type, kodi_art):
|
||||||
|
"""
|
||||||
|
Adds or modifies the artwork of kind kodi_art (e.g. 'poster') in the
|
||||||
|
Kodi art table for item kodi_id/kodi_type. Will also cache everything
|
||||||
|
except actor portraits.
|
||||||
|
"""
|
||||||
|
self.cursor.execute('''
|
||||||
|
INSERT INTO art(media_id, media_type, type, url)
|
||||||
|
VALUES (?, ?, ?, ?)
|
||||||
|
''', (kodi_id, kodi_type, kodi_art, url))
|
||||||
|
|
||||||
def modify_artwork(self, artworks, kodi_id, kodi_type):
|
def modify_artwork(self, artworks, kodi_id, kodi_type):
|
||||||
"""
|
"""
|
||||||
Pass in an artworks dict (see PlexAPI) to set an items artwork.
|
Pass in an artworks dict (see PlexAPI) to set an items artwork.
|
||||||
|
|
|
@ -725,11 +725,6 @@ class KodiVideoDB(common.KodiDBBase):
|
||||||
Adds a TV show season to the Kodi video DB or simply returns the ID,
|
Adds a TV show season to the Kodi video DB or simply returns the ID,
|
||||||
if there already is an entry in the DB
|
if there already is an entry in the DB
|
||||||
"""
|
"""
|
||||||
self.cursor.execute('SELECT idSeason FROM seasons WHERE idShow = ? AND season = ?',
|
|
||||||
(showid, seasonnumber,))
|
|
||||||
try:
|
|
||||||
seasonid = self.cursor.fetchone()[0]
|
|
||||||
except TypeError:
|
|
||||||
self.cursor.execute("SELECT COALESCE(MAX(idSeason),0) FROM seasons")
|
self.cursor.execute("SELECT COALESCE(MAX(idSeason),0) FROM seasons")
|
||||||
seasonid = self.cursor.fetchone()[0] + 1
|
seasonid = self.cursor.fetchone()[0] + 1
|
||||||
self.cursor.execute('''
|
self.cursor.execute('''
|
||||||
|
|
Loading…
Reference in a new issue