コード例 #1
0
ファイル: EpgSelection.py プロジェクト: kingvuplus/test2
	def timerAdd(self, instantTimer = False):
		cur = self["list"].getCurrent()
		event = cur[0]
		serviceref = cur[1]
		if event is None:
			return
		eventid = event.getEventId()
		refstr = serviceref.ref.toString()
		
		if self.key_green_choice == self.ENABLE_TIMER:
			for timer in self.session.nav.RecordTimer.processed_timers:
				if timer.eit == eventid and timer.service_ref.ref.toString() == refstr and timer.disabled == True:
					if instantTimer:
						self.removeTimer(timer, True)
					else:
						cb_func = lambda ret : not ret or self.removeTimer(timer)
						self.session.openWithCallback(cb_func, MessageBox, _("Do you really want to delete %s?") % event.getEventName())
					break
		else:
			for timer in self.session.nav.RecordTimer.timer_list:
				if timer.eit == eventid and timer.service_ref.ref.toString() == refstr:
					if instantTimer:
						self.removeTimer(timer, True)
					else:
						cb_func = lambda ret : not ret or self.removeTimer(timer)
						self.session.openWithCallback(cb_func, MessageBox, _("Do you really want to delete %s?") % event.getEventName())
					break
			else:
				newEntry = RecordTimerEntry(serviceref, checkOldTimers = True, dirname = preferredTimerPath(), *parseEvent(event))
				if instantTimer:
					self.session.nav.RecordTimer.saveTimer()
					self.finishedAdd((True, newEntry), True)
				else:
					self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
コード例 #2
0
ファイル: EpgSelection.py プロジェクト: vit2/vit-e2
    def timerAdd(self):
        cur = self["list"].getCurrent()
        event = cur[0]
        serviceref = cur[1]
        if event is None:
            return
        eventid = event.getEventId()
        refstr = ":".join(serviceref.ref.toString().split(":")[:11])
        for timer in self.session.nav.RecordTimer.timer_list:
            if timer.eit == eventid and ":".join(timer.service_ref.ref.toString().split(":")[:11]) == refstr:
                menu = [(_("Delete timer"), "delete"), (_("Edit timer"), "edit")]
                buttons = ["red", "green"]

                def timerAction(choice):
                    if choice is not None:
                        if choice[1] == "delete":
                            self.removeTimer(timer)
                        elif choice[1] == "edit":
                            self.session.open(TimerEntry, timer)

                self.session.openWithCallback(
                    timerAction,
                    ChoiceBox,
                    title=_("Select action for timer %s:") % event.getEventName(),
                    list=menu,
                    keys=buttons,
                )
                break
        else:
            newEntry = RecordTimerEntry(
                serviceref, checkOldTimers=True, dirname=preferredTimerPath(), *parseEvent(event)
            )
            self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
コード例 #3
0
ファイル: EventView.py プロジェクト: gigirock/stbgui
	def timerAdd(self):
		if self.isRecording:
			return
		event = self.event
		serviceref = self.currentService
		if event is None:
			return
		eventid = event.getEventId()
		begin = event.getBeginTime()
		end = begin + event.getDuration()
		refstr = ':'.join(serviceref.ref.toString().split(':')[:11])
		isRecordEvent = False
		for timer in self.session.nav.RecordTimer.timer_list:
			needed_ref = ':'.join(timer.service_ref.ref.toString().split(':')[:11]) == refstr
			if needed_ref and timer.eit == eventid and (begin < timer.begin <= end or timer.begin <= begin <= timer.end):
				isRecordEvent = True
				break
			elif needed_ref and timer.repeated and self.session.nav.RecordTimer.isInRepeatTimer(timer, event):
				isRecordEvent = True
				break
		if isRecordEvent:
			title_text = timer.repeated and _("Attention, this is repeated timer!\n") or ""
			menu = [(_("Delete timer"), "delete"),(_("Edit timer"), "edit")]
			buttons = ["red", "green"]
			def timerAction(choice):
				if choice is not None:
					if choice[1] == "delete":
						self.removeTimer(timer)
					elif choice[1] == "edit":
						self.session.open(TimerEntry, timer)
			self.session.openWithCallback(timerAction, ChoiceBox, title=title_text + _("Select action for timer '%s'.") % timer.name, list=menu, keys=buttons)
		else:
			newEntry = RecordTimerEntry(self.currentService, checkOldTimers = True, dirname = preferredTimerPath(), *parseEvent(self.event))
			self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
コード例 #4
0
ファイル: EventView.py プロジェクト: fairbird/OpenPLI-VTI
	def timerAdd(self, instantTimer = False):
		if self.isRecording:
			return
		event = self.event
		serviceref = self.currentService
		if event is None:
			return
		eventid = event.getEventId()
		refstr = serviceref.ref.toString()
		for timer in self.session.nav.RecordTimer.timer_list:
			if timer.eit == eventid and timer.service_ref.ref.toString() == refstr:
				if instantTimer:
					self.removeTimer(timer)
					break
				else:
					cb_func = lambda ret : not ret or self.removeTimer(timer)
					self.session.openWithCallback(cb_func, MessageBox, _("Do you really want to delete %s?") % event.getEventName())
					break
		else:
			newEntry = RecordTimerEntry(self.currentService, checkOldTimers = True, dirname = preferredTimerPath(), *parseEvent(self.event))
			if instantTimer:
				self.session.nav.RecordTimer.saveTimer()
				self.finishedAdd((True, newEntry))
			else:
				self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
コード例 #5
0
def addTimer(
    session,
    serviceref,
    begin,
    end,
    name,
    description,
    disabled,
    justplay,
    afterevent,
    dirname,
    tags,
    repeated,
    logentries=None,
    eit=0,
):
    serviceref = unquote(serviceref)
    rt = session.nav.RecordTimer

    print "mao1", dirname

    if not dirname:
        dirname = preferredTimerPath()

    print "mao2", dirname

    try:
        timer = RecordTimerEntry(
            ServiceReference(serviceref),
            begin,
            end,
            name,
            description,
            eit,
            disabled,
            justplay,
            afterevent,
            dirname=dirname,
            tags=tags,
        )

        timer.repeated = repeated

        if logentries:
            timer.log_entries = logentries

        conflicts = rt.record(timer)
        if conflicts:
            errors = []
            for conflict in conflicts:
                errors.append(conflict.name)

            return {"result": False, "message": "Conflicting Timer(s) detected! %s" % " / ".join(errors)}
    except Exception, e:
        print e
        return {"result": False, "message": "Could not add timer '%s'!" % name}
コード例 #6
0
ファイル: timers.py プロジェクト: Leatherface75/enigma2pc
def addTimer(session, serviceref, begin, end, name, description, disabled, justplay, afterevent, dirname, tags, repeated, vpsinfo=None, logentries=None, eit=0, always_zap=-1):
	serviceref = unquote(serviceref)
	rt = session.nav.RecordTimer

	print "mao1", dirname

	if not dirname:
		dirname = preferredTimerPath()

	print "mao2", dirname

	try:
		timer = RecordTimerEntry(
			ServiceReference(serviceref),
			begin,
			end,
			name,
			description,
			eit,
			disabled,
			justplay,
			afterevent,
			dirname=dirname,
			tags=tags)

		timer.repeated = repeated

		if logentries:
			timer.log_entries = logentries

		conflicts = rt.record(timer)
		if conflicts:
			errors = []
			for conflict in conflicts:
				errors.append(conflict.name)

			return {
				"result": False,
				"message": _("Conflicting Timer(s) detected! %s") % " / ".join(errors)
			}
		#VPS
		if vpsinfo is not None:
			timer.vpsplugin_enabled = vpsinfo["vpsplugin_enabled"]
			timer.vpsplugin_overwrite = vpsinfo["vpsplugin_overwrite"]
			timer.vpsplugin_time = vpsinfo["vpsplugin_time"]

		if always_zap <> -1:
			if hasattr(timer,"always_zap"):
				timer.always_zap = always_zap == 1

	except Exception, e:
		print e
		return {
			"result": False,
			"message": _("Could not add timer '%s'!") % name
		}
