diff --git a/README.md b/README.md index 4c35e5ab..1ce160bd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -[![stable version](https://img.shields.io/badge/stable_version-2.6.0-blue.svg?maxAge=60&style=flat) ](https://github.com/croneter/binary_repo/raw/master/stable/repository.plexkodiconnect/repository.plexkodiconnect-1.0.2.zip) -[![beta version](https://img.shields.io/badge/beta_version-2.6.0-red.svg?maxAge=60&style=flat) ](https://github.com/croneter/binary_repo/raw/master/beta/repository.plexkodiconnectbeta/repository.plexkodiconnectbeta-1.0.2.zip) +[![stable version](https://img.shields.io/badge/stable_version-2.6.1-blue.svg?maxAge=60&style=flat) ](https://github.com/croneter/binary_repo/raw/master/stable/repository.plexkodiconnect/repository.plexkodiconnect-1.0.2.zip) +[![beta version](https://img.shields.io/badge/beta_version-2.6.1-red.svg?maxAge=60&style=flat) ](https://github.com/croneter/binary_repo/raw/master/beta/repository.plexkodiconnectbeta/repository.plexkodiconnectbeta-1.0.2.zip) [![Installation](https://img.shields.io/badge/wiki-installation-brightgreen.svg?maxAge=60&style=flat)](https://github.com/croneter/PlexKodiConnect/wiki/Installation) [![FAQ](https://img.shields.io/badge/wiki-FAQ-brightgreen.svg?maxAge=60&style=flat)](https://github.com/croneter/PlexKodiConnect/wiki/faq) diff --git a/addon.xml b/addon.xml index 464e1535..aac1e503 100644 --- a/addon.xml +++ b/addon.xml @@ -1,5 +1,5 @@ - + @@ -77,7 +77,14 @@ Нативна інтеграція Plex в Kodi Підключає Kodi до серверу Plex. Цей плагін передбачає, що ви керуєте всіма своїми відео за допомогою Plex (і ніяк не Kodi). Ви можете втратити дані, які вже зберігаються у відео та музичних БД Kodi (оскільки цей плагін безпосередньо їх змінює). Використовуйте на свій страх і ризик! Використовуйте на свій ризик - version 2.6.0: + version 2.6.1: +- WARNING: You will need to reset the Kodi database! +- Fix TV sections not being deleted e.g. after user switch +- Don't show a library sync error pop-up when full sync is interrupted +- Fix to correctly escape paths +- Update translations + +version 2.6.0: - Support for Kodi 18 Leia - Big overhaul of the synching process, it's now much faster - PKC now supports really big Plex and Kodi libraries diff --git a/changelog.txt b/changelog.txt index 83656dd9..b4d9d91b 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,10 @@ +version 2.6.1: +- WARNING: You will need to reset the Kodi database! +- Fix TV sections not being deleted e.g. after user switch +- Don't show a library sync error pop-up when full sync is interrupted +- Fix to correctly escape paths +- Update translations + version 2.6.0: - Support for Kodi 18 Leia - Big overhaul of the synching process, it's now much faster diff --git a/resources/language/resource.language.hu_HU/strings.po b/resources/language/resource.language.hu_HU/strings.po index f462b2f8..a702045c 100644 --- a/resources/language/resource.language.hu_HU/strings.po +++ b/resources/language/resource.language.hu_HU/strings.po @@ -1,6 +1,6 @@ # XBMC Media Center language file # Translators: -# Croneter None , 2018 +# Croneter None , 2019 # msgid "" msgstr "" @@ -8,7 +8,7 @@ msgstr "" "Report-Msgid-Bugs-To: croneter@gmail.com\n" "POT-Creation-Date: 2017-04-15 13:13+0000\n" "PO-Revision-Date: 2017-04-30 08:30+0000\n" -"Last-Translator: Croneter None , 2018\n" +"Last-Translator: Croneter None , 2019\n" "Language-Team: Hungarian (Hungary) (https://www.transifex.com/croneter/teams/73837/hu_HU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -97,7 +97,7 @@ msgstr "Kapcsolat" # Pop-up notification if user tried to manually initiate fanart download msgctxt "#30015" msgid "Fanart download already running" -msgstr "" +msgstr "Már fut a művészképek letöltése" msgctxt "#30016" msgid "Device Name" @@ -159,7 +159,7 @@ msgstr "Kodi lejátszási lista előtag szinkronizálásra kijelöléshez" # PKC settings artwork options: status info msgctxt "#30028" msgid "PKC-only image caching completed" -msgstr "" +msgstr "PKC képek gyorsítótárazása befejeződött" msgctxt "#30030" msgid "Port Number" @@ -322,12 +322,15 @@ msgid "" "In the following window, enter the server's hostname (or IP) where your Plex" " media resides. Mind the case!" msgstr "" +"A következő ablakban adja meg a szerver kiszolgálónevét (vagy IP címét) " +"amelyen a Plex médiatartalmak megtalálhatók. Figyeljen a kis- és " +"nagybetűkre!" # For setting up direct paths and adding network credentials - input window # for hostname msgctxt "#30201" msgid "Enter server hostname (or IP)" -msgstr "" +msgstr "Adja meg a szerver kiszolgálónevét (vagy IP címét)" # For setting up direct paths and adding network credentials msgctxt "#30202" @@ -335,22 +338,24 @@ msgid "" "In the following window, enter the network protocol you would like to use. " "This is likely 'smb'." msgstr "" +"A következő ablakban adja meg a használni kívánt hálózati protokollt. Ez " +"valószínűleg az 'smb'." # For setting up direct paths and adding network credentials - input window # protocol msgctxt "#30203" msgid "Enter network protocol" -msgstr "" +msgstr "Adja meg a hálózati protokollt" # For setting up direct paths and adding network credentials msgctxt "#30204" msgid "The hostname or IP '{0}' that you entered is not valid." -msgstr "" +msgstr "A megadott kiszolgálónév vagy IP cím '{0}' helytelen." # For setting up direct paths and adding network credentials msgctxt "#30205" msgid "The protocol '{0}' that you entered is not supported." -msgstr "" +msgstr "A megadott hálózati protokoll ('{0}') nem támogatott." # Video node naming for random e.g. movies msgctxt "#30227" @@ -469,6 +474,8 @@ msgid "" "Could not change the Kodi settings file {0}. PKC might not work correctly. " "Error: {1}" msgstr "" +"A {0} Kodi beállításfájl megváltoztatása sikertelen. Lehet, hogy a PKC nem " +"fog megfelelően működni.Hiba: {1}" # PKC Settings - Connection msgctxt "#30500" @@ -483,7 +490,7 @@ msgstr "Kliens SSL tanúsítvány" # PKC Settings - Artwork msgctxt "#30502" msgid "Sync Plex artwork from the PMS (recommended)" -msgstr "" +msgstr "Plex művészképek szinkronizálása a szerverről (ajánlott)" # PKC Settings, category name msgctxt "#30506" @@ -545,6 +552,8 @@ msgstr "Lejátszás" msgctxt "#30517" msgid "Set network credentials for Direct Paths and direct play" msgstr "" +"Hálózati hozzáférési adatok megadása a közvetlen útvonalakhoz és közvetlen " +"lejátszáshoz" # PKC Settings - Playback msgctxt "#30518" @@ -575,6 +584,8 @@ msgstr "h265/HEVC transzkódolás kényszerítése" msgctxt "#30523" msgid "Also show sync progress for playstate and user data" msgstr "" +"Szinkronizálási folyamat állapotának mutatása a lejátszási- és felhasználói " +"adatok esetén is" # PKC Settings - Playback msgctxt "#30527" @@ -689,11 +700,11 @@ msgstr "Hibás felhasználónév vagy jelszó" msgctxt "#33010" msgid "User is unauthorized for server {0}" -msgstr "" +msgstr "A felhasználó nem jogosult a {0} szerverhez való hozzáférésre" msgctxt "#33011" msgid "Plex.tv did not provide us a valid list of Plex users, sorry." -msgstr "" +msgstr "A Plex.tv sajnos nem adta meg a jogosult Plex felhasználók listáját" # Dialog before playback msgctxt "#33013" @@ -838,7 +849,7 @@ msgstr "" # PKC Settings - Artwork msgctxt "#39020" msgid "Cache all images to Kodi texture cache now" -msgstr "" +msgstr "Minden kép gyorsítótárazása a Kodi gyorsítótárába most" # Appended to a listed PMS if it is in the same LAN network as PKC msgctxt "#39022" @@ -925,6 +936,7 @@ msgstr "" msgctxt "#39036" msgid "Escape special characters in path (e.g. space to %20)" msgstr "" +"A speciális karakterek feloldása az elérési útban (pl. szóköz helyett %20)" # PKC Settings - Customize Paths msgctxt "#39037" @@ -1002,7 +1014,7 @@ msgstr "Semmi sem működik? Próbálja meg a teljes visszaállítást!" # PKC Settings - Connection msgctxt "#39050" msgid "Choose Plex Server from a list" -msgstr "" +msgstr "Válasszon Plex szervert a listából" # PKC Settings - Sync msgctxt "#39051" @@ -1100,7 +1112,7 @@ msgstr "Az Ön jelenlegi Plex médiaszervere:" # PKC Settings - Connection msgctxt "#39068" msgid "Manually enter Plex Media Server address" -msgstr "" +msgstr "Plex médiaszerver címének kézi megadása" # PKC Settings - Connection msgctxt "#39069" @@ -1170,20 +1182,24 @@ msgid "" "Use Add-on Paths (default, easy) or Direct Paths? Choose Add-on Paths if " "you're unsure. PKC will not work if your Direct Paths setup is wrong!" msgstr "" +"Bővítmény elérési utakat (alapértelmezett, egyszerű) vagy közvetlen elérési " +"utakat kíván használni? Ha nem biztos benne, válassza a bővítmény elérési " +"utakat. A PKC nem fog működni, ha a közvetlen elérési utak rosszul vannak " +"beállítva!" # Button text for choosing PKC mode msgctxt "#39081" msgid "Add-on Paths" -msgstr "" +msgstr "Bővítmény elérési utak" # Button text for choosing PKC mode msgctxt "#39082" msgid "Direct Paths" -msgstr "" +msgstr "Közvetlen elérési utak" msgctxt "#39200" msgid "Log-out Plex Home User " -msgstr "Kijelentkezés az otthoni Plex felhasználó fiókból" +msgstr "Kijelentkezés az otthoni Plex felhasználó fiókból: " msgctxt "#39201" msgid "Settings" @@ -1219,7 +1235,7 @@ msgstr "A PKC visszaállítása sikertelen. Kérem indítsa újra a Kodi-t." # PKC Settings - Plex msgctxt "#39209" msgid "Toggle plex.tv login (sign in or sign out)" -msgstr "" +msgstr "Plex.tv bejelentkezés átkapcsolása (be- vagy kijelentkezés)" msgctxt "#39210" msgid "Not yet connected to Plex Server" @@ -1265,7 +1281,7 @@ msgstr "plex.tv átkapcsolás sikeres" msgctxt "#39222" msgid "Look for missing fanart on FanartTV now" -msgstr "" +msgstr "Hiányzó művészképek keresése a FanArtTV-n most" msgctxt "#39223" msgid "" @@ -1303,7 +1319,7 @@ msgstr "Plex felhasználó:" # appended at the end of the string msgctxt "#39229" msgid "Login failed with plex.tv for user" -msgstr "" +msgstr "Sikertelen bejelentkezés a plex.tv-re a következő felhasználóval" msgctxt "#39250" msgid "" @@ -1379,6 +1395,8 @@ msgid "" "The current Kodi version is not supported by PKC. Please consult the Plex " "forum." msgstr "" +"A PKC nem támogatja a jelenlegi Kodi verziót. Kérjen tanácsot a Plex " +"fórumon." msgctxt "#39405" msgid "Plex playlists/nodes refreshed" diff --git a/resources/language/resource.language.nl_NL/strings.po b/resources/language/resource.language.nl_NL/strings.po index 891bcaf6..166b39c4 100644 --- a/resources/language/resource.language.nl_NL/strings.po +++ b/resources/language/resource.language.nl_NL/strings.po @@ -1288,12 +1288,12 @@ msgstr "Alleen ontbrekende" # Message in the PKC settings if user has not logged in to plex.tv msgctxt "#39226" msgid "Not logged in to plex.tv" -msgstr "Niet ingelogd op plek.tv" +msgstr "Niet ingelogd op plex.tv" # Message in the PKC settings if user is logged in to plex.tv msgctxt "#39227" msgid "Logged in to plex.tv" -msgstr "Ingelogd op plek.tv" +msgstr "Ingelogd op plex.tv" # Message in the PKC settings to display the plex.tv username. Leave the colon # : diff --git a/resources/lib/itemtypes/music.py b/resources/lib/itemtypes/music.py index a182f7ef..20dc516c 100644 --- a/resources/lib/itemtypes/music.py +++ b/resources/lib/itemtypes/music.py @@ -81,7 +81,7 @@ class MusicMixin(object): self.remove_song(db_item['kodi_id'], db_item['kodi_pathid']) # Album verification if not self.plexdb.album_has_songs(db_item['album_id']): - # No episode left for this season - so delete the season + # No songleft for this album - so delete the album self.remove_album(db_item['parent_id']) self.plexdb.remove(db_item['album_id'], v.PLEX_TYPE_ALBUM) # Artist verification @@ -91,8 +91,9 @@ class MusicMixin(object): self.plexdb.remove(db_item['artist_id'], v.PLEX_TYPE_ARTIST) # ALBUM ##### elif db_item['plex_type'] == v.PLEX_TYPE_ALBUM: - # Remove episodes, season, verify tvshow - for song in self.plexdb.song_by_album(db_item['plex_id']): + # Remove songs, album, verify artist + songs = list(self.plexdb.song_by_album(db_item['plex_id'])) + for song in songs: self.remove_song(song['kodi_id'], song['kodi_pathid']) self.plexdb.remove(song['plex_id'], v.PLEX_TYPE_SONG) # Remove the album @@ -100,16 +101,18 @@ class MusicMixin(object): # Show verification if (not self.plexdb.artist_has_albums(db_item['kodi_id']) and not self.plexdb.artist_has_songs(db_item['kodi_id'])): - # There's no other season or episode left, delete the show + # There's no other album or song left, delete the artist self.remove_artist(db_item['parent_id']) self.plexdb.remove(db_item['artist_id'], v.KODI_TYPE_ARTIST) # ARTIST ##### elif db_item['plex_type'] == v.PLEX_TYPE_ARTIST: # Remove songs, albums and the artist himself - for song in self.plexdb.song_by_artist(db_item['plex_id']): + songs = list(self.plexdb.song_by_artist(db_item['plex_id'])) + for song in songs: self.remove_song(song['kodi_id'], song['kodi_pathid']) self.plexdb.remove(song['plex_id'], v.PLEX_TYPE_SONG) - for album in self.plexdb.album_by_artist(db_item['plex_id']): + albums = list(self.plexdb.album_by_artist(db_item['plex_id'])) + for album in albums: self.remove_album(album['kodi_id']) self.plexdb.remove(album['plex_id'], v.PLEX_TYPE_ALBUM) self.remove_artist(db_item['kodi_id']) diff --git a/resources/lib/itemtypes/tvshows.py b/resources/lib/itemtypes/tvshows.py index 9df90157..f8fd5759 100644 --- a/resources/lib/itemtypes/tvshows.py +++ b/resources/lib/itemtypes/tvshows.py @@ -70,7 +70,8 @@ class TvShowMixin(object): # SEASON ##### elif db_item['plex_type'] == v.PLEX_TYPE_SEASON: # Remove episodes, season, verify tvshow - for episode in self.plexdb.episode_by_season(db_item['plex_id']): + episodes = list(self.plexdb.episode_by_season(db_item['plex_id'])) + for episode in episodes: self.remove_episode(episode['kodi_id'], episode['kodi_fileid']) self.plexdb.remove(episode['plex_id'], v.PLEX_TYPE_EPISODE) # Remove season @@ -84,13 +85,15 @@ class TvShowMixin(object): # TVSHOW ##### elif db_item['plex_type'] == v.PLEX_TYPE_SHOW: # Remove episodes, seasons and the tvshow itself - for episode in self.plexdb.episode_by_show(db_item['plex_id']): + seasons = list(self.plexdb.season_by_show(db_item['plex_id'])) + for season in seasons: + self.remove_season(season['kodi_id']) + self.plexdb.remove(season['plex_id'], v.PLEX_TYPE_SEASON) + episodes = list(self.plexdb.episode_by_show(db_item['plex_id'])) + for episode in episodes: self.remove_episode(episode['kodi_id'], episode['kodi_fileid']) self.plexdb.remove(episode['plex_id'], v.PLEX_TYPE_EPISODE) - for season in self.plexdb.season_by_show(db_item['plex_id']): - self.remove_season(season['kodi_id']) - self.plexdb.remove(season['plex_id'], v.PLEX_TYPE_SEASON) self.remove_show(db_item['kodi_id']) LOG.debug('Deleted %s %s from all databases', diff --git a/resources/lib/library_sync/full_sync.py b/resources/lib/library_sync/full_sync.py index 855a694b..6e2b1119 100644 --- a/resources/lib/library_sync/full_sync.py +++ b/resources/lib/library_sync/full_sync.py @@ -415,6 +415,12 @@ class FullSync(common.fullsync_mixin): self.dialog.close() if self.threader: self.threader.shutdown() + if not self.successful and not self.isCanceled(): + # "ERROR in library sync" + utils.dialog('notification', + heading='{plex}', + message=utils.lang(39410), + icon='{error}') if self.callback: self.callback(self.successful) LOG.info('Done full_sync') diff --git a/resources/lib/library_sync/sections.py b/resources/lib/library_sync/sections.py index 9b5eca66..fdb1b89d 100644 --- a/resources/lib/library_sync/sections.py +++ b/resources/lib/library_sync/sections.py @@ -13,12 +13,17 @@ from .. import plex_functions as PF, music, utils, variables as v, app LOG = getLogger('PLEX.sync.sections') +BATCH_SIZE = 200 VNODES = videonodes.VideoNodes() PLAYLISTS = {} NODES = {} SECTIONS = [] +def isCanceled(): + return app.APP.stop_pkc or app.APP.suspend_threads or app.SYNC.stop_sync + + def sync_from_pms(): """ Sync the Plex library sections @@ -198,56 +203,61 @@ def _process_section(section_xml, kodidb, plexdb, sorted_sections, return totalnodes +def _delete_kodi_db_items(section_id, section_type): + if section_type == v.PLEX_TYPE_MOVIE: + kodi_context = kodi_db.KodiVideoDB + types = ((v.PLEX_TYPE_MOVIE, itemtypes.Movie), ) + elif section_type == v.PLEX_TYPE_SHOW: + kodi_context = kodi_db.KodiVideoDB + types = ((v.PLEX_TYPE_SHOW, itemtypes.Show), + (v.PLEX_TYPE_SEASON, itemtypes.Season), + (v.PLEX_TYPE_EPISODE, itemtypes.Episode)) + elif section_type == v.PLEX_TYPE_ARTIST: + kodi_context = kodi_db.KodiMusicDB + types = ((v.PLEX_TYPE_ARTIST, itemtypes.Artist), + (v.PLEX_TYPE_ALBUM, itemtypes.Album), + (v.PLEX_TYPE_SONG, itemtypes.Song)) + for plex_type, context in types: + while True: + with PlexDB() as plexdb: + plex_ids = list(plexdb.plexid_by_sectionid(section_id, + plex_type, + BATCH_SIZE)) + with kodi_context(texture_db=True) as kodidb: + typus = context(None, plexdb=plexdb, kodidb=kodidb) + for plex_id in plex_ids: + if isCanceled(): + return False + typus.remove(plex_id) + if len(plex_ids) < BATCH_SIZE: + break + return True + + def delete_sections(old_sections): """ Deletes all elements for a Plex section that has been deleted. (e.g. all TV shows, Seasons and Episodes of a Show section) """ - utils.dialog('notification', - heading='{plex}', - message=utils.lang(30052), - icon='{plex}', - sound=False) - video_library_update = False - music_library_update = False - with PlexDB() as plexdb: - old_sections = [plexdb.section(x) for x in old_sections] + try: + with PlexDB() as plexdb: + old_sections = [plexdb.section(x) for x in old_sections] LOG.info("Removing entire Plex library sections: %s", old_sections) - with kodi_db.KodiVideoDB(texture_db=True) as kodidb: - for section in old_sections: - if section[2] == v.KODI_TYPE_PHOTO: - # not synced - plexdb.remove_section(section[0]) - continue - elif section[2] == v.KODI_TYPE_MOVIE: - video_library_update = True - context = itemtypes.Movie(None, - plexdb=plexdb, - kodidb=kodidb) - elif section[2] == v.KODI_TYPE_SHOW: - video_library_update = True - context = itemtypes.Show(None, - plexdb=plexdb, - kodidb=kodidb) - else: - continue - for plex_id in plexdb.plexid_by_sectionid(section[0], section[2]): - context.remove(plex_id) - # Only remove Plex entry if we've removed all items first + for section in old_sections: + # "Deleting " + utils.dialog('notification', + heading='{plex}', + message='%s %s' % (utils.lang(30052), section[1]), + icon='{plex}', + sound=False) + if section[2] == v.PLEX_TYPE_PHOTO: + # not synced - just remove the link in our Plex sections table + pass + else: + if not _delete_kodi_db_items(section[0], section[2]): + return + # Only remove Plex entry if we've removed all items first + with PlexDB() as plexdb: plexdb.remove_section(section[0]) - - with kodi_db.KodiMusicDB(texture_db=True) as kodidb: - for section in old_sections: - if section[2] == v.KODI_TYPE_ARTIST: - music_library_update = True - context = itemtypes.Artist(None, - plexdb=plexdb, - kodidb=kodidb) - else: - continue - for plex_id in plexdb.plexid_by_sectionid(section[0], section[2]): - context.remove(plex_id) - # Only remove Plex entry if we've removed all items first - plexdb.remove_section(section[0]) - common.update_kodi_library(video=video_library_update, - music=music_library_update) + finally: + common.update_kodi_library() diff --git a/resources/lib/plex_api.py b/resources/lib/plex_api.py index ce219fba..f6749481 100644 --- a/resources/lib/plex_api.py +++ b/resources/lib/plex_api.py @@ -1744,7 +1744,13 @@ class API(object): if path.startswith('\\\\'): path = 'smb:' + path.replace('\\', '/') if app.SYNC.escape_path: - path = quote(path) + try: + protocol, hostname, args = path.split(':', 2) + except ValueError: + pass + else: + args = quote(args) + path = '%s:%s:%s' % (protocol, hostname, args) if (app.SYNC.path_verified and not force_check) or omit_check: return path diff --git a/resources/lib/plex_db/common.py b/resources/lib/plex_db/common.py index 8d6db16e..0ce2af9b 100644 --- a/resources/lib/plex_db/common.py +++ b/resources/lib/plex_db/common.py @@ -162,10 +162,11 @@ class PlexDBBase(object): self.cursor.execute('UPDATE %s SET fanart_synced = 1 WHERE plex_id = ?' % plex_type, (plex_id, )) - def plexid_by_sectionid(self, section_id, plex_type): - return (x[0] for x in - self.cursor.execute('SELECT plex_id FROM %s WHERE section_id = ?' % plex_type, - (section_id, ))) + def plexid_by_sectionid(self, section_id, plex_type, limit): + query = ''' + SELECT plex_id FROM %s WHERE section_id = ? LIMIT %s + ''' % (plex_type, limit) + return (x[0] for x in self.cursor.execute(query, (section_id, ))) def kodiid_by_sectionid(self, section_id, plex_type): return (x[0] for x in diff --git a/resources/lib/sync.py b/resources/lib/sync.py index 3aadffeb..c6fd0c7b 100644 --- a/resources/lib/sync.py +++ b/resources/lib/sync.py @@ -43,31 +43,6 @@ class Sync(backgroundthread.KillableThread): def isSuspended(self): return self._suspended or app.APP.suspend_threads - def show_kodi_note(self, message, icon="plex", force=False): - """ - Shows a Kodi popup, if user selected to do so. Pass message in unicode - or string - - icon: "plex": shows Plex icon - "error": shows Kodi error icon - """ - if app.APP.player.isPlaying(): - LOG.info('Playing media - not showing note: %s', message) - return - if not force and app.SYNC.sync_dialog is not True and self.force_dialog is not True: - return - if icon == "plex": - utils.dialog('notification', - heading='{plex}', - message=message, - icon='{plex}', - sound=False) - elif icon == "error": - utils.dialog('notification', - heading='{plex}', - message=message, - icon='{error}') - def triage_lib_scans(self): """ Decides what to do if app.SYNC.run_lib_scan has been set. E.g. manually @@ -81,7 +56,7 @@ class Sync(backgroundthread.KillableThread): block=True) if not self.sync_successful and not self.isSuspended() and not self.isCanceled(): # ERROR in library sync - self.show_kodi_note(utils.lang(39410), icon='error') + LOG.warn('Triggered full/repair sync has not been successful') elif app.SYNC.run_lib_scan == 'fanart': # Only look for missing fanart (No) or refresh all fanart (Yes) from .windows import optionsdialog @@ -113,10 +88,7 @@ class Sync(backgroundthread.KillableThread): self.last_full_sync = timing.unix_timestamp() set_library_scan_toggle(boolean=False) if not successful: - LOG.error('Could not finish scheduled full sync') - self.force_dialog = True - self.show_kodi_note(utils.lang(39410), icon='error') - self.force_dialog = False + LOG.warn('Could not finish scheduled full sync') # try: # self.lock.release() # except backgroundthread.threading.ThreadError: diff --git a/resources/lib/variables.py b/resources/lib/variables.py index 10885a23..34b48c93 100644 --- a/resources/lib/variables.py +++ b/resources/lib/variables.py @@ -91,7 +91,7 @@ COMPANION_PORT = int(_ADDON.getSetting('companionPort')) PKC_MACHINE_IDENTIFIER = None # Minimal PKC version needed for the Kodi database - otherwise need to recreate -MIN_DB_VERSION = '2.5.12' +MIN_DB_VERSION = '2.6.1' # Supported databases SUPPORTED_VIDEO_DB = {