def check(self): if Settings.autoPauseSonos() and not Settings.linkAudioWithSonos(): try: # Check to see if something has started playing if xbmc.Player().isPlaying(): # If this is a change in play state since the last time we checked if self.xbmcPlayState is False: log("SonosAutoPause: Automatically pausing Sonos") self.xbmcPlayState = True # Pause the sonos if it is playing if self._isSonosPlaying(): self.sonosDevice.pause() self.autoStopped = True self.resumeCountdown = Settings.autoResumeSonos() else: self.xbmcPlayState = False if Settings.autoResumeSonos() > 0 and self.autoStopped: if self.resumeCountdown > 0: self.resumeCountdown = self.resumeCountdown - 1 else: log("SonosAutoPause: Automatically resuming Sonos") self.sonosDevice.play() self.autoStopped = False self.resumeCountdown = Settings.autoResumeSonos() except: # If we fail to stop the speaker playing, it may be because # there is a network problem or the speaker is powered down # So we just continue after logging the error log("SonosAutoPause: Error from speaker %s" % Settings.getIPAddress()) log("SonosAutoPause: %s" % traceback.format_exc())
displayNotice = False if displayNotice: xbmc.executebuiltin( 'Notification("URepo Repository Required","www.urepo.org",10000,%s)' % ADDON.getAddonInfo('icon')) else: # Check to see if we need to launch the Sonos Controller as soon as Kodi starts if Settings.autoLaunchControllerOnStartup(): # Launch the Sonos controller, but do not block as we have more to do as a service log("SonosService: Launching controller on startup") xbmc.executebuiltin( 'RunScript(%s)' % (os.path.join(CWD, "default.py")), False) if (not Settings.isNotificationEnabled()) and (not audioChanges) and ( not Settings.autoPauseSonos()) and ( not Settings.redirectVolumeControls()): log("SonosService: Notifications, Volume Link and Auto Pause are disabled, exiting service" ) else: sonosDevice = Sonos.createSonosDevice() # Make sure a Sonos speaker was found if sonosDevice is not None: timeUntilNextCheck = Settings.getNotificationCheckFrequency( ) * Settings.getChecksPerSecond() log("SonosService: Notification Check Frequency = %d" % timeUntilNextCheck) lastDisplayedTrack = None
log("SonosService: Starting service (version %s)" % ADDON.getAddonInfo('version')) # Start by doing any auto-setting of the IP Address autoIpAdd = AutoUpdateIPAddress() del autoIpAdd # Check for the list of things that impact audio audioChanges = Settings.linkAudioWithSonos() or Settings.switchSonosToLineIn() or Settings.switchSonosToLineInOnMediaStart() # Check to see if we need to launch the Sonos Controller as soon as Kodi starts if Settings.autoLaunchControllerOnStartup(): # Launch the Sonos controller, but do not block as we have more to do as a service log("SonosService: Launching controller on startup") xbmc.executebuiltin('RunScript(%s)' % (os.path.join(CWD, "default.py")), False) if (not Settings.isNotificationEnabled()) and (not audioChanges) and (not Settings.autoPauseSonos()) and (not Settings.redirectVolumeControls()): log("SonosService: Notifications, Volume Link and Auto Pause are disabled, exiting service") else: sonosDevice = Sonos.createSonosDevice() # Make sure a Sonos speaker was found if sonosDevice is not None: timeUntilNextCheck = Settings.getNotificationCheckFrequency() * Settings.getChecksPerSecond() log("SonosService: Notification Check Frequency = %d" % timeUntilNextCheck) lastDisplayedTrack = None # Need to only display the popup when the service starts if there is # currently something playing justStartedService = True