コード例 #7
0
	def timerAdd(self):
		cur = self["list"].getCurrent()
		event = cur[0]
		if event is None:
			return
		serviceref = cur[1]
		isRecordEvent = isRepeat = firstNextRepeatEvent = isRunning = False
		eventid = event.getEventId()
		begin = event.getBeginTime()
		end = begin + event.getDuration()
		refstr = ':'.join(serviceref.ref.toString().split(':')[:11])
		for timer in self.session.nav.RecordTimer.timer_list:
			needed_ref = ':'.join(timer.service_ref.ref.toString().split(':')[:11]) == refstr
			if needed_ref and timer.eit == eventid and (begin < timer.begin <= end or timer.begin <= begin <= timer.end):
				isRecordEvent = True
				break
			elif needed_ref and timer.repeated and self.session.nav.RecordTimer.isInRepeatTimer(timer, event):
				isRecordEvent = True
				break
		if isRecordEvent:
			isRepeat = timer.repeated
			prev_state = timer.state
			isRunning = prev_state in (1, 2)
			title_text = isRepeat and _("Attention, this is repeated timer!\n") or ""
			firstNextRepeatEvent = isRepeat and (begin < timer.begin <= end or timer.begin <= begin <= timer.end) and not timer.justplay
			menu = [(_("Delete timer"), "delete"),(_("Edit timer"), "edit")]
			buttons = ["red", "green"]
			if not isRunning:
				if firstNextRepeatEvent and timer.isFindRunningEvent() and not timer.isFindNextEvent():
					menu.append((_("Options disable timer"), "disablerepeat"))
				else:
					menu.append((_("Disable timer"), "disable"))
				buttons.append("yellow")
			elif prev_state == 2 and firstNextRepeatEvent:
				menu.append((_("Options disable timer"), "disablerepeatrunning"))
				buttons.append("yellow")
			menu.append((_("Timer Overview"), "timereditlist"))
			def timerAction(choice):
				if choice is not None:
					if choice[1] == "delete":
						self.removeTimer(timer)
					elif choice[1] == "edit":
						self.session.openWithCallback(self.finishedEdit, TimerEntry, timer)
					elif choice[1] == "disable":
						self.disableTimer(timer, prev_state)
					elif choice[1] == "timereditlist":
						self.session.open(TimerEditList)
					elif choice[1] == "disablerepeatrunning":
						self.disableTimer(timer, prev_state, repeat=True, record=True)
					elif choice[1] == "disablerepeat":
						self.disableTimer(timer, prev_state, repeat=True)
			self.session.openWithCallback(timerAction, ChoiceBox, title=title_text + _("Select action for timer '%s'.") % timer.name, list=menu, keys=buttons)
		else:
			newEntry = RecordTimerEntry(serviceref, checkOldTimers = True, dirname = preferredTimerPath(), *parseEvent(event))
			self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
コード例 #8
0
ファイル: EpgSelection.py プロジェクト: kolombek/enigma2
	def timerAdd(self):
		cur = self['list'].getCurrent()
		event = cur[0]
		serviceref = cur[1]
		if event is None:
			return
		eventid = event.getEventId()
		refstr = serviceref.ref.toString()
		for timer in self.session.nav.RecordTimer.timer_list:
			if timer.eit == eventid and timer.service_ref.ref.toString() == refstr:
				cb_func = lambda ret: not ret or self.removeTimer(timer)
				self.session.openWithCallback(cb_func, MessageBox, _('Do you really want to delete %s?') % event.getEventName())
				break
		else:
			newEntry = RecordTimerEntry(serviceref, checkOldTimers=True, dirname=preferredTimerPath(), *parseEvent(event))
			self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
コード例 #9
0
ファイル: TimerEdit.py プロジェクト: elshaca/enigma2
	def addCurrentTimer(self):
		event = None
		service = self.session.nav.getCurrentService()
		if service is not None:
			info = service.info()
			if info is not None:
				event = info.getEvent(0)

		# FIXME only works if already playing a service
		serviceref = ServiceReference(self.session.nav.getCurrentlyPlayingServiceOrGroup())

		if event is None:
			data = (int(time()), int(time() + 60), "", "", None)
		else:
			data = parseEvent(event, description = False)

		self.addTimer(RecordTimerEntry(serviceref, checkOldTimers = True, dirname = preferredTimerPath(), *data))
コード例 #10
0
ファイル: Timer.py プロジェクト: OpenDMM/enigma2-plugins
	def addTimerByEventID(self, param):
		print "[WebComponents.Timer] addTimerByEventID", param
		if param['sRef'] is None:
			return ( False, _("Missing Parameter: sRef") )
		if param['eventid'] is None:
			return ( False, _("Missing Parameter: eventid") )

		justplay = False
		if param['justplay'] is not None:
			if param['justplay'] == "1":
				justplay = True

		if not justplay and not config.misc.recording_allowed.value:
			return (False, _("Recording is currently disabled!"))

		location = preferredTimerPath()
		if 'dirname' in param and param['dirname']:
			location = param['dirname']

		tags = []
		if 'tags' in param and param['tags']:
			tags = unescape(param['tags']).split(' ')

		epgcache = eEPGCache.getInstance()
		event = epgcache.lookupEventId(eServiceReference(param['sRef']), int(param['eventid']))
		if event is None:
			return ( False, _("EventId not found") )

		(begin, end, name, description, eit) = parseEvent(event)

		timer = RecordTimerEntry(ServiceReference(param['sRef']), begin , end, name, description, eit, False, justplay, AFTEREVENT.AUTO, dirname=location, tags=tags)

		conflicts = self.recordtimer.record(timer)
		if conflicts is None:
			return ( True, _("Timer '%s' added") %(timer.name) )
		else:
			print "[WebComponents.Timer] editTimer conflicting Timers: %s" %(conflicts)
			msg = ""
			for timer in conflicts:
				msg = "%s / %s" %(msg, timer.name)

			return (False, _("Conflicting Timer(s) detected! %s") %(msg))
コード例 #11
0
ファイル: EventView.py プロジェクト: ALShalahi/enigma2
	def timerAdd(self):
		if self.isRecording:
			return
		event = self.event
		serviceref = self.currentService
		if event is None:
			return
		eventid = event.getEventId()
		refstr = ':'.join(serviceref.ref.toString().split(':')[:11])
		for timer in self.session.nav.RecordTimer.timer_list:
			if timer.eit == eventid and ':'.join(timer.service_ref.ref.toString().split(':')[:11]) == refstr:
				cb_func1 = lambda ret: self.removeTimer(timer)
				cb_func2 = lambda ret: self.editTimer(timer)
				menu = [(_("Delete timer"), 'CALLFUNC', self.ChoiceBoxCB, cb_func1), (_("Edit timer"), 'CALLFUNC', self.ChoiceBoxCB, cb_func2)]
				self.ChoiceBoxDialog = self.session.instantiateDialog(ChoiceBox, title=_("Select action for timer %s:") % event.getEventName(), list=menu, keys=['green', 'blue'], skin_name="RecordTimerQuestion")
				self.ChoiceBoxDialog.instance.move(ePoint(self.instance.position().x()+self["key_green"].getPosition()[0],self.instance.position().y()+self["key_green"].getPosition()[1]-self["key_green"].instance.size().height()))
				self.showChoiceBoxDialog()
				break
		else:
			newEntry = RecordTimerEntry(self.currentService, checkOldTimers = True, dirname = preferredTimerPath(), *parseEvent(self.event))
			self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
コード例 #12
0
    def addCurrentTimer(self):
        event = None
        service = self.session.nav.getCurrentService()
        if service is not None:
            info = service.info()
            if info is not None:
                event = info.getEvent(0)

        # FIXME only works if already playing a service
        serviceref = ServiceReference(
            self.session.nav.getCurrentlyPlayingServiceOrGroup())

        if event is None:
            data = (int(time()), int(time() + 60), "", "", None)
        else:
            data = parseEvent(event, description=False)
        timer = RecordTimerEntry(serviceref,
                                 checkOldTimers=True,
                                 dirname=preferredTimerPath(),
                                 *data)
        timer.justplay = config.recording.timer_default_type.value == "zap"
        timer.always_zap = config.recording.timer_default_type.value == "zap+record"
        self.addTimer(timer)
コード例 #13
0
 def timerAdd(self):
     if self.isRecording:
         return
     event = self.event
     serviceref = self.serviceRef
     if event is None:
         return
     eventid = event.getEventId()
     refstr = ":".join(serviceref.ref.toString().split(":")[:11])
     for timer in self.session.nav.RecordTimer.timer_list:
         if timer.eit == eventid and ":".join(
                 timer.service_ref.ref.toString().split(
                     ":")[:11]) == refstr:
             # Disable dialog box -> Workaround for non closed dialog when press key GREEN for Delete Timer.  (Crash when again GREEN, BLUE or OK key was pressed.)
             self.editTimer(timer)
             break
     else:
         newEntry = RecordTimerEntry(self.serviceRef,
                                     checkOldTimers=True,
                                     dirname=preferredTimerPath(),
                                     *parseEvent(self.event))
         self.session.openWithCallback(self.finishedAdd, TimerEntry,
                                       newEntry)
コード例 #14
0
	def timerAdd(self):
		cur = self["list"].getCurrent()
		event = cur[0]
		serviceref = cur[1]
		if event is None:
			return
		eventid = event.getEventId()
		refstr = ':'.join(serviceref.ref.toString().split(':')[:11])
		for timer in self.session.nav.RecordTimer.timer_list:
			if timer.eit == eventid and ':'.join(timer.service_ref.ref.toString().split(':')[:11]) == refstr:
				menu = [(_("Delete timer"), "delete"),(_("Edit timer"), "edit")]
				buttons = ["red", "green"]
				def timerAction(choice):
					if choice is not None:
						if choice[1] == "delete":
							self.removeTimer(timer)
						elif choice[1] == "edit":
							self.session.open(TimerEntry, timer)
				self.session.openWithCallback(timerAction, ChoiceBox, title=_("Select action for timer %s:") % event.getEventName(), list=menu, keys=buttons)
				break
		else:
			newEntry = RecordTimerEntry(serviceref, checkOldTimers = True, dirname = preferredTimerPath(), *parseEvent(event))
			self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
