def read_settings(): settings_storage['disable_connection_message'] = ADDON.getSettingBool( "disableConnectionMessage") settings_storage['reloadFlash'] = ADDON.getSettingBool("reloadFlash") settings_storage['initialFlash'] = ADDON.getSettingBool("initialFlash") settings_storage['forceOnSunset'] = ADDON.getSettingBool("forceOnSunset") settings_storage['daylightDisable'] = ADDON.getSettingBool( "daylightDisable") cache.set("script.service.hue.daylightDisable", ADDON.getSettingBool("daylightDisable")) settings_storage['enableSchedule'] = ADDON.getSettingBool("enableSchedule") settings_storage['startTime'] = ADDON.getSetting( "startTime") # string HH:MM settings_storage['endTime'] = ADDON.getSetting("endTime") # string HH:MM settings_storage['disableConnectionMessage'] = ADDON.getSettingBool( "disableConnectionMessage") settings_storage['videoMinimumDuration'] = ADDON.getSettingInt( "video_MinimumDuration" ) # Setting in Minutes. Kodi library uses seconds, needs to be converted. settings_storage['video_enableMovie'] = ADDON.getSettingBool("video_Movie") settings_storage['video_enableMusicVideo'] = ADDON.getSettingBool( "video_MusicVideo") settings_storage['video_enableEpisode'] = ADDON.getSettingBool( "video_Episode") settings_storage['video_enableOther'] = ADDON.getSettingBool("video_Other") settings_storage['ambiEnabled'] = ADDON.getSettingBool("group3_enabled") settings_storage['show500Error'] = ADDON.getSettingBool("show500Error") _validate_schedule() _validate_ambilight()
def check_video_activation(self, info_tag): try: duration = info_tag.getDuration( ) / 60 # returns seconds, convert to minutes media_type = info_tag.getMediaType() file_name = info_tag.getFile() if not file_name and self.isPlayingVideo(): file_name = self.getPlayingFile() # # if not fileName and previousFileName: # fileName = previousFileName # elif fileName: # previousFileName = fileName # xbmc.log("[script.service.hue] InfoTag contents: duration: {}, mediaType: {}, file: {}".format(duration, mediaType, fileName)) except (AttributeError, TypeError) as exc: xbmc.log("[script.service.hue] Can't read infoTag {exc}") return False # xbmc.log("Video Activation settings({}): minDuration: {}, Movie: {}, Episode: {}, MusicVideo: {}, PVR : {}, Other: {}".format(self.light_group_id, settings_storage['videoMinimumDuration'], settings_storage['video_enableMovie'], # settings_storage['video_enableEpisode'], settings_storage['video_enableMusicVideo'], settings_storage['video_enablePVR'], settings_storage['video_enableOther'])) # xbmc.log("[script.service.hue] Video Activation ({}): Duration: {}, mediaType: {}, ispvr: {}".format(self.light_group_id, duration, mediaType, fileName[0:3] == "pvr")) if ((duration >= ADDON.getSettingInt("video_MinimumDuration") or file_name[0:3] == "pvr") and ((ADDON.getSettingBool("video_Movie") and media_type == "movie") or (ADDON.getSettingBool("video_Episode") and media_type == "episode") or (ADDON.getSettingBool("video_MusicVideo") and media_type == "MusicVideo") or (ADDON.getSettingBool("video_PVR") and file_name[0:3] == "pvr") or (ADDON.getSettingBool("video_Other") and media_type != "movie" and media_type != "episode" and media_type != "MusicVideo" and file_name[0:3] != "pvr"))): xbmc.log("[script.service.hue] Video activation: True") return True xbmc.log("[script.service.hue] Video activation: False") return False
def __init__(self, light_group_id, hue_connection, initial_state=STATE_STOPPED, video_info_tag=xbmc.InfoTagVideo): self.hue_connection = hue_connection self.light_group_id = light_group_id self.bridge = hue_connection.bridge self.monitor = hue_connection.monitor self.group0 = self.bridge.groups[0] self.bridge_error500 = 0 self.state = initial_state self.enabled = ADDON.getSettingBool( f"group{self.light_group_id}_enabled") self.saved_light_states = {} self.video_info_tag = video_info_tag self.image_process = imageprocess.ImageProcess() self.converterA = Converter(GamutA) self.converterB = Converter(GamutB) self.converterC = Converter(GamutC) self.helper = ColorHelper( GamutC) # Gamut doesn't matter for this usage self.enabled = ADDON.getSettingBool( f"group{self.light_group_id}_enabled") self.transition_time = int( ADDON.getSettingInt(f"group{self.light_group_id}_TransitionTime") / 100 ) # This is given as a multiple of 100ms and defaults to 4 (400ms). transition_time:10 will make the transition last 1 second. self.force_on = ADDON.getSettingBool( f"group{self.light_group_id}_forceOn") self.disable_labs = ADDON.getSettingBool( f"group{self.light_group_id}_disableLabs") self.min_bri = ADDON.getSettingInt( f"group{self.light_group_id}_MinBrightness" ) * 255 / 100 # convert percentage to value 1-254 self.max_bri = ADDON.getSettingInt( f"group{self.light_group_id}_MaxBrightness" ) * 255 / 100 # convert percentage to value 1-254 self.saturation = ADDON.getSettingNumber( f"group{self.light_group_id}_Saturation") self.capture_size_x = ADDON.getSettingInt( f"group{self.light_group_id}_CaptureSize") self.resume_state = ADDON.getSettingBool( f"group{self.light_group_id}_ResumeState") self.resume_transition = ADDON.getSettingInt( f"group{self.light_group_id}_ResumeTransition" ) * 10 # convert seconds to multiple of 100ms self.update_interval = ADDON.getSettingInt( f"group{self.light_group_id}_Interval" ) / 1000 # convert MS to seconds if self.update_interval == 0: self.update_interval = 0.1 if self.enabled: self.ambi_lights = {} light_ids = ADDON.getSetting( f"group{self.light_group_id}_Lights").split(",") index = 0 if len(light_ids) > 0: for L in light_ids: gamut = self._get_light_gamut(self.bridge, L) light = { L: { 'gamut': gamut, 'prev_xy': (0, 0), "index": index } } self.ambi_lights.update(light) index = index + 1 super(xbmc.Player).__init__()