Merge pull request #178 from angelblue05/develop

Fixes
This commit is contained in:
angelblue05 2019-01-24 00:46:25 -06:00 committed by GitHub
commit 838160557a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 48 additions and 25 deletions

View file

@ -223,7 +223,7 @@ msgid "Verify connection"
msgstr "" msgstr ""
msgctxt "#30504" msgctxt "#30504"
msgid "Use altername device name" msgid "Use alternate device name"
msgstr "" msgstr ""
msgctxt "#30506" msgctxt "#30506"
@ -945,3 +945,7 @@ msgstr ""
msgctxt "#33196" msgctxt "#33196"
msgid "Advanced options" msgid "Advanced options"
msgstr "" msgstr ""
msgctxt "#33197"
msgid "A sync is already running, please wait until it completes and try again."
msgstr ""

View file

@ -27,39 +27,55 @@ LOG = logging.getLogger("EMBY."+__name__)
class FullSync(object): class FullSync(object):
# Borg - multiple instances, shared state
_shared_state = {}
sync = None sync = None
running = False
def __init__(self, library, library_id=None, update=False): def __init__(self, library, library_id=None, update=False):
self.library = library ''' Map the syncing process and start the sync. Ensure only one sync is running.
self.direct_path = settings('useDirectPaths') == "1" '''
self.update_library = update self.__dict__ = self._shared_state
self.server = Emby()
self.sync = get_sync()
if library_id: if not self.running:
libraries = library_id.split(',')
for selected in libraries: self.running = True
self.library = library
self.direct_path = settings('useDirectPaths') == "1"
self.update_library = update
self.server = Emby()
self.sync = get_sync()
if selected not in [x.replace('Mixed:', "") for x in self.sync['Libraries']]: if library_id:
library = self.get_libraries(selected) libraries = library_id.split(',')
if library: for selected in libraries:
self.sync['Libraries'].append("Mixed:%s" % selected if library[1] == 'mixed' else selected) if selected not in [x.replace('Mixed:', "") for x in self.sync['Libraries']]:
library = self.get_libraries(selected)
if library[1] in ('mixed', 'movies'): if library:
self.sync['Libraries'].append('Boxsets:%s' % selected)
else: self.sync['Libraries'].append("Mixed:%s" % selected if library[1] == 'mixed' else selected)
self.sync['Libraries'].append(selected)
if library[1] in ('mixed', 'movies'):
self.sync['Libraries'].append('Boxsets:%s' % selected)
else:
self.sync['Libraries'].append(selected)
else:
self.mapping()
xmls.sources()
if not xmls.advanced_settings() and self.sync['Libraries']:
self.start()
else:
self.running = False
else: else:
self.mapping() dialog("ok", heading="{emby}", line1=_(33197))
xmls.sources() raise Exception("Sync is already running.")
if not xmls.advanced_settings() and self.sync['Libraries']:
self.start()
def get_libraries(self, library_id=None): def get_libraries(self, library_id=None):
@ -169,6 +185,8 @@ class FullSync(object):
xbmc.executebuiltin('InhibitIdleShutdown(false)') xbmc.executebuiltin('InhibitIdleShutdown(false)')
set_screensaver(value=screensaver) set_screensaver(value=screensaver)
self.running = False
raise raise
elapsed = datetime.datetime.now() - start_time elapsed = datetime.datetime.now() - start_time
@ -180,6 +198,7 @@ class FullSync(object):
dialog("notification", heading="{emby}", message="%s %s" % (_(33025), str(elapsed).split('.')[0]), dialog("notification", heading="{emby}", message="%s %s" % (_(33025), str(elapsed).split('.')[0]),
icon="{emby}", sound=False) icon="{emby}", sound=False)
LOG.info("Full sync completed in: %s", str(elapsed).split('.')[0]) LOG.info("Full sync completed in: %s", str(elapsed).split('.')[0])
self.running = False
def process_library(self, library_id): def process_library(self, library_id):

View file

@ -466,10 +466,10 @@ class PlayUtils(object):
for stream in source['MediaStreams']: for stream in source['MediaStreams']:
if stream['Type'] == 'Subtitle' and stream['IsExternal'] and stream['IsTextSubtitleStream']: if stream['Type'] == 'Subtitle' and stream['IsExternal']:
index = stream['Index'] index = stream['Index']
if 'DeliveryUrl' in stream and stream['DeliveryUrl'].lower().startswith('http'): if 'DeliveryUrl' in stream and stream['DeliveryUrl'].lower().startswith('/videos'):
url = "%s/emby%s" % (self.info['ServerAddress'], stream['DeliveryUrl']) url = "%s/emby%s" % (self.info['ServerAddress'], stream['DeliveryUrl'])
else: else:
url = self.get_subtitles(source, stream, index) url = self.get_subtitles(source, stream, index)
@ -625,7 +625,7 @@ class PlayUtils(object):
def get_subtitles(self, source, stream, index): def get_subtitles(self, source, stream, index):
if 'DeliveryUrl' in stream and stream['DeliveryUrl'].lower().startswith('http'): if stream['IsTextSubtitleStream'] and 'DeliveryUrl' in stream and stream['DeliveryUrl'].lower().startswith('/videos'):
url = "%s/emby%s" % (self.info['ServerAddress'], stream['DeliveryUrl']) url = "%s/emby%s" % (self.info['ServerAddress'], stream['DeliveryUrl'])
else: else:
url = ("%s/emby/Videos/%s/%s/Subtitles/%s/Stream.%s?api_key=%s" % url = ("%s/emby/Videos/%s/%s/Subtitles/%s/Stream.%s?api_key=%s" %