コード例 #15
0
ファイル: EventView.py プロジェクト: oostende/openspa1
	def timerAdd(self):
		if self.isRecording:
			return
		event = self.event
		serviceref = self.currentService
		if event is None:
			return
		eventid = event.getEventId()
		begin = event.getBeginTime()
		try:
			end = begin + event.getDuration()
		except:
			pass
		refstr = ':'.join(serviceref.ref.toString().split(':')[:11])
		isRecordEvent = False
		for timer in self.session.nav.RecordTimer.timer_list:
			needed_ref = ':'.join(timer.service_ref.ref.toString().split(':')[:11]) == refstr
			if needed_ref and timer.eit == eventid and (begin < timer.begin <= end or timer.begin <= begin <= timer.end):
				isRecordEvent = True
				break
			elif needed_ref and timer.repeated and self.session.nav.RecordTimer.isInRepeatTimer(timer, event):
				isRecordEvent = True
				break
		if isRecordEvent:
			title_text = timer.repeated and _("Attention, this is repeated timer!\n") or ""
			menu = [(_("Delete timer"), "delete"),(_("Edit timer"), "edit")]
			buttons = ["red", "green"]
			def timerAction(choice):
				if choice is not None:
					if choice[1] == "delete":
						self.removeTimer(timer)
					elif choice[1] == "edit":
						self.session.openWithCallback(self.finishedEdit, TimerEntry, timer)
			self.session.openWithCallback(timerAction, ChoiceBox, title=title_text + _("Select action for timer '%s'.") % timer.name, list=menu, keys=buttons)
		else:
			newEntry = RecordTimerEntry(self.currentService, checkOldTimers = True, dirname = preferredTimerPath(), *parseEvent(self.event))
			self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
コード例 #16
0
ファイル: plugin.py プロジェクト: hd75hd/enigma2-plugins
    def okClicked(self):
        current = self["channellist"].getCurrent()
        if current is None:
            return

        if self.mode == "tvcharts":
            service = eServiceReference(str(current[0][0]))
            self.session.nav.playService(service)
        elif self.mode == "timercharts":
            serviceref = ServiceReference(current[0][0])
            eventid = int(current[0][1])
            event = self.getEventFromId(serviceref, eventid)
            if event is not None:
                newEntry = RecordTimerEntry(
                    serviceref, *parseEvent(event), checkOldTimers=True, dirname=preferredTimerPath()
                )
                self.session.openWithCallback(self.addTimerCallback, TimerEntry, newEntry)
            else:
                self.session.open(
                    MessageBox, "Sorry, no EPG Info available for this event", type=MessageBox.TYPE_ERROR, timeout=10
                )
        elif self.mode == "moviecharts":
            print "[TVCharts] ToDo: Show Movie Info here ..."
            return
コード例 #17
0
ファイル: EpgSelection.py プロジェクト: Toysoft/enigma2_2.1
 def timerAdd(self):
     cur = self["list"].getCurrent()
     event = cur[0]
     serviceref = cur[1]
     if event is None:
         return
     eventid = event.getEventId()
     refstr = serviceref.ref.toString()
     for timer in self.session.nav.RecordTimer.timer_list:
         if timer.eit == eventid and timer.service_ref.ref.toString(
         ) == refstr:
             cb_func = lambda ret: not ret or self.removeTimer(timer)
             self.session.openWithCallback(
                 cb_func, MessageBox,
                 _("Do you really want to delete %s?") %
                 event.getEventName())
             break
     else:
         newEntry = RecordTimerEntry(serviceref,
                                     checkOldTimers=True,
                                     dirname=preferredTimerPath(),
                                     *parseEvent(event))
         self.session.openWithCallback(self.finishedAdd, TimerEntry,
                                       newEntry)
コード例 #18
0
ファイル: EventView.py プロジェクト: venom1911/enigma2
	def timerAdd(self):
		if self.isRecording:
			return
		event = self.event
		serviceref = self.currentService
		if event is None:
			return
		eventid = event.getEventId()
		refstr = ':'.join(serviceref.ref.toString().split(':')[:11])
		for timer in self.session.nav.RecordTimer.timer_list:
			if timer.eit == eventid and ':'.join(timer.service_ref.ref.toString().split(':')[:11]) == refstr:
				# disable dialog box -> workaround for non closed dialog when press key green for delete Timer (bsod when again green, blue or ok key was pressed)
				self.editTimer(timer)
				break
				cb_func1 = lambda ret: self.removeTimer(timer)
				cb_func2 = lambda ret: self.editTimer(timer)
				menu = [(_("Delete timer"), 'CALLFUNC', self.ChoiceBoxCB, cb_func1), (_("Edit timer"), 'CALLFUNC', self.ChoiceBoxCB, cb_func2)]
				self.ChoiceBoxDialog = self.session.instantiateDialog(ChoiceBox, title=_("Select action for timer %s:") % event.getEventName(), list=menu, keys=['green', 'blue'], skin_name="RecordTimerQuestion")
				self.ChoiceBoxDialog.instance.move(ePoint(self.instance.position().x()+self["key_green"].getPosition()[0],self.instance.position().y()+self["key_green"].getPosition()[1]-self["key_green"].instance.size().height()))
				self.showChoiceBoxDialog()
				break
		else:
			newEntry = RecordTimerEntry(self.currentService, checkOldTimers = True, dirname = preferredTimerPath(), *parseEvent(self.event))
			self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
コード例 #19
0
def addTimer(session,
             serviceref,
             begin,
             end,
             name,
             description,
             disabled,
             justplay,
             afterevent,
             dirname,
             tags,
             repeated,
             recordingtype,
             vpsinfo=None,
             logentries=None,
             eit=0,
             always_zap=-1,
             pipzap=-1,
             allow_duplicate=1,
             autoadjust=-1):
    rt = session.nav.RecordTimer

    if not dirname:
        dirname = preferredTimerPath()

    #  IPTV Fix
    serviceref = serviceref.replace('%253a', '%3a')

    try:
        timer = RecordTimerEntry(ServiceReference(serviceref),
                                 begin,
                                 end,
                                 name,
                                 description,
                                 eit,
                                 disabled,
                                 justplay,
                                 afterevent,
                                 dirname=dirname,
                                 tags=tags)

        timer.repeated = repeated

        if logentries:
            timer.log_entries = logentries

        conflicts = rt.record(timer)
        if conflicts:
            errors = []
            conflictinfo = []
            for conflict in conflicts:
                errors.append(conflict.name)
                conflictinfo.append({
                    "serviceref":
                    str(conflict.service_ref),
                    "servicename":
                    conflict.service_ref.getServiceName().replace(
                        '\xc2\x86', '').replace('\xc2\x87', ''),
                    "name":
                    conflict.name,
                    "begin":
                    conflict.begin,
                    "end":
                    conflict.end,
                    "realbegin":
                    strftime(_("%d.%m.%Y %H:%M"),
                             (localtime(float(conflict.begin)))),
                    "realend":
                    strftime(_("%d.%m.%Y %H:%M"),
                             (localtime(float(conflict.end))))
                })

            return {
                "result":
                False,
                "message":
                _("Conflicting Timer(s) detected! %s") % " / ".join(errors),
                "conflicts":
                conflictinfo
            }
        # VPS
        if vpsinfo is not None:
            timer.vpsplugin_enabled = vpsinfo["vpsplugin_enabled"]
            timer.vpsplugin_overwrite = vpsinfo["vpsplugin_overwrite"]
            timer.vpsplugin_time = vpsinfo["vpsplugin_time"]

        if always_zap != -1:
            if hasattr(timer, "always_zap"):
                timer.always_zap = always_zap == 1
            if hasattr(timer, "zapbeforerecord"):
                timer.zapbeforerecord = always_zap == 1

        if hasattr(timer, "autoadjust"):
            if autoadjust == -1:
                autoadjust = config.recording.adjust_time_to_event.value and 1 or 0
            autoadjust = autoadjust

        if hasattr(timer, "allow_duplicate"):
            allow_duplicate = allow_duplicate

        if pipzap != -1:
            if hasattr(timer, "pipzap"):
                timer.pipzap = pipzap == 1

        if recordingtype:
            timer.descramble = {
                "normal": True,
                "descrambled": True,
                "scrambled": False,
            }[recordingtype]
            timer.record_ecm = {
                "normal": False,
                "descrambled": True,
                "scrambled": True,
            }[recordingtype]

    except Exception as e:
        print(str(e))
        return {
            "result": False,
            "message": _("Could not add timer '%s'!") % name
        }

    return {"result": True, "message": _("Timer '%s' added") % name}
