def editorCallback(ret): if ret: from plugin import autotimer autotimer.add(ret) # Save modified xml autotimer.writeXml()
def editorCallback(ret): if ret: from plugin import autotimer autotimer.add(ret) # Save modified xml if config.plugins.autotimer.always_write_config.value: autotimer.writeXml()
def render_POST(self, req): req.setResponseCode(http.OK) req.setHeader('Content-type', 'application/xhtml+xml;' ) req.setHeader('charset', 'UTF-8') autotimer.readXml(xml_string=req.args['xml'][0]) if config.plugins.autotimer.always_write_config.value: autotimer.writeXml() return self.returnResult(req, True, _("AutoTimers were changed successfully"))
def render_POST(self, req): req.setResponseCode(http.OK) req.setHeader('Content-type', 'application/xhtml+xml;' ) req.setHeader('charset', 'UTF-8') autotimer.readXml(xml_string=req.args['xml'][0]) if config.plugins.autotimer.always_write_config.value: autotimer.writeXml() return self.returnResult(req, True, _("AutoTimers were changed successfully."))
def render(self, req): id = req.args.get("id") if id: autotimer.remove(int(id[0])) if config.plugins.autotimer.always_write_config.value: autotimer.writeXml() return self.returnResult(req, True, _("AutoTimer was removed")) else: return self.returnResult(req, False, _("missing parameter \"id\""))
def render_POST(self, req): req.setResponseCode(http.OK) req.setHeader('Content-type', 'application/xhtml+xml;') req.setHeader('charset', 'UTF-8') autotimer.readXml( ) # read current timers to ensure autotimer.timers is populated with current autotimers autotimer.readXmlTimer(req.args['xml'][0]) if config.plugins.autotimer.always_write_config.value: autotimer.writeXml() return self.returnResult(req, True, _("AutoTimer was added successfully"))
def render(self, req): req.setResponseCode(http.OK) req.setHeader('Content-type', 'application/xhtml+xml;') req.setHeader('charset', 'UTF-8') xml = req.args.get("xml") if xml: autotimer.readXml(xml_string=xml[0]) if config.plugins.autotimer.always_write_config.value: autotimer.writeXml() return self.returnResult(req, True, _("AutoTimers were changed successfully")) else: return self.returnResult(req, False, _("Not found xml config file!"))
def render(self, req): req.setResponseCode(http.OK) req.setHeader('Content-type', 'application/xhtml+xml;') req.setHeader('charset', 'UTF-8') xml = req.args.get("xml") if xml: autotimer.readXmlTimer(xml[0]) if config.plugins.autotimer.always_write_config.value: autotimer.writeXml() return self.returnResult(req, True, _("AutoTimer was added successfully")) else: return self.returnResult(req, False, _("missing parameter \"xml\""))
def editorCallback(ret): if ret: from plugin import autotimer if autotimer is None: from AutoTimer import AutoTimer autotimer = AutoTimer() autotimer.readXml() autotimer.add(ret) # Save modified xml autotimer.writeXml()
def editorCallback(ret): if ret: from plugin import autotimer # Create instance if needed (should have been created by addAutotimerFrom* above though) if autotimer is None: from AutoTimer import AutoTimer autotimer = AutoTimer() autotimer.readXml() autotimer.add(ret) # Save modified xml autotimer.writeXml() # Remove instance if not running in background if not config.plugins.autotimer.autopoll.value: autotimer = None
def render(self, req): autotimer = self.getAutoTimerInstance() ret = autotimer.parseEPG() output = _("Found a total of %d matching Events.\n%d Timer were added and %d modified.") % (ret[0], ret[1], ret[2]) if self._remove: autotimer.writeXml() result = """<?xml version=\"1.0\" encoding=\"UTF-8\" ?> <e2simplexmlresult> <e2state>true</e2state> <e2statetext>%s</e2statetext> </e2simplexmlresult> """ % (output) req.setResponseCode(http.OK) req.setHeader('Content-type', 'application; xhtml+xml') req.setHeader('charset', 'UTF-8') return result
def render(self, req): autotimer = self.getAutoTimerInstance() ret = autotimer.parseEPG() output = _( "Found a total of %d matching Events.\n%d Timer were added and %d modified." ) % (ret[0], ret[1], ret[2]) if self._remove: autotimer.writeXml() result = """<?xml version=\"1.0\" encoding=\"UTF-8\" ?> <e2simplexmlresult> <e2state>true</e2state> <e2statetext>%s</e2statetext> </e2simplexmlresult> """ % (output) req.setResponseCode(http.OK) req.setHeader('Content-type', 'application; xhtml+xml') req.setHeader('charset', 'UTF-8') return result
def render(self, req): def get(name, default=None): ret = req.args.get(name) return ret[0] if ret else default id = get("id") timer = None if id is not None: id = int(id) for possibleMatch in autotimer.getTimerList(): if possibleMatch.id == id: timer = possibleMatch break if timer is None: return self.returnResult( req, False, _("unable to find timer with id %i" % (id, ))) # Name name = get("name") if name is not None: timer.name = unquote(name).strip() # Enabled enabled = get("enabled") if enabled is not None: try: enabled = int(enabled) except ValueError: enabled = enabled == "yes" timer.enabled = enabled message = _("AutoTimer was changed successfully") if config.plugins.autotimer.always_write_config.value: autotimer.writeXml() return self.returnResult(req, True, message)
def render(self, req): def get(name, default=None): ret = req.args.get(name) return ret[0] if ret else default id = get("id") timer = None newTimer = True if id is None: id = autotimer.getUniqueId() timer = autotimer.defaultTimer.clone() timer.id = id else: id = int(id) for possibleMatch in autotimer.getTimerList(): if possibleMatch.id == id: timer = possibleMatch newTimer = False break if timer is None: return self.returnResult(req, False, _("unable to find timer with id %i" % (id,))) if id != -1: # Match timer.match = unquote(get("match", timer.match)) if not timer.match: return self.returnResult(req, False, _("autotimers need a match attribute")) # Name timer.name = unquote(get("name", timer.name)).strip() if not timer.name: timer.name = timer.match # Enabled enabled = get("enabled") if enabled is not None: try: enabled = int(enabled) except ValueError: enabled = enabled == "yes" timer.enabled = enabled # Timeframe before = get("before") after = get("after") if before and after: timer.timeframe = (int(after), int(before)) elif before == "" or after == "": timer.timeframe = None # ... timer.searchType = get("searchType", timer.searchType) timer.searchCase = get("searchCase", timer.searchCase) # Alternatives timer.overrideAlternatives = int(get("overrideAlternatives", timer.overrideAlternatives)) # Justplay justplay = get("justplay") if justplay is not None: try: justplay = int(justplay) except ValueError: justplay = justplay == "zap" timer.justplay = justplay setEndtime = get("setEndtime") if setEndtime is not None: timer.setEndtime = int(setEndtime) # Timespan start = get("timespanFrom") end = get("timespanTo") if start and end: start = [int(x) for x in start.split(":")] end = [int(x) for x in end.split(":")] timer.timespan = (start, end) elif start == "" and end == "": timer.timespan = None # Services servicelist = get("services") if servicelist is not None: servicelist = unquote(servicelist).split(",") appendlist = [] for value in servicelist: myref = eServiceReference(str(value)) if not (myref.flags & eServiceReference.isGroup): # strip all after last : pos = value.rfind(":") if pos != -1: if value[pos - 1] == ":": pos -= 1 value = value[: pos + 1] if myref.valid(): appendlist.append(value) timer.services = appendlist # Bouquets servicelist = get("bouquets") if servicelist is not None: servicelist = unquote(servicelist).split(",") while "" in servicelist: servicelist.remove("") timer.bouquets = servicelist # Offset offset = get("offset") if offset: offset = offset.split(",") if len(offset) == 1: before = after = int(offset[0] or 0) * 60 else: before = int(offset[0] or 0) * 60 after = int(offset[1] or 0) * 60 timer.offset = (before, after) elif offset == "": timer.offset = None # AfterEvent afterevent = get("afterevent") if afterevent: if afterevent == "default": timer.afterevent = [] else: try: afterevent = int(afterevent) except ValueError: afterevent = { "nothing": AFTEREVENT.NONE, "deepstandby": AFTEREVENT.DEEPSTANDBY, "standby": AFTEREVENT.STANDBY, "auto": AFTEREVENT.AUTO, }.get(afterevent, AFTEREVENT.AUTO) start = get("aftereventFrom") end = get("aftereventTo") if start and end: start = [int(x) for x in start.split(":")] end = [int(x) for x in end.split(":")] timer.afterevent = [(afterevent, (start, end))] else: timer.afterevent = [(afterevent, None)] # Maxduration maxduration = get("maxduration") if maxduration: timer.maxduration = int(maxduration) * 60 elif maxduration == "": timer.maxduration = None # Includes title = req.args.get("title") shortdescription = req.args.get("shortdescription") description = req.args.get("description") dayofweek = req.args.get("dayofweek") if title or shortdescription or description or dayofweek: includes = timer.include title = [unquote(x) for x in title] if title else includes[0] shortdescription = [unquote(x) for x in shortdescription] if shortdescription else includes[1] description = [unquote(x) for x in description] if description else includes[2] dayofweek = [unquote(x) for x in dayofweek] if dayofweek else includes[3] while "" in title: title.remove("") while "" in shortdescription: shortdescription.remove("") while "" in description: description.remove("") while "" in dayofweek: dayofweek.remove("") timer.include = (title, shortdescription, description, dayofweek) # Excludes title = req.args.get("!title") shortdescription = req.args.get("!shortdescription") description = req.args.get("!description") dayofweek = req.args.get("!dayofweek") if title or shortdescription or description or dayofweek: excludes = timer.exclude title = [unquote(x) for x in title] if title else excludes[0] shortdescription = [unquote(x) for x in shortdescription] if shortdescription else excludes[1] description = [unquote(x) for x in description] if description else excludes[2] dayofweek = [unquote(x) for x in dayofweek] if dayofweek else excludes[3] while "" in title: title.remove("") while "" in shortdescription: shortdescription.remove("") while "" in description: description.remove("") while "" in dayofweek: dayofweek.remove("") timer.exclude = (title, shortdescription, description, dayofweek) tags = req.args.get("tag") if tags: while "" in tags: tags.remove("") timer.tags = [unquote(x) for x in tags] timer.matchCount = int(get("counter", timer.matchCount)) timer.matchFormatString = get("counterFormat", timer.matchFormatString) if id != -1: matchLeft = get("left") timer.matchLeft = int(matchLeft) if matchLeft else (timer.matchCount if newTimer else timer.matchLeft) timer.matchLimit = get("lastActivation", timer.matchLimit) timer.lastBegin = int(get("lastBegin", timer.lastBegin)) timer.avoidDuplicateDescription = int(get("avoidDuplicateDescription", timer.avoidDuplicateDescription)) timer.searchForDuplicateDescription = int( get("searchForDuplicateDescription", timer.searchForDuplicateDescription) ) timer.destination = get("location", timer.destination) or None # vps enabled = get("vps_enabled") if enabled is not None: try: enabled = int(enabled) except ValueError: enabled = enabled == "yes" timer.vps_enabled = enabled vps_overwrite = get("vps_overwrite") if vps_overwrite is not None: try: vps_overwrite = int(vps_overwrite) except ValueError: vps_overwrite = vps_overwrite == "yes" timer.vps_overwrite = vps_overwrite if not timer.vps_enabled and timer.vps_overwrite: timer.vps_overwrite = False # SeriesPlugin series_labeling = get("series_labeling") if series_labeling is not None: try: series_labeling = int(series_labeling) except ValueError: series_labeling = series_labeling == "yes" timer.series_labeling = series_labeling if newTimer: autotimer.add(timer) message = _("AutoTimer was added successfully") else: message = _("AutoTimer was changed successfully") # Save modified xml if config.plugins.autotimer.always_write_config.value: autotimer.writeXml() return self.returnResult(req, True, message)
def render(self, req): def get(name, default=None): ret = req.args.get(name) return ret[0] if ret else default id = get("id") timer = None newTimer = True if id is None: id = autotimer.getUniqueId() timer = autotimer.defaultTimer.clone() timer.id = id else: id = int(id) for possibleMatch in autotimer.getTimerList(): if possibleMatch.id == id: timer = possibleMatch newTimer = False break if timer is None: return self.returnResult( req, False, (_("unable to find timer with id %i") % (id, ))) if id != -1: # Match timer.match = unquote(get("match", timer.match)) if not timer.match: return self.returnResult( req, False, _("autotimers need a match attribute")) # Name timer.name = unquote(get("name", timer.name)).strip() if not timer.name: timer.name = timer.match # Enabled enabled = get("enabled") if enabled is not None: try: enabled = int(enabled) except ValueError: enabled = enabled == "yes" timer.enabled = enabled # Timeframe before = get("before") after = get("after") if before and after: timer.timeframe = (int(after), int(before)) elif before == '' or after == '': timer.timeframe = None # Encoding timer.encoding = get("encoding", timer.encoding) # ... timer.searchType = get("searchType", timer.searchType) timer.searchCase = get("searchCase", timer.searchCase) # Alternatives timer.overrideAlternatives = int( get("overrideAlternatives", timer.overrideAlternatives)) # Justplay justplay = get("justplay") if justplay is not None: try: justplay = int(justplay) except ValueError: justplay = justplay == "zap" timer.justplay = justplay setEndtime = get("setEndtime") if setEndtime is not None: timer.setEndtime = int(setEndtime) # Timespan start = get("timespanFrom") end = get("timespanTo") if start and end: start = [int(x) for x in start.split(':')] end = [int(x) for x in end.split(':')] timer.timespan = (start, end) elif start == '' and end == '': timer.timespan = None # Services servicelist = get("services") if servicelist is not None: servicelist = unquote(servicelist).split(',') appendlist = [] for value in servicelist: myref = eServiceReference(str(value)) if not (myref.flags & eServiceReference.isGroup): # strip all after last : pos = value.rfind(':') if pos != -1: if value[pos - 1] == ':': pos -= 1 value = value[:pos + 1] if myref.valid(): appendlist.append(value) timer.services = appendlist # Bouquets servicelist = get("bouquets") if servicelist is not None: servicelist = unquote(servicelist).split(',') while '' in servicelist: servicelist.remove('') timer.bouquets = servicelist # Offset offset = get("offset") if offset: offset = offset.split(',') if len(offset) == 1: before = after = int(offset[0] or 0) * 60 else: before = int(offset[0] or 0) * 60 after = int(offset[1] or 0) * 60 timer.offset = (before, after) elif offset == '': timer.offset = None # AfterEvent afterevent = get("afterevent") if afterevent: if afterevent == "default": timer.afterevent = [] else: try: afterevent = int(afterevent) except ValueError: afterevent = { "nothing": AFTEREVENT.NONE, "deepstandby": AFTEREVENT.DEEPSTANDBY, "standby": AFTEREVENT.STANDBY, "auto": AFTEREVENT.AUTO }.get(afterevent, AFTEREVENT.AUTO) start = get("aftereventFrom") end = get("aftereventTo") if start and end: start = [int(x) for x in start.split(':')] end = [int(x) for x in end.split(':')] timer.afterevent = [(afterevent, (start, end))] else: timer.afterevent = [(afterevent, None)] # Maxduration maxduration = get("maxduration") if maxduration: timer.maxduration = int(maxduration) * 60 elif maxduration == '': timer.maxduration = None # Includes title = req.args.get("title") shortdescription = req.args.get("shortdescription") description = req.args.get("description") dayofweek = req.args.get("dayofweek") if title or shortdescription or description or dayofweek: includes = timer.include title = [unquote(x) for x in title] if title else includes[0] shortdescription = [unquote(x) for x in shortdescription ] if shortdescription else includes[1] description = [unquote(x) for x in description ] if description else includes[2] dayofweek = [unquote(x) for x in dayofweek] if dayofweek else includes[3] while '' in title: title.remove('') while '' in shortdescription: shortdescription.remove('') while '' in description: description.remove('') while '' in dayofweek: dayofweek.remove('') timer.include = (title, shortdescription, description, dayofweek) # Excludes title = req.args.get("!title") shortdescription = req.args.get("!shortdescription") description = req.args.get("!description") dayofweek = req.args.get("!dayofweek") if title or shortdescription or description or dayofweek: excludes = timer.exclude title = [unquote(x) for x in title] if title else excludes[0] shortdescription = [unquote(x) for x in shortdescription ] if shortdescription else excludes[1] description = [unquote(x) for x in description ] if description else excludes[2] dayofweek = [unquote(x) for x in dayofweek] if dayofweek else excludes[3] while '' in title: title.remove('') while '' in shortdescription: shortdescription.remove('') while '' in description: description.remove('') while '' in dayofweek: dayofweek.remove('') timer.exclude = (title, shortdescription, description, dayofweek) tags = req.args.get("tag") if tags: while '' in tags: tags.remove('') timer.tags = [unquote(x) for x in tags] timer.matchCount = int(get("counter", timer.matchCount)) timer.matchFormatString = get("counterFormat", timer.matchFormatString) if id != -1: matchLeft = get("left") timer.matchLeft = int(matchLeft) if matchLeft else ( timer.matchCount if newTimer else timer.matchLeft) timer.matchLimit = get("lastActivation", timer.matchLimit) timer.lastBegin = int(get("lastBegin", timer.lastBegin)) timer.avoidDuplicateDescription = int( get("avoidDuplicateDescription", timer.avoidDuplicateDescription)) timer.searchForDuplicateDescription = int( get("searchForDuplicateDescription", timer.searchForDuplicateDescription)) timer.destination = get("location", timer.destination) or None descShortEqualExt = get("descShortEqualExt") if descShortEqualExt is not None: try: descShortEqualExt = int(descShortEqualExt) except ValueError: descShortEqualExt = descShortEqualExt == "yes" timer.descShortEqualExt = descShortEqualExt descShortExtEmpty = get("descShortExtEmpty") if descShortExtEmpty is not None: try: descShortExtEmpty = int(descShortExtEmpty) except ValueError: descShortExtEmpty = descShortExtEmpty == "yes" timer.descShortExtEmpty = descShortExtEmpty timer.ratioThresholdDuplicate = float( get("ratioThresholdDuplicate", timer.ratioThresholdDuplicate)) # vps enabled = get("vps_enabled") if enabled is not None: try: enabled = int(enabled) except ValueError: enabled = enabled == "yes" timer.vps_enabled = enabled vps_overwrite = get("vps_overwrite") if vps_overwrite is not None: try: vps_overwrite = int(vps_overwrite) except ValueError: vps_overwrite = vps_overwrite == "yes" timer.vps_overwrite = vps_overwrite if not timer.vps_enabled and timer.vps_overwrite: timer.vps_overwrite = False # SeriesPlugin series_labeling = get("series_labeling") if series_labeling is not None: try: series_labeling = int(series_labeling) except ValueError: series_labeling = series_labeling == "yes" timer.series_labeling = series_labeling series_save_filter = get("series_save_filter") if series_save_filter is not None: try: series_save_filter = int(series_save_filter) except ValueError: series_save_filter = series_save_filter == "yes" timer.series_save_filter = series_save_filter if not timer.series_labeling and timer.series_save_filter: timer.series_save_filter = False # Conflict detection conflict_detection = get("conflict_detection") if conflict_detection is not None: try: conflict_detection = int(conflict_detection) except ValueError: conflict_detection = conflict_detection == "yes" timer.conflict_detection = conflict_detection # Always zap timer.always_zap = get("always_zap", timer.always_zap) # Zap wakeup timer.zap_wakeup = get("zap_wakeup", timer.zap_wakeup) if newTimer: autotimer.add(timer) message = _("AutoTimer was added successfully") else: message = _("AutoTimer was changed successfully") if config.plugins.autotimer.always_write_config.value: autotimer.writeXml() return self.returnResult(req, True, message)