コード例 #20
0
    def timerAdd(self):
        cur = self['list'].getCurrent()
        event = cur[0]
        if event is None:
            return
        serviceref = cur[1]
        isRecordEvent = isRepeat = firstNextRepeatEvent = isRunning = False
        eventid = event.getEventId()
        begin = event.getBeginTime()
        duration = event.getDuration()
        end = begin + duration
        refstr = ':'.join(serviceref.ref.toString().split(':')[:11])
        isRepeat = False
        prev_state = 0
        for timer in self.session.nav.RecordTimer.timer_list:
            needed_ref = ':'.join(
                timer.service_ref.ref.toString().split(':')[:11]) == refstr
            if needed_ref and timer.eit == eventid and (
                    begin < timer.begin <= end
                    or timer.begin <= begin <= timer.end):
                isRecordEvent = True
                break

        if not isRecordEvent:
            x = self.session.nav.RecordTimer.isInTimer(eventid, begin,
                                                       duration, refstr, True)
            if x and x[1][0] in (2, 7, 12):
                isRecordEvent = True
                timer = x[3]
        if isRecordEvent:
            isRepeat = timer.repeated
            prev_state = timer.state
            isRunning = prev_state in (1, 2)
            title_text = isRepeat and _(
                'Attention, this is repeated timer!\n') or ''
            firstNextRepeatEvent = isRepeat and (
                begin < timer.begin <= end
                or timer.begin <= begin <= timer.end) and not timer.justplay
            menu = [(_('Delete timer'), 'delete'), (_('Edit timer'), 'edit')]
            buttons = ['red', 'green']
            if not isRunning:
                if firstNextRepeatEvent and timer.isFindRunningEvent(
                ) and not timer.isFindNextEvent():
                    menu.append((_('Options disable timer'), 'disablerepeat'))
                else:
                    menu.append((_('Disable timer'), 'disable'))
                buttons.append('yellow')
            elif prev_state == 2 and firstNextRepeatEvent:
                menu.append(
                    (_('Options disable timer'), 'disablerepeatrunning'))
                buttons.append('yellow')
            menu.append((_('Timer Overview'), 'timereditlist'))

            def timerAction(choice):
                if choice is not None:
                    if choice[1] == 'delete':
                        self.removeTimer(timer)
                    elif choice[1] == 'edit':
                        self.session.openWithCallback(self.finishedEdit,
                                                      TimerEntry, timer)
                    elif choice[1] == 'disable':
                        self.disableTimer(timer, prev_state)
                    elif choice[1] == 'timereditlist':
                        self.session.open(TimerEditList)
                    elif choice[1] == 'disablerepeatrunning':
                        self.disableTimer(timer,
                                          prev_state,
                                          repeat=True,
                                          record=True)
                    elif choice[1] == 'disablerepeat':
                        self.disableTimer(timer, prev_state, repeat=True)

            self.session.openWithCallback(
                timerAction,
                ChoiceBox,
                title=title_text +
                _("Select action for timer '%s'.") % timer.name,
                list=menu,
                keys=buttons)
        else:
            newEntry = RecordTimerEntry(serviceref,
                                        checkOldTimers=True,
                                        dirname=preferredTimerPath(),
                                        *parseEvent(event))
            self.session.openWithCallback(self.finishedAdd, TimerEntry,
                                          newEntry)
コード例 #21
0
ファイル: timers.py プロジェクト: HDMU/e2openplugin-OpenWebif
def addTimer(session, serviceref, begin, end, name, description, disabled, justplay, afterevent, dirname, tags, repeated, vpsinfo=None, logentries=None, eit=0, always_zap=-1):
	rt = session.nav.RecordTimer

	if not dirname:
		dirname = preferredTimerPath()

	try:
		timer = RecordTimerEntry(
			ServiceReference(serviceref),
			begin,
			end,
			name,
			description,
			eit,
			disabled,
			justplay,
			afterevent,
			dirname=dirname,
			tags=tags)

		timer.repeated = repeated

		if logentries:
			timer.log_entries = logentries

		conflicts = rt.record(timer)
		if conflicts:
			errors = []
			conflictinfo = []
			for conflict in conflicts:
				errors.append(conflict.name)
				conflictinfo.append({
					"serviceref": str(conflict.service_ref),
					"servicename": conflict.service_ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', ''),
					"name": conflict.name,
					"begin" : conflict.begin,
					"end" : conflict.end,
					"realbegin":strftime("%d.%m.%Y %H:%M", (localtime(float(conflict.begin)))),
					"realend":strftime("%d.%m.%Y %H:%M", (localtime(float(conflict.end))))
				})

			return {
				"result": False,
				"message": _("Conflicting Timer(s) detected! %s") % " / ".join(errors),
				"conflicts" : conflictinfo
			}
		#VPS
		if vpsinfo is not None:
			timer.vpsplugin_enabled = vpsinfo["vpsplugin_enabled"]
			timer.vpsplugin_overwrite = vpsinfo["vpsplugin_overwrite"]
			timer.vpsplugin_time = vpsinfo["vpsplugin_time"]

		if always_zap <> -1:
			if hasattr(timer,"always_zap"):
				timer.always_zap = always_zap == 1

	except Exception, e:
		print e
		return {
			"result": False,
			"message": _("Could not add timer '%s'!") % name
		}
コード例 #22
0
def addTimer(session,
             serviceref,
             begin,
             end,
             name,
             description,
             disabled,
             justplay,
             afterevent,
             dirname,
             tags,
             repeated,
             vpsinfo=None,
             logentries=None,
             eit=0,
             always_zap=-1):
    rt = session.nav.RecordTimer

    if not dirname:
        dirname = preferredTimerPath()

    try:
        timer = RecordTimerEntry(ServiceReference(serviceref),
                                 begin,
                                 end,
                                 name,
                                 description,
                                 eit,
                                 disabled,
                                 justplay,
                                 afterevent,
                                 dirname=dirname,
                                 tags=tags)

        timer.repeated = repeated

        if logentries:
            timer.log_entries = logentries

        conflicts = rt.record(timer)
        if conflicts:
            errors = []
            conflictinfo = []
            for conflict in conflicts:
                errors.append(conflict.name)
                conflictinfo.append({
                    "serviceref":
                    str(conflict.service_ref),
                    "servicename":
                    mangle_epg_text(conflict.service_ref.getServiceName()),
                    "name":
                    conflict.name,
                    "begin":
                    conflict.begin,
                    "end":
                    conflict.end,
                    "realbegin":
                    strftime("%d.%m.%Y %H:%M",
                             (localtime(float(conflict.begin)))),
                    "realend":
                    strftime("%d.%m.%Y %H:%M",
                             (localtime(float(conflict.end))))
                })

            return {
                "result":
                False,
                "message":
                _("Conflicting Timer(s) detected! %s") % " / ".join(errors),
                "conflicts":
                conflictinfo
            }
        # VPS
        if vpsinfo is not None:
            timer.vpsplugin_enabled = vpsinfo["vpsplugin_enabled"]
            timer.vpsplugin_overwrite = vpsinfo["vpsplugin_overwrite"]
            timer.vpsplugin_time = vpsinfo["vpsplugin_time"]

        if always_zap != -1:
            if hasattr(timer, "always_zap"):
                timer.always_zap = always_zap == 1

    except Exception as e:
        print e
        return {
            "result": False,
            "message": _("Could not add timer '%s'!") % name
        }

    return {"result": True, "message": _("Timer '%s' added") % name}
コード例 #23
0
    def editTimer(self, param):
        print("[WebComponents.Timer] editTimer")

        #OK first we need to parse all of your Parameters
        #For some of them (like afterEvent or justplay) we can use default values
        #for others (the serviceReference or the Begin/End time of the timer
        #we have to quit if they are not set/have illegal values

        if 'sRef' not in param:
            return (False, _("Missing Parameter: sRef"))
        service_ref = ServiceReference(param['sRef'])

        repeated = int(param.get('repeated') or 0)

        if 'begin' not in param:
            return (False, _("Missing Parameter: begin"))
        begin = int(float(param['begin']))

        if 'end' not in param:
            return (False, _("Missing Parameter: end"))
        end = int(float(param['end']))

        tm = int(time())
        if tm <= begin:
            pass
        elif tm > begin and tm < end and repeated == 0:
            pass
        elif repeated == 0:
            return (False,
                    _("Illegal Parameter value for Parameter begin : '%s'") %
                    begin)

        if 'applyMargin' in param:
            if param['applyMargin'] == "1":
                begin -= config.recording.margin_before.value * 60
                end += config.recording.margin_after.value * 60

        if 'name' not in param:
            return (False, _("Missing Parameter: name"))
        name = param['name']

        if 'description' not in param:
            return (False, _("Missing Parameter: description"))
        description = param['description'].replace("\n", " ")

        eit = param.get("eit", None)
        if eit is None or eit.strip() == "":
            eit = 0
        else:
            try:
                eit = int(eit)
            except ValueError:
                return (False,
                        _("Illegal Parameter value for Parameter eit : '%s'") %
                        eit)

        print("[WebComponents.Sources.Timer]: eit=%d" % eit)
        if eit != 0:
            #check if the given event exists, if it doesn't the timer may be already running
            epgcache = eEPGCache.getInstance()
            event = epgcache.lookupEventId(eServiceReference(param['sRef']),
                                           eit)
            if event:
                eit = event.getEventId()
                #TODO add some subservice handling
            else:
                print(
                    "[WebComponents.Sources.Timer] event not found, will be ignored"
                )

        disabled = False  #Default to: Enabled
        if 'disabled' in param:
            if param['disabled'] == "1":
                disabled = True
            else:
                #TODO - maybe we can give the user some useful hint here
                pass

        justplay = False  #Default to: Record
        if 'justplay' in param:
            if param['justplay'] == "1":
                justplay = True

        afterEvent = 3  #Default to Afterevent: Auto
        if 'afterevent' in param:
            if (param['afterevent'] == "0") or (param['afterevent']
                                                == "1") or (param['afterevent']
                                                            == "2"):
                afterEvent = int(param['afterevent'])

        dirname = preferredTimerPath()
        if 'dirname' in param and param['dirname']:
            dirname = param['dirname']

        tags = []
        if 'tags' in param and param['tags']:
            tags = unescape(param['tags']).split(' ')

        delold = 0
        if 'deleteOldOnSave' in param:
            delold = int(param['deleteOldOnSave'])

        #Try to edit an existing Timer
        if delold:
            if 'channelOld' in param and param['channelOld']:
                channelOld = ServiceReference(param['channelOld'])
            else:
                return (False, _("Missing Parameter: channelOld"))
            # We do need all of the following Parameters, too, for being able of finding the Timer.
            # Therefore so we can neither use default values in this part nor can we
            # continue if a parameter is missing
            if 'beginOld' not in param:
                return (False, _("Missing Parameter: beginOld"))
            beginOld = int(param['beginOld'])

            if 'endOld' not in param:
                return (False, _("Missing Parameter: endOld"))
            endOld = int(param['endOld'])

            #let's try to find the timer
            try:
                for timer in self.recordtimer.timer_list + self.recordtimer.processed_timers:
                    if str(timer.service_ref) == str(channelOld):
                        if int(timer.begin) == beginOld:
                            if int(
                                    timer.end
                            ) == endOld:  #we've found the timer we've been searching for
                                #set the new data
                                timer.service_ref = service_ref
                                timer.begin = begin
                                timer.end = end
                                timer.name = name
                                timer.description = description
                                timer.eit = eit
                                timer.disabled = disabled
                                timer.justplay = justplay
                                timer.afterEvent = afterEvent
                                timer.dirname = dirname
                                timer.tags = tags
                                timer.repeated = repeated
                                timer.processRepeated()

                                #sanity check
                                timersanitycheck = TimerSanityCheck(
                                    self.session.nav.RecordTimer.timer_list,
                                    timer)
                                conflicts = None
                                if not timersanitycheck.check():
                                    conflicts = timersanitycheck.getSimulTimerList(
                                    )
                                    if conflicts is not None:
                                        for x in conflicts:
                                            if x.setAutoincreaseEnd(entry):
                                                self.session.nav.RecordTimer.timeChanged(
                                                    x)
                                        if not timersanitycheck.check():
                                            conflicts = timersanitycheck.getSimulTimerList(
                                            )

                                if conflicts is None:
                                    self.recordtimer.timeChanged(
                                        timer)  #go and save it
                                    print(
                                        "[WebComponents.Timer] editTimer: Timer changed!"
                                    )
                                    return (True, "Timer '%s' changed" %
                                            (timer.name))
                                else:
                                    print(
                                        "[WebComponents.Timer] editTimer conflicting Timers: %s"
                                        % (conflicts))
                                    msg = ""
                                    for t in conflicts:
                                        msg = "%s / %s" % (msg, t.name)

                                    return (
                                        False,
                                        _("Conflicting Timer(s) detected! %s")
                                        % (msg))

            except Exception as e:
                #obviously some value was not good, return an error
                import traceback
                print(traceback.format_exc())
                return (False, _("Changing the timer for '%s' failed!") % name)

            return (
                False,
                _("Could not find timer '%s' with given start and end time!") %
                name)

        #Try adding a new Timer

        try:
            #Create a new instance of recordtimerentry
            timer = RecordTimerEntry(service_ref,
                                     begin,
                                     end,
                                     name,
                                     description,
                                     eit,
                                     disabled,
                                     justplay,
                                     afterEvent,
                                     dirname=dirname,
                                     tags=tags)
            timer.repeated = repeated
            #add the new timer
            conflicts = self.recordtimer.record(timer)
            if conflicts is None:
                return (True, _("Timer '%s' added") % (timer.name))
            else:
                print(
                    "[WebComponents.Timer] editTimer conflicting Timers: %s" %
                    (conflicts))
                msg = ""
                for timer in conflicts:
                    msg = "%s / %s" % (msg, timer.name)

                return (False, _("Conflicting Timer(s) detected! %s") % (msg))

        except Exception as e:
            #something went wrong, most possibly one of the given paramater-values was wrong
            print("[WebComponents.Timer] editTimer exception: %s" % (e))
            return (False, _("Could not add timer '%s'!") % name)

        return (False, "Unexpected Error")
コード例 #24
0
ファイル: SkyTimerRec.py プロジェクト: arn354/misc-enigma2
    def addTimer(
        session,
        serviceref,
        begin,
        end,
        name,
        description,
        disabled,
        justplay,
        afterevent,
        dirname,
        tags,
        repeated,
        logentries=None,
        eit=0,
    ):

        recordHandler = NavigationInstance.instance.RecordTimer

        msgTimeout = config.plugins.skyrecorder.msgtimeout.value

        if not dirname:
            try:
                dirname = config.plugins.skyrecorder.anytimefolder.value
            except Exception:
                dirname = preferredTimerPath()

        print "mao1", dirname

        try:
            timer = RecordTimerEntry(
                ServiceReference(serviceref),
                begin,
                end,
                name,
                description,
                eit,
                disabled,
                justplay,
                afterevent,
                dirname=dirname,
                tags=tags,
            )

            timer.repeated = repeated

            if logentries:
                timer.log_entries = logentries
                print "rrgggg"

            conflicts = recordHandler.record(timer)
            if conflicts:
                errors = []
                for conflict in conflicts:
                    errors.append(conflict.name)

                print "duuuupppppppeeeeee"
                return {"result": False, "message": "Conflicting Timer(s) detected! %s" % " / ".join(errors)}
        except Exception, e:
            print "adupppeee"
            print e
            return {"result": False, "message": "Could not add timer '%s'!" % name}
コード例 #25
0
ファイル: Timer.py プロジェクト: OpenDMM/enigma2-plugins
	def editTimer(self, param):
		print "[WebComponents.Timer] editTimer"

		#OK first we need to parse all of your Parameters
		#For some of them (like afterEvent or justplay) we can use default values
		#for others (the serviceReference or the Begin/End time of the timer
		#we have to quit if they are not set/have illegal values

		if 'sRef' not in param:
			return ( False, _("Missing Parameter: sRef") )
		service_ref = ServiceReference(param['sRef'])

		repeated = int(param.get('repeated') or 0)

		if 'begin' not in param:
			return ( False, _("Missing Parameter: begin") )
		begin = int(float(param['begin']))

		if 'end' not in param:
			return ( False, _("Missing Parameter: end") )
		end = int(float(param['end']))

		tm = int( time() )
		if tm <= begin:
			pass
		elif tm > begin and tm < end and repeated == 0:
			pass
		elif repeated == 0:
			return ( False, _("Illegal Parameter value for Parameter begin : '%s'") % begin )

		if 'applyMargin' in param:
			if param['applyMargin'] == "1":
				begin -= config.recording.margin_before.value * 60
				end += config.recording.margin_after.value * 60

		if 'name' not in param:
			return ( False, _("Missing Parameter: name") )
		name = param['name']

		if 'description' not in param:
			return ( False, _("Missing Parameter: description") )
		description = param['description'].replace("\n", " ")

		eit = param.get("eit", None)
		if eit is None or eit.strip() == "":
			eit = 0
		else:
			try: eit = int(eit)
			except ValueError: return ( False, _("Illegal Parameter value for Parameter eit : '%s'") % eit )

		print "[WebComponents.Sources.Timer]: eit=%d" %eit
		if eit != 0:
			#check if the given event exists, if it doesn't the timer may be already running
			epgcache = eEPGCache.getInstance()
			event = epgcache.lookupEventId(eServiceReference(param['sRef']), eit)
			if event:
				eit = event.getEventId()
				#TODO add some subservice handling
			else:
				print "[WebComponents.Sources.Timer] event not found, will be ignored"

		disabled = False #Default to: Enabled
		if 'disabled' in param:
			if param['disabled'] == "1":
				disabled = True
			else:
				#TODO - maybe we can give the user some useful hint here
				pass

		justplay = False #Default to: Record
		if 'justplay' in param:
			if param['justplay'] == "1":
				justplay = True

		if not justplay and not config.misc.recording_allowed.value:
			return (False, _("Recording is currently disabled!"))

		afterEvent = 3 #Default to Afterevent: Auto
		if 'afterevent' in param:
			if (param['afterevent'] == "0") or (param['afterevent'] == "1") or (param['afterevent'] == "2"):
				afterEvent = int(param['afterevent'])

		dirname = preferredTimerPath()
		if 'dirname' in param and param['dirname']:
			dirname = param['dirname']

		tags = []
		if 'tags' in param and param['tags']:
			tags = unescape(param['tags']).split(' ')

		delold = 0
		if 'deleteOldOnSave' in param:
			delold = int(param['deleteOldOnSave'])

		#Try to edit an existing Timer
		if delold:
			if 'channelOld' in param and param['channelOld']:
				channelOld = ServiceReference(param['channelOld'])
			else:
				return ( False, _("Missing Parameter: channelOld") )
			# We do need all of the following Parameters, too, for being able of finding the Timer.
			# Therefore so we can neither use default values in this part nor can we
			# continue if a parameter is missing
			if 'beginOld' not in param:
				return ( False, _("Missing Parameter: beginOld") )
			beginOld = int(param['beginOld'])

			if 'endOld' not in param:
				return ( False, _("Missing Parameter: endOld") )
			endOld = int(param['endOld'])

			#let's try to find the timer
			try:
				for timer in self.recordtimer.timer_list + self.recordtimer.processed_timers:
					if str(timer.service_ref) == str(channelOld):
						if int(timer.begin) == beginOld:
							if int(timer.end) == endOld: #we've found the timer we've been searching for
								#set the new data
								timer.service_ref = service_ref
								timer.begin = begin
								timer.end = end
								timer.name = name
								timer.description = description
								timer.eit = eit
								timer.disabled = disabled
								timer.justplay = justplay
								timer.afterEvent = afterEvent
								timer.dirname = dirname
								timer.tags = tags
								timer.repeated = repeated
								timer.processRepeated()

								#sanity check
								timersanitycheck = TimerSanityCheck(self.session.nav.RecordTimer.timer_list, timer)
								conflicts = None
								if not timersanitycheck.check():
									conflicts = timersanitycheck.getSimulTimerList()
									if conflicts is not None:
										for x in conflicts:
											if x.setAutoincreaseEnd(entry):
												self.session.nav.RecordTimer.timeChanged(x)
										if not timersanitycheck.check():
											conflicts = timersanitycheck.getSimulTimerList()

								if conflicts is None:
									self.recordtimer.timeChanged(timer) #go and save it
									print "[WebComponents.Timer] editTimer: Timer changed!"
									return ( True, "Timer '%s' changed" %(timer.name) )
								else:
									print "[WebComponents.Timer] editTimer conflicting Timers: %s" %(conflicts)
									msg = ""
									for t in conflicts:
										msg = "%s / %s" %(msg, t.name)

									return (False, _("Conflicting Timer(s) detected! %s") %(msg))

			except Exception as e:
				#obviously some value was not good, return an error
				import traceback
				print traceback.format_exc()
				return ( False, _("Changing the timer for '%s' failed!") % name )


			return ( False, _("Could not find timer '%s' with given start and end time!") % name )

		#Try adding a new Timer

		try:
			#Create a new instance of recordtimerentry
			timer = RecordTimerEntry(service_ref, begin, end, name, description, eit, disabled, justplay, afterEvent, dirname=dirname, tags=tags)
			timer.repeated = repeated
			#add the new timer
			conflicts = self.recordtimer.record(timer)
			if conflicts is None:
				return ( True, _("Timer '%s' added") %(timer.name) )
			else:
				print "[WebComponents.Timer] editTimer conflicting Timers: %s" %(conflicts)
				msg = ""
				for timer in conflicts:
					msg = "%s / %s" %(msg, timer.name)

				return (False, _("Conflicting Timer(s) detected! %s") %(msg))

		except Exception, e:
			#something went wrong, most possibly one of the given paramater-values was wrong
			print "[WebComponents.Timer] editTimer exception: %s" %(e)
			return ( False, _("Could not add timer '%s'!") % name )
コード例 #26
0
def addTimer(session,
             serviceref,
             begin,
             end,
             name,
             description,
             disabled,
             justplay,
             afterevent,
             dirname,
             tags,
             repeated,
             vpsinfo=None,
             logentries=None,
             eit=0,
             always_zap=-1):
    rt = session.nav.RecordTimer

    print "mao1", dirname

    if not dirname:
        dirname = preferredTimerPath()

    print "mao2", dirname

    try:
        timer = RecordTimerEntry(ServiceReference(serviceref),
                                 begin,
                                 end,
                                 name,
                                 description,
                                 eit,
                                 disabled,
                                 justplay,
                                 afterevent,
                                 dirname=dirname,
                                 tags=tags)

        timer.repeated = repeated

        if logentries:
            timer.log_entries = logentries

        conflicts = rt.record(timer)
        if conflicts:
            errors = []
            for conflict in conflicts:
                errors.append(conflict.name)

            return {
                "result":
                False,
                "message":
                _("Conflicting Timer(s) detected! %s") % " / ".join(errors)
            }
        #VPS
        if vpsinfo is not None:
            timer.vpsplugin_enabled = vpsinfo["vpsplugin_enabled"]
            timer.vpsplugin_overwrite = vpsinfo["vpsplugin_overwrite"]
            timer.vpsplugin_time = vpsinfo["vpsplugin_time"]

        if always_zap <> -1:
            if hasattr(timer, "always_zap"):
                timer.always_zap = always_zap == 1

    except Exception, e:
        print e
        return {
            "result": False,
            "message": _("Could not add timer '%s'!") % name
        }
コード例 #27
0
	def keyRecord(self):
		log.debug("keyRecord")
		if self.event and self.service:
			event = self.event
			ref = self.service
			if event is None:
				return
			eventid = event.getEventId()
			eref = eServiceReference(str(ref))
			refstr = eref.toString()
			for timer in self.session.nav.RecordTimer.timer_list:
				if timer.eit == eventid and timer.service_ref.ref.toString() == refstr:
					cb_func = lambda ret : not ret or self.removeTimer(timer)
					self.session.openWithCallback(cb_func, MessageBox, _("Do you really want to delete %s?") % event.getEventName())
					break
			else:
				#newEntry = RecordTimerEntry(ServiceReference(ref), checkOldTimers = True, dirname = preferredTimerPath(), *parseEvent(self.event))
				begin, end, name, description, eit = parseEvent(self.event)
				
				from SeriesPlugin import refactorTitle, refactorDescription
				if self.data:
					name = refactorTitle(name, self.data)
					description = refactorDescription(description, self.data)
				
				#newEntry = RecordTimerEntry(ServiceReference(refstr), begin, end, name, description, eit, dirname = preferredTimerPath())
				newEntry = RecordTimerEntry(ServiceReference(str(ref)), begin, end, name, description, eit, dirname = preferredTimerPath())
				#newEntry = RecordTimerEntry(refstr, begin, end, name, description, eit, dirname = preferredTimerPath())
				self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
コード例 #28
0
	def okClicked(self):
		current = self["channellist"].getCurrent()
		if current is None:
			return

		if self.mode == "tvcharts":
			service = eServiceReference(str(current[0][0]))
			self.session.nav.playService(service)
		elif self.mode == "timercharts":
			serviceref = ServiceReference(current[0][0])
			eventid = int(current[0][1])
			event = self.getEventFromId(serviceref, eventid)
			if event is not None:
				newEntry = RecordTimerEntry(serviceref, *parseEvent(event), checkOldTimers = True, dirname = preferredTimerPath())
				self.session.openWithCallback(self.addTimerCallback, TimerEntry, newEntry)
			else:
				self.session.open(MessageBox, "Sorry, no EPG Info available for this event", type=MessageBox.TYPE_ERROR, timeout=10)
		elif self.mode == "moviecharts":
			print("[TVCharts] ToDo: Show Movie Info here ...")
			return
コード例 #29
0
  def editTimer(self, param):
    print "[WebComponents.Timer] editTimer"

    #OK first we need to parse all of your Parameters
    #For some of them (like afterEvent or justplay) we can use default values
    #for others (the serviceReference or the Begin/End time of the timer
    #we have to quit if they are not set/have illegal values

    if 'serviceref' in param:
      param['sRef'] = str(param['serviceref'])

    if 'sRef' not in param:
      return ( False, "Missing Parameter: sRef" )
    service_ref = ServiceReference(param['sRef'])

    repeated = int(param.get('repeated') or 0)

    if 'begin' not in param:
      return ( False, "Missing Parameter: begin" )
    begin = int(float(param['begin']))

    if 'end' not in param:
      return ( False, "Missing Parameter: end" )
    end = int(float(param['end']))

    tm = time()
    if tm <= begin:
      pass
    elif tm > begin and tm < end and repeated == 0:
      begin = time()
    elif repeated == 0:
      return ( False, "Illegal Parameter value for Parameter begin : '%s'" % begin )

    if 'name' not in param:
      return ( False, "Missing Parameter: name" )
    name = param['name']

    if 'description' not in param:
      return ( False, "Missing Parameter: description" )
    description = param['description'].replace("\n", " ")

    disabled = False #Default to: Enabled
    if 'disabled' in param:
      if param['disabled'] == "1":
        disabled = True
      else:
        #TODO - maybe we can give the user some useful hint here
        pass

    justplay = False #Default to: Record
    if 'justplay' in param:
      if param['justplay'] == "1":
        justplay = True

    afterEvent = 3 #Default to Afterevent: Auto
    if 'afterevent' in param:
      if (param['afterevent'] == "0") or (param['afterevent'] == "1") or (param['afterevent'] == "2"):
        afterEvent = int(param['afterevent'])

    dirname = preferredTimerPath()
    if 'dirname' in param and param['dirname']:
      dirname = param['dirname']

    tags = []
    if 'tags' in param and param['tags']:
      tags = unescape(param['tags']).split(' ')

    delold = 0
    if 'deleteOldOnSave' in param:
      delold = int(param['deleteOldOnSave'])

    #Try to edit an existing Timer
    if delold:
      if 'channelOld' in param and param['channelOld']:
        channelOld = ServiceReference(param['channelOld'])
      else:
        return ( False, "Missing Parameter: channelOld" )
      # We do need all of the following Parameters, too, for being able of finding the Timer.
      # Therefore so we can neither use default values in this part nor can we
      # continue if a parameter is missing
      if 'beginOld' not in param:
        return ( False, "Missing Parameter: beginOld" )
      beginOld = int(param['beginOld'])

      if 'endOld' not in param:
        return ( False, "Missing Parameter: endOld" )
      endOld = int(param['endOld'])

      #let's try to find the timer
      try:
        for timer in self.__recordtimer.timer_list + self.__recordtimer.processed_timers:
          if str(timer.service_ref) == str(channelOld):
            if int(timer.begin) == beginOld:
              if int(timer.end) == endOld:                
                #we've found the timer we've been searching for                
                
                #Delete the old entry
                self.__recordtimer.removeEntry(timer)
                old = timer
                
                timer = RecordTimerEntry(service_ref, begin, end, name, description, 0, disabled, justplay, afterEvent, dirname=dirname, tags=tags)
                timer.repeated = repeated
                timer.log_entries = old.log_entries                
                
                timer.processRepeated()                
                #send the changed timer back to enigma2 and hope it's good
                
                conflicts = self.__recordtimer.record(timer)
                if conflicts is None:
                  print "[WebComponents.Timer] editTimer: Timer changed!"
                  return ( True, "Timer '%s' changed" %(timer.name) )
                else:
                  print "[WebComponents.Timer] editTimer conflicting Timers: %s" %(conflicts)
                  msg = ""
                  for timer in conflicts:
                    msg = "%s / %s" %(msg, timer.name)        
                    
                  return (False, "Conflicting Timer(s) detected! %s" %(msg)) 

      except Exception:
        #obviously some value was not good, return an error
        return ( False, "Changing the timer for '%s' failed!" % name )

      return ( False, "Could not find timer '%s' with given start and end time!" % name )

    #Try adding a new Timer

    try:
      #Create a new instance of recordtimerentry
      timer = RecordTimerEntry(service_ref, begin, end, name, description, 0, disabled, justplay, afterEvent, dirname=dirname, tags=tags)
      timer.repeated = repeated
      #add the new timer
      conflicts = self.__recordtimer.record(timer)
      if conflicts is None:
        return ( True, "Timer '%s' added" %(timer.name) )
      else:
        print "[WebComponents.Timer] editTimer conflicting Timers: %s" %(conflicts)
        msg = ""
        for timer in conflicts:
          msg = "%s / %s" %(msg, timer.name)        
          
        return (False, "Conflicting Timer(s) detected! %s" %(msg)) 
        
    except Exception, e:
      #something went wrong, most possibly one of the given paramater-values was wrong
      print "[WebComponents.Timer] editTimer exception: %s" %(e)
      return ( False, "Could not add timer '%s'!" % name )
コード例 #30
0
ファイル: Timer.py プロジェクト: grantor/enigma2-plugins
    def editTimer(self, param):
        print "[WebComponents.Timer] editTimer"

        #OK first we need to parse all of your Parameters
        #For some of them (like afterEvent or justplay) we can use default values
        #for others (the serviceReference or the Begin/End time of the timer
        #we have to quit if they are not set/have illegal values

        if 'sRef' not in param:
            return (False, "Missing Parameter: sRef")
        service_ref = ServiceReference(param['sRef'])

        repeated = int(param.get('repeated') or 0)

        if 'begin' not in param:
            return (False, "Missing Parameter: begin")
        begin = int(float(param['begin']))

        if 'end' not in param:
            return (False, "Missing Parameter: end")
        end = int(float(param['end']))

        tm = time()
        if tm <= begin:
            pass
        elif tm > begin and tm < end and repeated == 0:
            begin = time()
        elif repeated == 0:
            return (False,
                    "Illegal Parameter value for Parameter begin : '%s'" %
                    begin)

        if 'name' not in param:
            return (False, "Missing Parameter: name")
        name = param['name']

        if 'description' not in param:
            return (False, "Missing Parameter: description")
        description = param['description'].replace("\n", " ")

        disabled = False  #Default to: Enabled
        if 'disabled' in param:
            if param['disabled'] == "1":
                disabled = True
            else:
                #TODO - maybe we can give the user some useful hint here
                pass

        justplay = False  #Default to: Record
        if 'justplay' in param:
            if param['justplay'] == "1":
                justplay = True

        afterEvent = 3  #Default to Afterevent: Auto
        if 'afterevent' in param:
            if (param['afterevent'] == "0") or (param['afterevent']
                                                == "1") or (param['afterevent']
                                                            == "2"):
                afterEvent = int(param['afterevent'])

        dirname = preferredTimerPath()
        if 'dirname' in param and param['dirname']:
            dirname = param['dirname']

        tags = []
        if 'tags' in param and param['tags']:
            tags = unescape(param['tags']).split(' ')

        delold = 0
        if 'deleteOldOnSave' in param:
            delold = int(param['deleteOldOnSave'])

        #Try to edit an existing Timer
        if delold:
            if 'channelOld' in param and param['channelOld']:
                channelOld = ServiceReference(param['channelOld'])
            else:
                return (False, "Missing Parameter: channelOld")
            # We do need all of the following Parameters, too, for being able of finding the Timer.
            # Therefore so we can neither use default values in this part nor can we
            # continue if a parameter is missing
            if 'beginOld' not in param:
                return (False, "Missing Parameter: beginOld")
            beginOld = int(param['beginOld'])

            if 'endOld' not in param:
                return (False, "Missing Parameter: endOld")
            endOld = int(param['endOld'])

            #let's try to find the timer
            try:
                for timer in self.recordtimer.timer_list + self.recordtimer.processed_timers:
                    if str(timer.service_ref) == str(channelOld):
                        if int(timer.begin) == beginOld:
                            if int(timer.end) == endOld:
                                #we've found the timer we've been searching for

                                #Delete the old entry
                                self.recordtimer.removeEntry(timer)
                                old = timer

                                timer = RecordTimerEntry(service_ref,
                                                         begin,
                                                         end,
                                                         name,
                                                         description,
                                                         0,
                                                         disabled,
                                                         justplay,
                                                         afterEvent,
                                                         dirname=dirname,
                                                         tags=tags)
                                timer.repeated = repeated
                                timer.log_entries = old.log_entries

                                timer.processRepeated()
                                #send the changed timer back to enigma2 and hope it's good

                                conflicts = self.recordtimer.record(timer)
                                if conflicts is None:
                                    print "[WebComponents.Timer] editTimer: Timer changed!"
                                    return (True, "Timer '%s' changed" %
                                            (timer.name))
                                else:
                                    print "[WebComponents.Timer] editTimer conflicting Timers: %s" % (
                                        conflicts)
                                    msg = ""
                                    for timer in conflicts:
                                        msg = "%s / %s" % (msg, timer.name)

                                    return (
                                        False,
                                        "Conflicting Timer(s) detected! %s" %
                                        (msg))

            except Exception:
                #obviously some value was not good, return an error
                return (False, "Changing the timer for '%s' failed!" % name)

            return (
                False,
                "Could not find timer '%s' with given start and end time!" %
                name)

        #Try adding a new Timer

        try:
            #Create a new instance of recordtimerentry
            timer = RecordTimerEntry(service_ref,
                                     begin,
                                     end,
                                     name,
                                     description,
                                     0,
                                     disabled,
                                     justplay,
                                     afterEvent,
                                     dirname=dirname,
                                     tags=tags)
            timer.repeated = repeated
            #add the new timer
            conflicts = self.recordtimer.record(timer)
            if conflicts is None:
                return (True, "Timer '%s' added" % (timer.name))
            else:
                print "[WebComponents.Timer] editTimer conflicting Timers: %s" % (
                    conflicts)
                msg = ""
                for timer in conflicts:
                    msg = "%s / %s" % (msg, timer.name)

                return (False, "Conflicting Timer(s) detected! %s" % (msg))

        except Exception, e:
            #something went wrong, most possibly one of the given paramater-values was wrong
            print "[WebComponents.Timer] editTimer exception: %s" % (e)
            return (False, "Could not add timer '%s'!" % name)
コード例 #31
0
ファイル: timers.py プロジェクト: MOA-2011/e2openplugins
def tvbrowser(session, request):

	if "name" in request.args:
		name = request.args['name'][0]
	else:
		name = "Unknown"

	if "description" in request.args:
		description = "".join(request.args['description'][0])
		description = description.replace("\n", " ")
	else:
		description = ""

	disabled = False
	if "disabled" in request.args:
		if (request.args['disabled'][0] == "1"):
			disabled = True

	justplay = False 
	if 'justplay' in request.args:
		if (request.args['justplay'][0] == "1"):
			justplay = True

	afterevent = 3
	if 'afterevent' in request.args:
		if (request.args['afterevent'][0] == "0") or (request.args['afterevent'][0] == "1") or (request.args['afterevent'][0] == "2"):
			afterevent = int(request.args['afterevent'][0])


	location = preferredTimerPath()
	if "dirname" in request.args:
		location = request.args['dirname'][0]

	if not location:
		location = "/hdd/movie/"

	begin = int(mktime((int(request.args['syear'][0]), int(request.args['smonth'][0]), int(request.args['sday'][0]), int(request.args['shour'][0]), int(request.args['smin'][0]), 0, 0, 0, -1)))
	end = int(mktime((int(request.args['syear'][0]), int(request.args['smonth'][0]), int(request.args['sday'][0]), int(request.args['ehour'][0]), int(request.args['emin'][0]), 0, 0, 0, -1)))	

	if end < begin:
		end += 86400

	repeated = int(request.args['repeated'][0])
	if repeated == 0:
		for element in ("mo", "tu", "we", "th", "fr", "sa", "su", "ms", "mf"):
			if element in request.args:
				number = request.args[element][0] or 0
				del request.args[element][0]
				repeated = repeated + int(number)
		if repeated > 127:
			repeated = 127
	repeated = repeated

	if request.args['sRef'][0] is None:
		return {
		 "result": False, 
		 "message": "Missing requesteter: sRef" 
		}
	else:
		takeApart = unquote(request.args['sRef'][0]).decode('utf-8', 'ignore').encode('utf-8').split('|')
		sRef = takeApart[1]

	tags = []
	if 'tags' in request.args and request.args['tags'][0]:
		tags = unescape(request.args['tags'][0]).split(' ')

	if request.args['command'][0] == "add":
		del request.args['command'][0]
		return addTimer(session, sRef, begin, end, name, description, disabled, justplay, afterevent, location , tags , repeated)
	elif request.args['command'][0] == "del":
		del request.args['command'][0]
		return removeTimer(session, sRef, begin, end)
	elif request.args['command'][0] == "change":
		del request.args['command'][0]
		return editTimer(session, sRef, begin, end, name, description, disabled, justplay, afterevent, location, tags, repeated, begin, end, serviceref)
	else:
		return {
		 "result": False,
		 "message": "Unknown command: '%s'" % request.args['command'][0]
		}
コード例 #32
0
def tvbrowser(session, request):
    if "name" in request.args:
        name = request.args['name'][0]
    else:
        name = "Unknown"

    if "description" in request.args:
        description = "".join(request.args['description'][0])
        description = description.replace("\n", " ")
    else:
        description = ""

    disabled = False
    if "disabled" in request.args:
        if (request.args['disabled'][0] == "1"):
            disabled = True

    justplay = False
    if 'justplay' in request.args:
        if (request.args['justplay'][0] == "1"):
            justplay = True

    afterevent = 3
    if 'afterevent' in request.args:
        if (request.args['afterevent'][0]
                == "0") or (request.args['afterevent'][0]
                            == "1") or (request.args['afterevent'][0] == "2"):
            afterevent = int(request.args['afterevent'][0])

    location = preferredTimerPath()
    if "dirname" in request.args:
        location = request.args['dirname'][0]

    if not location:
        location = "/hdd/movie/"

    begin = int(
        mktime((int(request.args['syear'][0]), int(request.args['smonth'][0]),
                int(request.args['sday'][0]), int(request.args['shour'][0]),
                int(request.args['smin'][0]), 0, 0, 0, -1)))
    end = int(
        mktime((int(request.args['syear'][0]), int(request.args['smonth'][0]),
                int(request.args['sday'][0]), int(request.args['ehour'][0]),
                int(request.args['emin'][0]), 0, 0, 0, -1)))

    if end < begin:
        end += 86400

    repeated = int(request.args['repeated'][0])
    if repeated == 0:
        for element in ("mo", "tu", "we", "th", "fr", "sa", "su", "ms", "mf"):
            if element in request.args:
                number = request.args[element][0] or 0
                del request.args[element][0]
                repeated = repeated + int(number)
        if repeated > 127:
            repeated = 127
    repeated = repeated

    if request.args['sRef'][0] is None:
        return {"result": False, "message": _("Missing requesteter: sRef")}
    else:
        takeApart = unquote(request.args['sRef'][0]).decode(
            'utf-8', 'ignore').encode('utf-8').split('|')
        sRef = takeApart[1]

    tags = []
    if 'tags' in request.args and request.args['tags'][0]:
        tags = unquote(request.args['tags'][0]).split(' ')

    if request.args['command'][0] == "add":
        del request.args['command'][0]
        return addTimer(session, sRef, begin, end, name, description, disabled,
                        justplay, afterevent, location, tags, repeated)
    elif request.args['command'][0] == "del":
        del request.args['command'][0]
        return removeTimer(session, sRef, begin, end, eit=None)
    elif request.args['command'][0] == "change":
        del request.args['command'][0]
        return editTimer(session, sRef, begin, end, name, description,
                         disabled, justplay, afterevent, location, tags,
                         repeated, begin, end, serviceref)
    else:
        return {
            "result": False,
            "message": _("Unknown command: '%s'") % request.args['command'][0]
        }
コード例 #33
0
	def record(self):
		if self.event and self.service:
			event = self.event
			ref = self.service
			if event is None:
				return
			eventid = event.getEventId()
			eref = eServiceReference(str(ref))
			refstr = eref.toString()
			for timer in self.session.nav.RecordTimer.timer_list:
				if timer.eit == eventid and timer.service_ref.ref.toString() == refstr:
					cb_func = lambda ret : not ret or self.removeTimer(timer)
					self.session.openWithCallback(cb_func, MessageBox, _("Do you really want to delete %s?") % event.getEventName())
					break
			else:
				#newEntry = RecordTimerEntry(ServiceReference(ref), checkOldTimers = True, dirname = preferredTimerPath(), *parseEvent(self.event))
				begin, end, name, description, eit = parseEvent(self.event)
				
				from SeriesPlugin import refactorTitle, refactorDescription
				if self.data:
					name = refactorTitle(name, self.data)
					description = refactorDescription(description, self.data)
				
				#newEntry = RecordTimerEntry(ServiceReference(refstr), begin, end, name, description, eit, dirname = preferredTimerPath())
				newEntry = RecordTimerEntry(ServiceReference(str(ref)), begin, end, name, description, eit, dirname = preferredTimerPath())
				#newEntry = RecordTimerEntry(refstr, begin, end, name, description, eit, dirname = preferredTimerPath())
				self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
コード例 #34
0
    def timerAdd(self):
        cur = self["list"].getCurrent()
        event = cur[0]
        if event is None:
            return
        serviceref = cur[1]
        isRecordEvent = isRepeat = firstNextRepeatEvent = isRunning = False
        eventid = event.getEventId()
        begin = event.getBeginTime()
        end = begin + event.getDuration()
        refstr = ':'.join(serviceref.ref.toString().split(':')[:11])
        for timer in self.session.nav.RecordTimer.getAllTimersList():
            needed_ref = ':'.join(
                timer.service_ref.ref.toString().split(':')[:11]) == refstr
            if needed_ref and timer.eit == eventid and (
                    begin < timer.begin <= end
                    or timer.begin <= begin <= timer.end):
                isRecordEvent = True
                break
            elif needed_ref and timer.repeated and self.session.nav.RecordTimer.isInRepeatTimer(
                    timer, event):
                isRecordEvent = True
                break
        if isRecordEvent:
            isRepeat = timer.repeated
            prev_state = timer.state
            isRunning = prev_state in (1, 2)
            title_text = isRepeat and _(
                "Attention, this is repeated timer!\n") or ""
            firstNextRepeatEvent = isRepeat and (
                begin < timer.begin <= end
                or timer.begin <= begin <= timer.end) and not timer.justplay
            menu = [(_("Delete timer"), "delete"), (_("Edit timer"), "edit")]
            buttons = ["red", "green"]
            if not isRunning:
                if firstNextRepeatEvent and timer.isFindRunningEvent(
                ) and not timer.isFindNextEvent():
                    menu.append((_("Options disable timer"), "disablerepeat"))
                else:
                    menu.append((_("Disable timer"), "disable"))
                buttons.append("yellow")
            elif prev_state == 2 and firstNextRepeatEvent:
                menu.append(
                    (_("Options disable timer"), "disablerepeatrunning"))
                buttons.append("yellow")
            menu.append((_("Timer Overview"), "timereditlist"))

            def timerAction(choice):
                if choice is not None:
                    if choice[1] == "delete":
                        self.removeTimer(timer)
                    elif choice[1] == "edit":
                        self.session.openWithCallback(self.finishedEdit,
                                                      TimerEntry, timer)
                    elif choice[1] == "disable":
                        self.disableTimer(timer, prev_state)
                    elif choice[1] == "timereditlist":
                        self.session.open(TimerEditList)
                    elif choice[1] == "disablerepeatrunning":
                        self.disableTimer(timer,
                                          prev_state,
                                          repeat=True,
                                          record=True)
                    elif choice[1] == "disablerepeat":
                        self.disableTimer(timer, prev_state, repeat=True)

            self.session.openWithCallback(
                timerAction,
                ChoiceBox,
                title=title_text +
                _("Select action for timer '%s'.") % timer.name,
                list=menu,
                keys=buttons)
        else:
            newEntry = RecordTimerEntry(serviceref,
                                        checkOldTimers=True,
                                        dirname=preferredTimerPath(),
                                        *parseEvent(event))
            newEntry.justplay = config.recording.timer_default_type.value == "zap"
            newEntry.always_zap = config.recording.timer_default_type.value == "zap+record"
            self.session.openWithCallback(self.finishedAdd, TimerEntry,
                                          newEntry)