Example #1
0
def addTimerByEventId(session, eventid, serviceref, justplay, dirname, tags):
	serviceref = unquote(serviceref)
	event = eEPGCache.getInstance().lookupEventId(eServiceReference(serviceref), eventid)
	if event is None:
		return {
			"result": False,
			"message": "EventId not found"
		}
	
	(begin, end, name, description, eit) = parseEvent(event)
	return addTimer(
		session,
		serviceref,
		begin,
		end,
		name,
		description,
		False,
		justplay,
		AFTEREVENT.AUTO,
		dirname,
		tags,
		False,
		None,
		eit
	)
def addTimerByEventId(session, eventid, serviceref, justplay, dirname, tags, vpsinfo, always_zap):
	event = eEPGCache.getInstance().lookupEventId(eServiceReference(serviceref), eventid)
	if event is None:
		return {
			"result": False,
			"message": _("EventId not found")
		}

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

	if justplay:
		begin += config.recording.margin_before.value * 60
		end = begin + 1

	return addTimer(
		session,
		serviceref,
		begin,
		end,
		name,
		description,
		False,
		justplay,
		AFTEREVENT.AUTO,
		dirname,
		tags,
		False,
		vpsinfo,
		None,
		eit,
		always_zap
	)
Example #3
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)
	def timerAdd(self):
		cur = self["list"].getCurrent()
		event = cur[0]
		if event is None:
			return
		eventid = event.getEventId()
		serviceref = cur[1]
		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"]
				if not timer.isRunning():
					menu.append((_("Disable timer"), "disable"))
					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.open(TimerEntry, timer)
						elif choice[1] == "disable":
							self.disableTimer(timer)
						elif choice[1] == "timereditlist":
							self.session.open(TimerEditList)
				self.session.openWithCallback(timerAction, ChoiceBox, title=_("Select action for timer %s:") % event.getEventName(), list=menu, keys=buttons)
				break
		else:
			newEntry = RecordTimerEntry(serviceref, checkOldTimers = True, *parseEvent(event))
			self.session.openWithCallback(self.finishedTimerAdd, TimerEntry, newEntry)
	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)
def getStatusInfo(self):
	statusinfo = {}

	# Get Current Volume and Mute Status
	vcontrol = eDVBVolumecontrol.getInstance()

	statusinfo['volume'] = vcontrol.getVolume()
	statusinfo['muted'] = vcontrol.isMuted()

	# Get currently running Service
	event = None
	serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
	if serviceref is not None:
		serviceHandler = eServiceCenter.getInstance()
		serviceHandlerInfo = serviceHandler.info(serviceref)

		service = self.session.nav.getCurrentService()
		serviceinfo = service and service.info()
		event = serviceinfo and serviceinfo.getEvent(0)
	else:
		event = None

	if event is not None:
		curEvent = parseEvent(event)
		statusinfo['currservice_name'] = curEvent[2].replace('\xc2\x86', '').replace('\xc2\x87', '')
		statusinfo['currservice_serviceref'] = serviceref.toString()
		statusinfo['currservice_begin'] = strftime("%H:%M", (localtime(int(curEvent[0])+(config.recording.margin_before.value*60))))
		statusinfo['currservice_end'] = strftime("%H:%M", (localtime(int(curEvent[1])-(config.recording.margin_after.value*60))))
		statusinfo['currservice_description'] = curEvent[3]
		if len(curEvent[3].decode('utf-8')) > 220:
			statusinfo['currservice_description'] = curEvent[3].decode('utf-8')[0:220].encode('utf-8') + "..."
		statusinfo['currservice_station'] = serviceHandlerInfo.getName(serviceref).replace('\xc2\x86', '').replace('\xc2\x87', '')
	else:
		statusinfo['currservice_name'] = "N/A"
		statusinfo['currservice_begin'] = ""
		statusinfo['currservice_end'] = ""
		statusinfo['currservice_description'] = ""
		if serviceref:
			statusinfo['currservice_serviceref'] = serviceref.toString()
			statusinfo['currservice_station'] = serviceHandlerInfo.getName(serviceref).replace('\xc2\x86', '').replace('\xc2\x87', '')

	# Get Standby State
	from Screens.Standby import inStandby
	if inStandby == None:
		statusinfo['inStandby'] = "false"
	else:
		statusinfo['inStandby'] = "true"

	# Get recording state
	recs = NavigationInstance.instance.getRecordings()
	if recs:
		statusinfo['isRecording'] = "true"
	else:
		statusinfo['isRecording'] = "false"

	return statusinfo
Example #7
0
def getStatusInfo(self):
    statusinfo = {}

    # Get Current Volume and Mute Status
    vcontrol = eDVBVolumecontrol.getInstance()

    statusinfo["volume"] = vcontrol.getVolume()
    statusinfo["muted"] = vcontrol.isMuted()

    # Get currently running Service
    event = None
    serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
    if serviceref is not None:
        serviceHandler = eServiceCenter.getInstance()
        serviceHandlerInfo = serviceHandler.info(serviceref)

        service = self.session.nav.getCurrentService()
        serviceinfo = service and service.info()
        event = serviceinfo and serviceinfo.getEvent(0)
    else:
        event = None

    if event is not None:
        curEvent = parseEvent(event)
        statusinfo["currservice_name"] = curEvent[2].replace("\xc2\x86", "").replace("\xc2\x87", "")
        statusinfo["currservice_serviceref"] = serviceref.toString()
        statusinfo["currservice_begin"] = strftime(
            "%H:%M", (localtime(int(curEvent[0]) + (config.recording.margin_before.value * 60)))
        )
        statusinfo["currservice_end"] = strftime(
            "%H:%M", (localtime(int(curEvent[1]) - (config.recording.margin_after.value * 60)))
        )
        statusinfo["currservice_description"] = curEvent[3]
        if len(curEvent[3]) > 220:
            statusinfo["currservice_description"] = curEvent[3][0:220] + "..."
        statusinfo["currservice_station"] = (
            serviceHandlerInfo.getName(serviceref).replace("\xc2\x86", "").replace("\xc2\x87", "")
        )
    else:
        statusinfo["currservice_name"] = "N/A"
        statusinfo["currservice_begin"] = ""
        statusinfo["currservice_end"] = ""
        statusinfo["currservice_description"] = ""
        if serviceref:
            statusinfo["currservice_serviceref"] = serviceref.toString()
            statusinfo["currservice_station"] = (
                serviceHandlerInfo.getName(serviceref).replace("\xc2\x86", "").replace("\xc2\x87", "")
            )

            # Get Standby State
    if inStandby == None:
        statusinfo["inStandby"] = "false"
    else:
        statusinfo["inStandby"] = "true"

    return statusinfo
Example #8
0
	def timerAdd(self):
		cur = self["list"].getCurrent()
		event = cur[0]
		serviceref = cur[1]
		if event is None:
			return
		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.open(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, *parseEvent(event))
			self.session.openWithCallback(self.finishedTimerAdd, TimerEntry, newEntry)
Example #9
0
	def updateStatus(self):
		print "[TVCharts] Status Update ..."
		self.DBStatusTimer.stop()

		if not config.plugins.tvcharts.enabled.value or Screens.Standby.inStandby:
			return

		# Get Channelname
		sref = self.session.nav.getCurrentlyPlayingServiceReference()
		if sref is not None:
			ref = eServiceReference(sref.toString())
			ref.setName("")
			serviceHandler = eServiceCenter.getInstance()
			info = serviceHandler.info(ref)
			channel_name = info and info.getName(ref).replace('\xc2\x86', '').replace('\xc2\x87', '').decode("utf-8", "ignore").encode("utf-8") or ""
			self.serviceref = ref.toString()
		else:
			channel_name = ""
			self.serviceref = ""

		# Get Event Info
		service = self.session.nav.getCurrentService()
		info = service and service.info()
		event = info and info.getEvent(0)
		event_name = event and event.getEventName() or ""
		event_description = ""
		event_begin = 0

		if event is not None:
			curEvent = parseEvent(event)
			event_begin = int(curEvent[0])+(config.recording.margin_before.value*60)
			event_description = event.getExtendedDescription()

		# Get Box Info
		self.BoxID = iNetwork.getAdapterAttribute("eth0", "mac")
		self.DeviceName = HardwareInfo().get_device_name()
		self.EnigmaVersion = about.getEnigmaVersionString()
		self.ImageVersion = about.getVersionString()

		# Get TimerList
		self.timerlist = ""
		if config.plugins.tvcharts.submittimers.value and self.LastTimerlistUpdate <= (time()-1800):
			self.LastTimerlistUpdate = time()
			try:
				for timer in self.recordtimer.timer_list:
					if timer.disabled == 0 and timer.justplay == 0:
						self.timerlist += "%s|%s|%s|%s|%s|%s\n" % (timer.eit,str(int(timer.begin)+(config.recording.margin_before.value*60)), str(int(timer.end)-(config.recording.margin_after.value*60)), str(timer.service_ref), timer.name, timer.service_ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '').decode("utf-8", "ignore").encode("utf-8"))
			except Exception:
				print "[TVCharts] Error loading timers!"

		# Status Update
		getPage(url='http://www.dreambox-plugins.de/feeds/TVCharts/status.php', method='POST', headers={'Content-Type':'application/x-www-form-urlencoded'}, postdata=urlencode({'boxid' : self.BoxID, 'devicename' : self.DeviceName, 'imageversion' : self.ImageVersion, 'enigmaversion' : self.EnigmaVersion, 'lastchannel' : channel_name, 'lastevent' : event_name, 'eventdescr' : event_description, 'lastbegin' : event_begin, 'lastserviceref' : self.serviceref, 'timerlist' : self.timerlist})).addErrback(self.updateError)

		# Restart Timer
		self.DBStatusTimer.start(900000, True)
Example #10
0
def recordNow(session, infinite):
	rt = session.nav.RecordTimer
	serviceref = session.nav.getCurrentlyPlayingServiceReference().toString()

	try:
		event = session.nav.getCurrentService().info().getEvent(0)
	except Exception:
		event = None
		
	if not event and not infinite:
		return {
			"result": False,
			"message": "No event found! Not recording!"
		}
		
	if event:
		(begin, end, name, description, eit) = parseEvent(event)
		begin = time()
		msg = "Instant record for current Event started"
	else:
		name = "instant record"
		description = ""
		eit = 0
		
	if infinite:
		begin = time()
		end = begin + 3600 * 10
		msg = "Infinite Instant recording started"
		
	timer = RecordTimerEntry(
		ServiceReference(serviceref),
		begin,
		end,
		name,
		description, 
		eit,
		False,
		False,
		0,
		dirname=preferredInstantRecordPath()
	)
	timer.dontSave = True
	
	if rt.record(timer):
		return {
			"result": False,
			"message": "Timer conflict detected! Not recording!"
		}
		
	return {
		"result": True,
		"message": msg
	}
	
Example #11
0
	def recordNow(self, param):
		if not config.misc.recording_allowed.value:
			return (False, _("Recording is currently disabled!"))

		limitEvent = True
		if param == "undefinitely" or param == "infinite":
			ret = (True, "Infinite Instant recording started")
			limitEvent = False
		else:
			ret = ( True, "Instant record for current Event started" )

		serviceref = ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference().toString())

		event = None

		try:
			service = self.session.nav.getCurrentService()
			event = service.info().getEvent(0)
		except Exception:
			print "[Webcomponents.Timer] recordNow Exception!"

		begin = time()
		end = begin + 3600 * 10
		name = "instant record"
		description = ""
		eventid = 0

		if event is not None:
			curEvent = parseEvent(event)
			name = curEvent[2]
			description = curEvent[3]
			eventid = curEvent[4]
			if limitEvent:
				end = curEvent[1]
		else:
			if limitEvent:
				ret = ( False, "No event found! Not recording!" )

		if ret[0]:
			location = preferredInstantRecordPath()
			timer = RecordTimerEntry(serviceref, begin, end, name, description, eventid, False, False, 0, dirname=location)
			timer.dontSave = True
			recRet = self.recordtimer.record(timer)
			if recRet is not None:
				# a conflict is rather unlikely, but this can also indicate a non-recordable service
				ret = (False, "Timer conflict detected! Not recording!" )

		return ret
Example #12
0
	def timerAdd(self):
		cur = self["list"].getCurrent()
		event = cur[0]
		if event is None:
			return
		eventid = event.getEventId()
		serviceref = cur[1]
		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, *parseEvent(event))
			self.session.openWithCallback(self.finishedTimerAdd, TimerEntry, newEntry)
Example #13
0
	def program_seek_vps_multiple_closed(self, retval):
		self.program_seek_vps_multiple_started = -1
		
		self.found_vps_multiple = sorted(self.found_vps_multiple)
		
		for evt_begin, evt_id, evt in self.found_vps_multiple:
			# eigenen Timer überprüfen, wenn Zeiten nicht überschrieben werden dürfen
			if not self.timer.vpsplugin_overwrite and evt_begin <= self.timer.end:
				self.next_events.append(evt_id)
				self.timer.log(0, "[VPS] add event_id "+ str(evt_id))
			
			else:
				canbeadded = True
				evt_begin += 60
				evt_end = evt.getBeginTime() + evt.getDuration() - 60
				now = time()
				
				for checktimer in self.session.nav.RecordTimer.timer_list:
					if checktimer == self.timer:
						continue
					if (checktimer.begin - now) > 3600*24:
						break
					if checktimer.service_ref.ref.toCompareString() == self.timer.service_ref.ref.toCompareString() or checktimer.service_ref.ref.toCompareString() == self.rec_ref.toCompareString():	
						if checktimer.begin <= evt_begin and checktimer.end >= evt_end:
							if not checktimer.vpsplugin_enabled or not checktimer.vpsplugin_overwrite:
								canbeadded = False
							
							# manuell angelegter Timer mit VPS
							if checktimer.vpsplugin_enabled and checktimer.name == "" and checktimer.vpsplugin_time is not None:
								checktimer.eit = evt_id
								checktimer.name = evt.getEventName()
								checktimer.description = evt.getShortDescription()
								checktimer.vpsplugin_time = None
								checktimer.log(0, "[VPS] changed timer (found same PDC-Time as in other VPS-recording)")
								canbeadded = False
								break

				
				if canbeadded:
					newevent_data = parseEvent(evt)
					newEntry = RecordTimerEntry(ServiceReference(self.rec_ref), *newevent_data)
					newEntry.vpsplugin_enabled = True
					newEntry.vpsplugin_overwrite = True
					newEntry.log(0, "[VPS] added this timer (found same PDC-Time as in other VPS-recording)")
					
					# Wenn kein Timer-Konflikt auftritt, wird der Timer angelegt.
					NavigationInstance.instance.RecordTimer.record(newEntry)
Example #14
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)

		self.addTimer(RecordTimerEntry(serviceref, checkOldTimers = True, dirname = preferredTimerPath(), *data))
Example #15
0
    def recordNow(self, param):
        limitEvent = True
        if param == "undefinitely" or param == "infinite":
            ret = (True, "Infinite Instant recording started")
            limitEvent = False
        else:
            ret = (True, "Instant record for current Event started")

        serviceref = ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference().toString())

        event = None

        try:
            service = self.session.nav.getCurrentService()
            event = service.info().getEvent(0)
        except Exception:
            print "[Webcomponents.Timer] recordNow Exception!"

        begin = time()
        end = begin + 3600 * 10
        name = "instant record"
        description = ""
        eventid = 0

        if event is not None:
            curEvent = parseEvent(event)
            name = curEvent[2]
            description = curEvent[3]
            eventid = curEvent[4]
            if limitEvent:
                end = curEvent[1]
        else:
            if limitEvent:
                ret = (False, "No event found! Not recording!")

        if ret[0]:
            location = config.movielist.last_videodir.value
            timer = RecordTimerEntry(
                serviceref, begin, end, name, description, eventid, False, False, 0, dirname=location
            )
            timer.dontSave = True
            self.recordtimer.record(timer)

        return ret
Example #16
0
	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))
Example #17
0
    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

        location = config.movielist.last_timer_videodir.value
        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.NONE,
            dirname=location,
            tags=tags,
        )
        self.recordtimer.record(timer)
        return (True, "Timer '%s' added" % (timer.name))
Example #18
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
Example #19
0
	def AddConfirmedTimer(self, answer):
		cur = self["epg_list"].getCurrent()
		event = cur[0]
		serviceref = cur[1]
		if event is None:
			return
		eventid = event.getEventId()
		refstr = serviceref.ref.toString()
		answer = answer and answer[1]
		if answer == "AT":
			addAutotimerFromEvent(self.session,evt=event,service=serviceref)
		elif answer == "NT":
			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, *parseEvent(event))
				self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
		elif answer == "ATV":
			AutoTimerView(self.session)
 def buildlist(self):
   
   #current_channel = EPGNow.CurrentService(self.session).command()
   serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
   service = self.session.nav.getCurrentService()
   
   info = service.info()
   
   default = {
     'servicename': info.getName(),
     'eventname': '',
     'comment': '',
   }
   
   epg = eEPGCache.getInstance()
   event = epg.lookupEventTime(serviceref, -1, 0)  
       
   if event is not None:
     curEvent = parseEvent(event)
     default['eventname'] = curEvent[2]
     #description = curEvent[3]
     #eventid = curEvent[4]  
   
   fields = [
      {'name': 'servicename', 'field': ConfigText(fixed_size = False) , 'text': _('Channellname'), 'value': default['servicename']},
      {'name': 'eventname', 'field': ConfigText(fixed_size = False) , 'text': _('Event-Name'), 'value': default['eventname']},
      {'name': 'comment', 'field': ConfigText(fixed_size = False) , 'text': _('Comment'), 'value': default['comment']},
      #{'name': 'grabimage', 'field': ConfigYesNo() , 'text': 'Attach Screenshot', 'value': True},       
     ]
   
   list = []
   
   for field in fields:
     field['field'].setValue(field['value'])
     list.append(getConfigListEntry(_(field['text']), field['field'], field['name']))
     
   return list
Example #21
0
File: e2info.py Project: HDMU/Skins
def getStatusInfo2(session):
    statusinfo = {}
    vcontrol = eDVBVolumecontrol.getInstance()
    statusinfo['volume'] = vcontrol.getVolume()
    statusinfo['muted'] = vcontrol.isMuted()
    event = None
    serviceref = session.nav.getCurrentlyPlayingServiceReference()
    if serviceref is not None:
        serviceHandler = eServiceCenter.getInstance()
        serviceHandlerInfo = serviceHandler.info(serviceref)
        service = session.nav.getCurrentService()
        serviceinfo = service and service.info()
        event = serviceinfo and serviceinfo.getEvent(0)
    else:
        event = None
    if event is not None:
        curEvent = parseEvent(event)
        statusinfo['currservice_name'] = curEvent[2].replace('\xc2\x86', '').replace('\xc2\x87', '')
        statusinfo['currservice_serviceref'] = serviceref.toString()
        statusinfo['currservice_begin'] = strftime('%H:%M', localtime(int(curEvent[0]) + config.recording.margin_before.value * 60))
        statusinfo['currservice_end'] = strftime('%H:%M', localtime(int(curEvent[1]) - config.recording.margin_after.value * 60))
        statusinfo['currservice_description'] = curEvent[3]
        statusinfo['currservice_station'] = serviceHandlerInfo.getName(serviceref).replace('\xc2\x86', '').replace('\xc2\x87', '')
    else:
        statusinfo['currservice_name'] = 'N/A'
        statusinfo['currservice_begin'] = ''
        statusinfo['currservice_end'] = ''
        statusinfo['currservice_description'] = ''
        if serviceref:
            statusinfo['currservice_serviceref'] = serviceref.toString()
            statusinfo['currservice_station'] = serviceHandlerInfo.getName(serviceref).replace('\xc2\x86', '').replace('\xc2\x87', '')
    if inStandby == None:
        statusinfo['inStandby'] = 'false'
    else:
        statusinfo['inStandby'] = 'true'
    return statusinfo
Example #22
0
	def check_and_add_event(self, neweventid):
		if not config.plugins.vps.allow_seeking_multiple_pdc.value:
			return

		epgcache = eEPGCache.getInstance()
		evt = epgcache.lookupEventId(self.rec_ref, neweventid)

		if evt:
			evt_begin = evt.getBeginTime() + 60
			evt_end = evt.getBeginTime() + evt.getDuration() - 60

			if evt_begin < self.timer.begin:
				return

			for checktimer in self.session.nav.RecordTimer.timer_list:
				if checktimer == self.timer:
					continue
				if (checktimer.begin - evt_begin) > 3600*2:
					break

				compareString = checktimer.service_ref.ref.toCompareString()
				if compareString == self.timer.service_ref.ref.toCompareString() or compareString == self.rec_ref.toCompareString():
					if checktimer.eit == neweventid:
						return

					if checktimer.begin <= evt_begin and checktimer.end >= evt_end:
						if checktimer.vpsplugin_enabled is None or not checktimer.vpsplugin_enabled:
							return

						# manuell angelegter Timer mit VPS
						if checktimer.name == "" and checktimer.vpsplugin_time is not None:
							checktimer.eit = neweventid
							checktimer.name = evt.getEventName()
							checktimer.description = evt.getShortDescription()
							checktimer.vpsplugin_time = None
							checktimer.log(0, "[VPS] changed timer (found same PDC-Time as in other VPS-recording)")
							return

			# eigenen Timer überprüfen, wenn Zeiten nicht überschrieben werden dürfen
			if not self.timer.vpsplugin_overwrite and evt_begin <= self.timer.end:
				check_already_existing = [x for (x, y) in self.next_events if y == neweventid]
				if len(check_already_existing) > 0:
					start = check_already_existing.pop()
					if start == evt_begin:
						return
					else:
						self.next_events.remove( (start, neweventid) )
						self.timer.log(0, "[VPS] delete event_id "+ str(neweventid) +" because of delay "+ str(evt_begin - start))

				self.next_events.append( (evt_begin, neweventid) )
				self.next_events = sorted(self.next_events)
				self.timer.log(0, "[VPS] add event_id "+ str(neweventid))

			else:
				newevent_data = parseEvent(evt)
				newEntry = RecordTimerEntry(ServiceReference(self.rec_ref), *newevent_data)
				newEntry.vpsplugin_enabled = True
				newEntry.vpsplugin_overwrite = True
				newEntry.dirname = self.timer.dirname
				newEntry.log(0, "[VPS] added this timer (found same PDC-Time as in other VPS-recording)")

				# Wenn kein Timer-Konflikt auftritt, wird der Timer angelegt.
				res = NavigationInstance.instance.RecordTimer.record(newEntry)
				self.timer.log(0, "[VPS] added another timer, res "+ str(res))
Example #23
0
	def timerAdd(self):
		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:
				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))
			self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
Example #24
0
def getStatusInfo(self):
    # Get Current Volume and Mute Status
    vcontrol = eDVBVolumecontrol.getInstance()
    statusinfo = {
        'volume': vcontrol.getVolume(),
        'muted': vcontrol.isMuted(),
        'transcoding': getTranscodingSupport(),
        'currservice_filename': "",
        'currservice_id': -1,
        'state': {
            'standby': False,
            'recording': False
        }
    }

    # Get currently running Service
    event = None
    serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
    serviceref_string = None
    currservice_station = None

    if serviceref is not None:
        serviceHandler = eServiceCenter.getInstance()
        serviceHandlerInfo = serviceHandler.info(serviceref)

        service = self.session.nav.getCurrentService()
        serviceinfo = service and service.info()
        event = serviceinfo and serviceinfo.getEvent(0)
        serviceref_string = serviceref.toString()
        currservice_station = mangle_epg_text(
            serviceHandlerInfo.getName(serviceref))
    else:
        event = None
        serviceHandlerInfo = None

    if event is not None:
        # (begin, end, name, description, eit)
        curEvent = parseEvent(event)
        margin_before = config.recording.margin_before.value
        margin_after = config.recording.margin_after.value
        begin_timestamp = int(curEvent[0]) + (margin_before * 60)
        end_timestamp = int(curEvent[1]) - (margin_after * 60)
        statusinfo['currservice_name'] = mangle_epg_text(curEvent[2])
        statusinfo['currservice_serviceref'] = serviceref_string
        statusinfo['currservice_begin'] = time.strftime(
            "%H:%M", (time.localtime(begin_timestamp)))
        statusinfo['currservice_begin_timestamp'] = begin_timestamp
        statusinfo['currservice_end'] = time.strftime(
            "%H:%M", (time.localtime(end_timestamp)))
        statusinfo['currservice_end_timestamp'] = end_timestamp
        statusinfo['currservice_description'] = curEvent[3]
        statusinfo['currservice_station'] = currservice_station

        if statusinfo['currservice_serviceref'].startswith('1:0:0'):
            fn = '/' + '/'.join(serviceref_string.split("/")[1:])
            statusinfo['currservice_filename'] = fn

        statusinfo['currservice_fulldescription'] = mangle_epg_text(
            event.getExtendedDescription())
        statusinfo['currservice_id'] = curEvent[4]
    else:
        statusinfo['currservice_name'] = "N/A"
        statusinfo['currservice_begin'] = ""
        statusinfo['currservice_end'] = ""
        statusinfo['currservice_description'] = ""
        statusinfo['currservice_fulldescription'] = "N/A"

    if serviceref:
        statusinfo['currservice_serviceref'] = serviceref_string
        if serviceHandlerInfo:
            statusinfo['currservice_station'] = currservice_station
        elif serviceref_string.find("http") != -1:
            statusinfo['currservice_station'] = serviceref_string.replace(
                '%3a', ':')[serviceref_string.find("http"):]
        else:
            statusinfo['currservice_station'] = "N/A"

    # Get Standby State
    from Screens.Standby import inStandby
    statusinfo['state']['standby'] = inStandby is not None
    if statusinfo['state']['standby'] is False:
        statusinfo['inStandby'] = "false"
    else:
        statusinfo['inStandby'] = "true"

    # Get recording state
    recs = NavigationInstance.instance.getRecordings()
    statusinfo['state']['recording'] = len(recs) > 0
    if recs:
        statusinfo['Recording_list'] = "\n"
        for timer in NavigationInstance.instance.RecordTimer.timer_list:
            if timer.state == TimerEntry.StateRunning:
                if not timer.justplay:
                    s_name = timer.service_ref.getServiceName()
                    label = mangle_epg_text(s_name) + ": " + timer.name + "\n"
                    statusinfo['Recording_list'] += label

    if statusinfo['state']['recording']:
        statusinfo['isRecording'] = "true"
    else:
        statusinfo['isRecording'] = "false"

    return statusinfo
Example #25
0
    def updateStatus(self):
        print "[TVCharts] Status Update ..."
        self.DBStatusTimer.stop()

        if not config.plugins.tvcharts.enabled.value or Screens.Standby.inStandby:
            return

        # Get Channelname
        sref = self.session.nav.getCurrentlyPlayingServiceReference()
        if sref is not None:
            ref = eServiceReference(sref.toString())
            ref.setName("")
            serviceHandler = eServiceCenter.getInstance()
            info = serviceHandler.info(ref)
            channel_name = info and info.getName(ref).replace(
                '\xc2\x86', '').replace('\xc2\x87', '').decode(
                    "utf-8", "ignore").encode("utf-8") or ""
            self.serviceref = ref.toString()
        else:
            channel_name = ""
            self.serviceref = ""

        # Get Event Info
        service = self.session.nav.getCurrentService()
        info = service and service.info()
        event = info and info.getEvent(0)
        event_name = event and event.getEventName() or ""
        event_description = ""
        event_begin = 0

        if event is not None:
            curEvent = parseEvent(event)
            event_begin = int(
                curEvent[0]) + (config.recording.margin_before.getValue() * 60)
            event_description = event.getExtendedDescription()

        # Get Box Info
        self.BoxID = iNetwork.getAdapterAttribute("eth0", "mac")
        self.DeviceName = HardwareInfo().get_device_name()
        try:
            from enigma import getEnigmaVersionString
            from boxbranding import getImageVersion, getImageBuild
            self.EnigmaVersion = getEnigmaVersionString()
            self.ImageVersion = getImageVersion() + '.' + getImageBuild()
        except:
            self.EnigmaVersion = about.getEnigmaVersionString()
            self.ImageVersion = about.getVersionString()

        # Get TimerList
        self.timerlist = ""
        if config.plugins.tvcharts.submittimers.value and self.LastTimerlistUpdate <= (
                time() - 1800):
            self.LastTimerlistUpdate = time()
            try:
                for timer in self.recordtimer.timer_list:
                    if timer.disabled == 0 and timer.justplay == 0:
                        self.timerlist += "%s|%s|%s|%s|%s|%s|%s\n" % (
                            timer.eit,
                            str(
                                int(timer.begin) +
                                (config.recording.margin_before.getValue() *
                                 60)),
                            str(
                                int(timer.end) -
                                (config.recording.margin_after.getValue() *
                                 60)), str(timer.service_ref), timer.name,
                            timer.service_ref.getServiceName().replace(
                                '\xc2\x86', '').replace('\xc2\x87', '').decode(
                                    "utf-8",
                                    "ignore").encode("utf-8"), timer.repeated)
            except Exception:
                print "[TVCharts] Error loading timers!"

        # Get Pluginlist
        if config.plugins.tvcharts.submitplugins.value and self.pluginlist == "":
            try:
                os_system(
                    "opkg list_installed | grep enigma2-plugin- > /tmp/plugins.txt"
                )
                for plugin in open('/tmp/plugins.txt', 'r'):
                    self.pluginlist += plugin[0:plugin.find(' - ')] + "\n"
                os_system("rm -f /tmp/plugins.txt")
            except Exception:
                print "[TVCharts] Error loading plugins!"

        # Status Update
        getPage(
            url='http://www.dreambox-plugins.de/feeds/TVCharts/status.php',
            agent="Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)",
            timeout=60,
            method='POST',
            headers={
                'Content-Type': 'application/x-www-form-urlencoded'
            },
            postdata=urlencode({
                'boxid': self.BoxID,
                'devicename': self.DeviceName,
                'imageversion': self.ImageVersion,
                'enigmaversion': self.EnigmaVersion,
                'lastchannel': channel_name,
                'lastevent': event_name,
                'eventdescr': event_description,
                'lastbegin': event_begin,
                'lastserviceref': self.serviceref,
                'timerlist': self.timerlist,
                'pluginlist': self.pluginlist
            })).addErrback(self.updateError)

        # Restart Timer
        self.DBStatusTimer.start(900000, True)
Example #26
0
def getStatusInfo(self):
	# Get Current Volume and Mute Status
	vcontrol = eDVBVolumecontrol.getInstance()
	statusinfo = {
		'volume': vcontrol.getVolume(),
		'muted': vcontrol.isMuted(),
		'transcoding': TRANSCODING,
		'currservice_filename': "",
		'currservice_id': -1,
	}

	# Get currently running Service
	event = None
	serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
	serviceref_string = None
	currservice_station = None
	if serviceref is not None:
		serviceHandler = eServiceCenter.getInstance()
		serviceHandlerInfo = serviceHandler.info(serviceref)

		service = self.session.nav.getCurrentService()
		serviceinfo = service and service.info()
		event = serviceinfo and serviceinfo.getEvent(0)
		serviceref_string = serviceref.toString()
		currservice_station = serviceHandlerInfo.getName(
			serviceref).replace('\xc2\x86', '').replace('\xc2\x87', '')
	else:
		event = None
		serviceHandlerInfo = None

	if event is not None:
		# (begin, end, name, description, eit)
		curEvent = parseEvent(event)
		begin_timestamp = int(curEvent[0]) + (config.recording.margin_before.value * 60)
		end_timestamp = int(curEvent[1]) - (config.recording.margin_after.value * 60)
		statusinfo['currservice_name'] = curEvent[2].replace('\xc2\x86', '').replace('\xc2\x87', '')
		statusinfo['currservice_serviceref'] = serviceref_string
		statusinfo['currservice_begin'] = time.strftime("%H:%M", (time.localtime(begin_timestamp)))
		statusinfo['currservice_begin_timestamp'] = begin_timestamp
		statusinfo['currservice_end'] = time.strftime("%H:%M", (time.localtime(end_timestamp)))
		statusinfo['currservice_end_timestamp'] = end_timestamp
		statusinfo['currservice_description'] = curEvent[3]
		if len(curEvent[3].decode('utf-8')) > 220:
			statusinfo['currservice_description'] = curEvent[3].decode('utf-8')[0:220].encode('utf-8') + "..."
		statusinfo['currservice_station'] = currservice_station
		if statusinfo['currservice_serviceref'].startswith('1:0:0'):
			statusinfo['currservice_filename'] = '/' + '/'.join(serviceref_string.split("/")[1:])
		full_desc = statusinfo['currservice_name'] + '\n'
		full_desc += statusinfo['currservice_begin'] + " - " + statusinfo['currservice_end'] + '\n\n'
		full_desc += event.getExtendedDescription().replace('\xc2\x86', '').replace('\xc2\x87', '').replace('\xc2\x8a', '\n')
		statusinfo['currservice_fulldescription'] = full_desc
		statusinfo['currservice_id'] = curEvent[4]
	else:
		statusinfo['currservice_name'] = "N/A"
		statusinfo['currservice_begin'] = ""
		statusinfo['currservice_end'] = ""
		statusinfo['currservice_description'] = ""
		statusinfo['currservice_fulldescription'] = "N/A"
		if serviceref:
			statusinfo['currservice_serviceref'] = serviceref_string
			if statusinfo['currservice_serviceref'].startswith('1:0:0') or statusinfo['currservice_serviceref'].startswith('4097:0:0'):
				this_path = '/' + '/'.join(serviceref_string.split("/")[1:])
				if os.path.exists(this_path):
					statusinfo['currservice_filename'] = this_path
			if serviceHandlerInfo:
				statusinfo['currservice_station'] = currservice_station
			elif serviceref_string.find("http") != -1:
				statusinfo['currservice_station'] = serviceref_string.replace('%3a', ':')[serviceref_string.find("http"):]
			else:
				statusinfo['currservice_station'] = "N/A"

	# Get Standby State
	from Screens.Standby import inStandby
	if inStandby is None:
		statusinfo['inStandby'] = "false"
	else:
		statusinfo['inStandby'] = "true"

	# Get recording state
	recs = NavigationInstance.instance.getRecordings()
	if recs:
		statusinfo['isRecording'] = "true"
		statusinfo['Recording_list'] = "\n"
		for timer in NavigationInstance.instance.RecordTimer.timer_list:
			if timer.state == TimerEntry.StateRunning:
				if not timer.justplay:
					statusinfo['Recording_list'] += timer.service_ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '') + ": " + timer.name + "\n"
		if statusinfo['Recording_list'] == "\n":
			statusinfo['isRecording'] = "false"
	else:
		statusinfo['isRecording'] = "false"

	return statusinfo
Example #27
0
	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)
Example #28
0
def recordNow(session, infinite):
	rt = session.nav.RecordTimer
	serviceref = session.nav.getCurrentlyPlayingServiceReference().toString()

	try:
		event = session.nav.getCurrentService().info().getEvent(0)
	except Exception:
		event = None

	if not event and not infinite:
		return {
			"result": False,
			"message": _("No event found! Not recording!")
		}

	if event:
		(begin, end, name, description, eit) = parseEvent(event)
		begin = time()
		msg = _("Instant record for current Event started")
	else:
		name = "instant record"
		description = ""
		eit = 0

	if infinite:
		begin = time()
		end = begin + 3600 * 10
		msg = _("Infinite Instant recording started")

	timer = RecordTimerEntry(
		ServiceReference(serviceref),
		begin,
		end,
		name,
		description, 
		eit,
		False,
		False,
		0,
		dirname=preferredInstantRecordPath()
	)
	timer.dontSave = True

	if rt.record(timer):
		return {
			"result": False,
			"message": _("Timer conflict detected! Not recording!")
		}
	nt = {
		"serviceref": str(timer.service_ref),
		"servicename": timer.service_ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', ''),
		"eit": timer.eit,
		"name": timer.name,
		"begin": timer.begin,
		"end": timer.end,
		"duration": timer.end - timer.begin
	}

	return {
		"result": True,
		"message": msg,
		"newtimer": nt
	}
Example #29
0
	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)
Example #30
0
def getStatusInfo(self):
	statusinfo = {}

	# Get Current Volume and Mute Status
	vcontrol = eDVBVolumecontrol.getInstance()

	statusinfo['volume'] = vcontrol.getVolume()
	statusinfo['muted'] = vcontrol.isMuted()
	statusinfo['transcoding'] = getTranscodingSupport()

	# Get currently running Service
	event = None
	serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
	if serviceref is not None:
		serviceHandler = eServiceCenter.getInstance()
		serviceHandlerInfo = serviceHandler.info(serviceref)

		service = self.session.nav.getCurrentService()
		serviceinfo = service and service.info()
		event = serviceinfo and serviceinfo.getEvent(0)
	else:
		event = None

	statusinfo['currservice_filename'] = ""
	if event is not None:
		curEvent = parseEvent(event)
		statusinfo['currservice_name'] = curEvent[2].replace('\xc2\x86', '').replace('\xc2\x87', '')
		statusinfo['currservice_serviceref'] = serviceref.toString()
		statusinfo['currservice_begin'] = strftime("%H:%M", (localtime(int(curEvent[0])+(config.recording.margin_before.value*60))))
		statusinfo['currservice_end'] = strftime("%H:%M", (localtime(int(curEvent[1])-(config.recording.margin_after.value*60))))
		statusinfo['currservice_description'] = curEvent[3]
		if len(curEvent[3].decode('utf-8')) > 220:
			statusinfo['currservice_description'] = curEvent[3].decode('utf-8')[0:220].encode('utf-8') + "..."
		statusinfo['currservice_station'] = serviceHandlerInfo.getName(serviceref).replace('\xc2\x86', '').replace('\xc2\x87', '')
		if statusinfo['currservice_serviceref'].startswith('1:0:0'):
			statusinfo['currservice_filename'] = '/' + '/'.join(serviceref.toString().split("/")[1:])
		full_desc = statusinfo['currservice_name'] + '\n'
		full_desc += statusinfo['currservice_begin'] + " - " + statusinfo['currservice_end']  + '\n\n'
		full_desc += event.getExtendedDescription().replace('\xc2\x86', '').replace('\xc2\x87', '').replace('\xc2\x8a', '\n')
		statusinfo['currservice_fulldescription'] = full_desc
	else:
		statusinfo['currservice_name'] = "N/A"
		statusinfo['currservice_begin'] = ""
		statusinfo['currservice_end'] = ""
		statusinfo['currservice_description'] = ""
		statusinfo['currservice_fulldescription'] = "N/A"
		if serviceref:
			statusinfo['currservice_serviceref'] = serviceref.toString()
			if serviceHandlerInfo:
				statusinfo['currservice_station'] = serviceHandlerInfo.getName(serviceref).replace('\xc2\x86', '').replace('\xc2\x87', '')
			elif serviceref.toString().find("http") != -1:
				statusinfo['currservice_station'] = serviceref.toString().replace('%3a', ':')[serviceref.toString().find("http"):]
			else:
				statusinfo['currservice_station'] = "N/A"

	# Get Standby State
	from Screens.Standby import inStandby
	if inStandby == None:
		statusinfo['inStandby'] = "false"
	else:
		statusinfo['inStandby'] = "true"

	# Get recording state
	recs = NavigationInstance.instance.getRecordings()
	if recs:
		statusinfo['isRecording'] = "true"
		statusinfo['Recording_list'] = "\n"
		for timer in NavigationInstance.instance.RecordTimer.timer_list:
			if timer.state == TimerEntry.StateRunning:
				if not timer.justplay:
					statusinfo['Recording_list'] += timer.service_ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '') + ": " + timer.name + "\n"
	else:
		statusinfo['isRecording'] = "false"

	return statusinfo
Example #31
0
	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)
Example #32
0
    def CheckBlockContent(self):
        global blockedcontent_deactive
        global blockedcontent_asking
        blockedcontent_asking = False
        self.TimerBlockContentCheck.stop()
        current_hour = int(strftime("%H", localtime()))
        if Screens.Standby.inStandby or config.plugins.blockcontent.viewingtime.value == 0 or config.plugins.blockcontent.freeview.value <= current_hour:
            print "[BlockedContent] resets"
            self.blockedcontent_authorized = ""
            if blockedcontent_deactive:
                blockedcontent_deactive = False
        elif blockedcontent_deactive:
            if config.plugins.blockcontent.reactivetime.value > 0 and not self.blockedcontent_reactive:
                print "[BlockContent] reactivate in %s min\n" % config.plugins.blockcontent.reactivetime.value
                self.TimerBlockContentReactivate = eTimer()
                self.TimerBlockContentReactivate.stop()
                self.TimerBlockContentReactivate.timeout.get().append(
                    self.ReactivateBlockContent)
                self.TimerBlockContentReactivate.start(
                    config.plugins.blockcontent.reactivetime.value * 60000,
                    True)
                self.blockedcontent_reactive = True
        else:
            eventid = None
            text = ""
            station = ""
            name = ""
            description = ""
            servicerefstr = ""
            serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
            if serviceref is not None:
                servicerefstr = serviceref.toString()
                serviceHandler = eServiceCenter.getInstance()
                info = serviceHandler.info(serviceref)
                station = info.getName(serviceref)
                begin = time()
                event = None
                service = self.session.nav.getCurrentService()
                info = service and service.info()
                event = info and info.getEvent(0)
                if event is not None:
                    curEvent = parseEvent(event)
                    begin = curEvent[0]
                    end = curEvent[1]
                    name = curEvent[2]
                    description = curEvent[3]
                    eventid = curEvent[4]

                    text = event.getEventName()
                    short = event.getShortDescription()
                    ext = event.getExtendedDescription()
                    if short and short != text:
                        text += '\n\n' + short
                    if ext:
                        if text:
                            text += '\n\n'
                        text += ext
            check = "%s %s %s %s %s" % (servicerefstr, station, name,
                                        description, text)
            if config.plugins.blockcontent.casesensitive.value is False:
                check = check.upper()
            blockedcontent_found = False
            blockedcontent = True
            if os.path.exists("/etc/enigma2/blockedcontent"):
                f = open("/etc/enigma2/blockedcontent")
                while blockedcontent and not blockedcontent_found:
                    blockedcontent = f.readline().lstrip().rstrip().rstrip(
                        "\r\n")
                    if blockedcontent.startswith("userbouquet."):
                        if os.path.exists("/etc/enigma2/%s" % blockedcontent):
                            blockedbouquet = True
                            u = open("/etc/enigma2/%s" % blockedcontent, "r")
                            while blockedbouquet and not blockedcontent_found:
                                blockedbouquet = u.readline().lstrip().rstrip(
                                ).rstrip("\r\n")
                                blockedbouquet = blockedbouquet.replace(
                                    "#SERVICE", "").replace(" ", "")
                                if blockedbouquet.startswith(
                                        "#") is False and check.find(
                                            blockedbouquet) is not -1 and len(
                                                blockedbouquet) > 1:
                                    print "[BlockedContent] %s found in %s" % (
                                        blockedbouquet, check)
                                    blockedcontent_found = True
                            u.close()
                    if config.plugins.blockcontent.casesensitive.value is False:
                        blockedcontent = blockedcontent.upper()
                    if blockedcontent.startswith("#") is False and check.find(
                            blockedcontent
                    ) is not -1 and len(blockedcontent) > 1:
                        print "[BlockedContent] %s found in %s" % (
                            blockedcontent, check)
                        blockedcontent_found = True
                f.close()
            else:
                print "[BlockedContent] /etc/enigma2/blockedcontent not found"
            if self.blockedcontent_authorized != check:
                self.blockedcontent_authorized = ""
            if blockedcontent_found and self.blockedcontent_authorized != check and not blockedcontent_asking:
                if config.plugins.blockcontent.popup.value is False:
                    blockedcontent_asking = True
                    print "[BlockedContent] asks for PIN"
                    self.prev_running_service = serviceref
                    self.blockedcontent_check = check
                    self.session.nav.stopService()
                    try:
                        self.session.openWithCallback(
                            self.pinEntered,
                            PinInput,
                            pinList=[
                                config.plugins.blockcontent.pin.getValue()
                            ],
                            triesEntry=self.getTriesEntry(),
                            title=_("Please enter the correct pin code"),
                            windowTitle=_("Enter pin code"))
                    except:
                        self.session.nav.playService(self.prev_running_service)
                        blockedcontent_asking = False
                        pass
                else:
                    self.session.open(
                        MessageBox,
                        _("Block Content found %s") % blockedcontent,
                        MessageBox.TYPE_WARNING,
                        timeout=config.plugins.blockcontent.popuptime.value)
Example #33
0
	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=['red', 'green'], 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.ChoiceBoxDialog.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)
Example #34
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"]
				if not timer.isRunning():
					menu.append((_("Disable timer"), "disable"))
					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.open(TimerEntry, timer)
						elif choice[1] == "disable":
							self.disableTimer(timer)
						elif choice[1] == "timereditlist":
							self.session.open(TimerEditList)
				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)
Example #35
0
def getStatusInfo(self):
    statusinfo = {}

    # Get Current Volume and Mute Status
    vcontrol = eDVBVolumecontrol.getInstance()

    statusinfo['volume'] = vcontrol.getVolume()
    statusinfo['muted'] = vcontrol.isMuted()

    # Get currently running Service
    event = None
    serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
    if serviceref is not None:
        serviceHandler = eServiceCenter.getInstance()
        serviceHandlerInfo = serviceHandler.info(serviceref)

        service = self.session.nav.getCurrentService()
        serviceinfo = service and service.info()
        event = serviceinfo and serviceinfo.getEvent(0)
    else:
        event = None

    if event is not None:
        curEvent = parseEvent(event)
        statusinfo['currservice_name'] = curEvent[2].replace(
            '\xc2\x86', '').replace('\xc2\x87', '')
        statusinfo['currservice_serviceref'] = serviceref.toString()
        statusinfo['currservice_begin'] = strftime("%H:%M", (localtime(
            int(curEvent[0]) + (config.recording.margin_before.value * 60))))
        statusinfo['currservice_end'] = strftime("%H:%M", (localtime(
            int(curEvent[1]) - (config.recording.margin_after.value * 60))))
        statusinfo['currservice_description'] = curEvent[3]
        if len(curEvent[3].decode('utf-8')) > 220:
            statusinfo['currservice_description'] = curEvent[3].decode(
                'utf-8')[0:220].encode('utf-8') + "..."
        statusinfo['currservice_station'] = serviceHandlerInfo.getName(
            serviceref).replace('\xc2\x86', '').replace('\xc2\x87', '')
    else:
        statusinfo['currservice_name'] = "N/A"
        statusinfo['currservice_begin'] = ""
        statusinfo['currservice_end'] = ""
        statusinfo['currservice_description'] = ""
        if serviceref:
            statusinfo['currservice_serviceref'] = serviceref.toString()
            statusinfo['currservice_station'] = serviceHandlerInfo.getName(
                serviceref).replace('\xc2\x86', '').replace('\xc2\x87', '')

    # Get Standby State
    from Screens.Standby import inStandby
    if inStandby == None:
        statusinfo['inStandby'] = "false"
    else:
        statusinfo['inStandby'] = "true"

    # Get recording state
    recs = NavigationInstance.instance.getRecordings()
    if recs:
        statusinfo['isRecording'] = "true"
    else:
        statusinfo['isRecording'] = "false"

    return statusinfo
Example #36
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.open(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)
Example #37
0
def getStatusInfo(self):
    # Get Current Volume and Mute Status
    vcontrol = eDVBVolumecontrol.getInstance()
    statusinfo = {
        'volume': vcontrol.getVolume(),
        'muted': vcontrol.isMuted(),
        'transcoding': TRANSCODING,
        'currservice_filename': "",
        'currservice_id': -1,
    }

    # Get currently running Service
    event = None
    serviceref = NavigationInstance.instance.getCurrentlyPlayingServiceReference(
    )
    serviceref_string = None
    currservice_station = None
    if serviceref is not None:
        serviceHandler = eServiceCenter.getInstance()
        serviceHandlerInfo = serviceHandler.info(serviceref)

        service = NavigationInstance.instance.getCurrentService()
        serviceinfo = service and service.info()
        event = serviceinfo and serviceinfo.getEvent(0)
        serviceref_string = serviceref.toString()
        currservice_station = removeBad(serviceHandlerInfo.getName(serviceref))
    else:
        event = None
        serviceHandlerInfo = None

    if event is not None:
        # (begin, end, name, description, eit)
        curEvent = parseEvent(event)
        begin_timestamp = int(
            curEvent[0]) + (config.recording.margin_before.value * 60)
        end_timestamp = int(
            curEvent[1]) - (config.recording.margin_after.value * 60)
        statusinfo['currservice_name'] = removeBad(curEvent[2])
        statusinfo['currservice_serviceref'] = serviceref_string
        statusinfo['currservice_begin'] = time.strftime(
            "%H:%M", (time.localtime(begin_timestamp)))
        statusinfo['currservice_begin_timestamp'] = begin_timestamp
        statusinfo['currservice_end'] = time.strftime(
            "%H:%M", (time.localtime(end_timestamp)))
        statusinfo['currservice_end_timestamp'] = end_timestamp
        desc = curEvent[3]
        if six.PY2:
            desc = desc.decode('utf-8')
        if len(desc) > 220:
            desc = desc + u"..."
        if six.PY2:
            desc = desc.encode('utf-8')
        statusinfo['currservice_description'] = desc
        statusinfo['currservice_station'] = currservice_station
        if statusinfo['currservice_serviceref'].startswith('1:0:0'):
            statusinfo['currservice_filename'] = '/' + '/'.join(
                serviceref_string.split("/")[1:])
        full_desc = statusinfo['currservice_name'] + '\n'
        full_desc += statusinfo['currservice_begin'] + " - " + statusinfo[
            'currservice_end'] + '\n\n'
        full_desc += removeBad2(event.getExtendedDescription())
        statusinfo['currservice_fulldescription'] = full_desc
        statusinfo['currservice_id'] = curEvent[4]
    else:
        statusinfo['currservice_name'] = "N/A"
        statusinfo['currservice_begin'] = ""
        statusinfo['currservice_end'] = ""
        statusinfo['currservice_description'] = ""
        statusinfo['currservice_fulldescription'] = "N/A"
        if serviceref:
            statusinfo['currservice_serviceref'] = serviceref_string
            if statusinfo['currservice_serviceref'].startswith(
                    '1:0:0'
            ) or statusinfo['currservice_serviceref'].startswith('4097:0:0'):
                this_path = '/' + '/'.join(serviceref_string.split("/")[1:])
                if os.path.exists(this_path):
                    statusinfo['currservice_filename'] = this_path
            if serviceHandlerInfo:
                statusinfo['currservice_station'] = currservice_station
            elif serviceref_string.find("http") != -1:
                statusinfo['currservice_station'] = serviceref_string.replace(
                    '%3a', ':')[serviceref_string.find("http"):]
            else:
                statusinfo['currservice_station'] = "N/A"

    # Get Standby State
    from Screens.Standby import inStandby
    if inStandby is None:
        statusinfo['inStandby'] = "false"
    else:
        statusinfo['inStandby'] = "true"

    # Get recording state
    recs = NavigationInstance.instance.getRecordings()
    if recs:
        statusinfo['isRecording'] = "true"
        statusinfo['Recording_list'] = "\n"
        for timer in NavigationInstance.instance.RecordTimer.timer_list:
            if timer.state == TimerEntry.StateRunning:
                if not timer.justplay:
                    statusinfo['Recording_list'] += removeBad(
                        timer.service_ref.getServiceName(
                        )) + ": " + timer.name + "\n"
        if statusinfo['Recording_list'] == "\n":
            statusinfo['isRecording'] = "false"
    else:
        statusinfo['isRecording'] = "false"

    # Get streaminfo
    streams = GetStreamInfo()
    Streaming_list = []
    try:

        # TODO move this code to javascript getStatusinfo
        for stream in streams:
            st = ''
            s = stream["name"]
            e = stream["eventname"]
            i = stream["ip"]
            del stream
            if i is not None:
                st += i + ": "
            st += s + ' - ' + e
            if st != '':
                Streaming_list.append(st)

    except Exception as error:  # nosec # noqa: E722
        #		print("[OpenWebif] -D- build Streaming_list %s" % error)
        pass

    if len(streams) > 0:
        statusinfo['Streaming_list'] = '\n'.join(Streaming_list)
        statusinfo['isStreaming'] = 'true'
    else:
        statusinfo['Streaming_list'] = ''
        statusinfo['isStreaming'] = 'false'

    return statusinfo
Example #38
0
	def timerAdd(self):
		def callback(choice):
			if choice:
				choice(self)
			self.closeChoiceBoxDialog()

		if self.isRecording:
			return
		event = self.event
		if event is None:
			return
		timer = self.session.nav.RecordTimer.getTimerForEvent(self.currentService, event)
		if timer is not None:
			cb_func1 = lambda ret: self.removeTimer(timer)
			cb_func2 = lambda ret: self.editTimer(timer)
			menu = [(_("Delete Timer"), 'CALLFUNC', callback, cb_func1), (_("Edit Timer"), 'CALLFUNC', callback, 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()
		else:
			newEntry = RecordTimerEntry(self.currentService, checkOldTimers = True, dirname = preferredTimerPath(), *parseEvent(self.event, service=self.currentService))
			self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
Example #39
0
def getStatusInfo(self):
	# Get Current Volume and Mute Status
	vcontrol = eDVBVolumecontrol.getInstance()
	statusinfo = {
		'volume': vcontrol.getVolume(),
		'muted': vcontrol.isMuted(),
		'transcoding': TRANSCODING,
		'currservice_filename': "",
		'currservice_id': -1,
	}

	# Get currently running Service
	event = None
	serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
	serviceref_string = None
	currservice_station = None
	if serviceref is not None:
		serviceHandler = eServiceCenter.getInstance()
		serviceHandlerInfo = serviceHandler.info(serviceref)

		service = self.session.nav.getCurrentService()
		serviceinfo = service and service.info()
		event = serviceinfo and serviceinfo.getEvent(0)
		serviceref_string = serviceref.toString()
		currservice_station = serviceHandlerInfo.getName(
			serviceref).replace('\xc2\x86', '').replace('\xc2\x87', '')
	else:
		event = None
		serviceHandlerInfo = None

	if event is not None:
		# (begin, end, name, description, eit)
		curEvent = parseEvent(event)
		begin_timestamp = int(curEvent[0]) + (config.recording.margin_before.value * 60)
		end_timestamp = int(curEvent[1]) - (config.recording.margin_after.value * 60)
		statusinfo['currservice_name'] = curEvent[2].replace('\xc2\x86', '').replace('\xc2\x87', '')
		statusinfo['currservice_serviceref'] = serviceref_string
		statusinfo['currservice_begin'] = time.strftime("%H:%M", (time.localtime(begin_timestamp)))
		statusinfo['currservice_begin_timestamp'] = begin_timestamp
		statusinfo['currservice_end'] = time.strftime("%H:%M", (time.localtime(end_timestamp)))
		statusinfo['currservice_end_timestamp'] = end_timestamp
		statusinfo['currservice_description'] = curEvent[3]
		if len(curEvent[3].decode('utf-8')) > 220:
			statusinfo['currservice_description'] = curEvent[3].decode('utf-8')[0:220].encode('utf-8') + "..."
		statusinfo['currservice_station'] = currservice_station
		if statusinfo['currservice_serviceref'].startswith('1:0:0'):
			statusinfo['currservice_filename'] = '/' + '/'.join(serviceref_string.split("/")[1:])
		full_desc = statusinfo['currservice_name'] + '\n'
		full_desc += statusinfo['currservice_begin'] + " - " + statusinfo['currservice_end'] + '\n\n'
		full_desc += event.getExtendedDescription().replace('\xc2\x86', '').replace('\xc2\x87', '').replace('\xc2\x8a', '\n')
		statusinfo['currservice_fulldescription'] = full_desc
		statusinfo['currservice_id'] = curEvent[4]
	else:
		statusinfo['currservice_name'] = "N/A"
		statusinfo['currservice_begin'] = ""
		statusinfo['currservice_end'] = ""
		statusinfo['currservice_description'] = ""
		statusinfo['currservice_fulldescription'] = "N/A"
		if serviceref:
			statusinfo['currservice_serviceref'] = serviceref_string
			if statusinfo['currservice_serviceref'].startswith('1:0:0') or statusinfo['currservice_serviceref'].startswith('4097:0:0'):
				this_path = '/' + '/'.join(serviceref_string.split("/")[1:])
				if os.path.exists(this_path):
					statusinfo['currservice_filename'] = this_path
			if serviceHandlerInfo:
				statusinfo['currservice_station'] = currservice_station
			elif serviceref_string.find("http") != -1:
				statusinfo['currservice_station'] = serviceref_string.replace('%3a', ':')[serviceref_string.find("http"):]
			else:
				statusinfo['currservice_station'] = "N/A"

	# Get Standby State
	from Screens.Standby import inStandby
	if inStandby is None:
		statusinfo['inStandby'] = "false"
	else:
		statusinfo['inStandby'] = "true"

	# Get recording state
	recs = NavigationInstance.instance.getRecordings()
	if recs:
		statusinfo['isRecording'] = "true"
		statusinfo['Recording_list'] = "\n"
		for timer in NavigationInstance.instance.RecordTimer.timer_list:
			if timer.state == TimerEntry.StateRunning:
				if not timer.justplay:
					statusinfo['Recording_list'] += timer.service_ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '') + ": " + timer.name + "\n"
		if statusinfo['Recording_list'] == "\n":
			statusinfo['isRecording'] = "false"
	else:
		statusinfo['isRecording'] = "false"

	return statusinfo
Example #40
0
	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)
Example #41
0
def recordNow(session, infinite):
    rt = session.nav.RecordTimer
    serviceref = session.nav.getCurrentlyPlayingServiceReference().toString()

    try:
        event = session.nav.getCurrentService().info().getEvent(0)
    except Exception:
        event = None

    if not event and not infinite:
        return {
            "result": False,
            "message": _("No event found! Not recording!")
        }

    if event:
        (begin, end, name, description, eit) = parseEvent(event)
        begin = time()
        msg = _("Instant record for current Event started")
    else:
        name = "instant record"
        description = ""
        eit = 0

    if infinite:
        begin = time()
        end = begin + 3600 * 10
        msg = _("Infinite Instant recording started")

    timer = RecordTimerEntry(ServiceReference(serviceref),
                             begin,
                             end,
                             name,
                             description,
                             eit,
                             False,
                             False,
                             0,
                             dirname=preferredInstantRecordPath())
    timer.dontSave = True

    if rt.record(timer):
        return {
            "result": False,
            "message": _("Timer conflict detected! Not recording!")
        }
    nt = {
        "serviceref":
        str(timer.service_ref),
        "servicename":
        timer.service_ref.getServiceName().replace('\xc2\x86',
                                                   '').replace('\xc2\x87', ''),
        "eit":
        timer.eit,
        "name":
        timer.name,
        "begin":
        timer.begin,
        "end":
        timer.end,
        "duration":
        timer.end - timer.begin
    }

    return {"result": True, "message": msg, "newtimer": nt}
Example #42
0
	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:
				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(self.currentService, checkOldTimers = True, dirname = preferredTimerPath(), *parseEvent(self.event))
			self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
def getStatusInfo(self):
    statusinfo = {}

    # Get Current Volume and Mute Status
    vcontrol = eDVBVolumecontrol.getInstance()

    statusinfo['volume'] = vcontrol.getVolume()
    statusinfo['muted'] = vcontrol.isMuted()
    statusinfo['transcoding'] = getTranscodingSupport()

    # Get currently running Service
    event = None
    serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
    if serviceref is not None:
        serviceHandler = eServiceCenter.getInstance()
        serviceHandlerInfo = serviceHandler.info(serviceref)

        service = self.session.nav.getCurrentService()
        serviceinfo = service and service.info()
        event = serviceinfo and serviceinfo.getEvent(0)
    else:
        event = None

    statusinfo['currservice_filename'] = ""
    if event is not None:
        curEvent = parseEvent(event)
        statusinfo['currservice_name'] = curEvent[2].replace(
            '\xc2\x86', '').replace('\xc2\x87', '')
        statusinfo['currservice_serviceref'] = serviceref.toString()
        statusinfo['currservice_begin'] = strftime("%H:%M", (localtime(
            int(curEvent[0]) + (config.recording.margin_before.value * 60))))
        statusinfo['currservice_end'] = strftime("%H:%M", (localtime(
            int(curEvent[1]) - (config.recording.margin_after.value * 60))))
        statusinfo['currservice_description'] = curEvent[3]
        if len(curEvent[3].decode('utf-8')) > 220:
            statusinfo['currservice_description'] = curEvent[3].decode(
                'utf-8')[0:220].encode('utf-8') + "..."
        statusinfo['currservice_station'] = serviceHandlerInfo.getName(
            serviceref).replace('\xc2\x86', '').replace('\xc2\x87', '')
        if statusinfo['currservice_serviceref'].startswith('1:0:0'):
            statusinfo['currservice_filename'] = '/' + '/'.join(
                serviceref.toString().split("/")[1:])
        full_desc = statusinfo['currservice_name'] + '\n'
        full_desc += statusinfo['currservice_begin'] + " - " + statusinfo[
            'currservice_end'] + '\n\n'
        full_desc += event.getExtendedDescription().replace(
            '\xc2\x86', '').replace('\xc2\x87', '').replace('\xc2\x8a', '\n')
        statusinfo['currservice_fulldescription'] = full_desc
    else:
        statusinfo['currservice_name'] = "N/A"
        statusinfo['currservice_begin'] = ""
        statusinfo['currservice_end'] = ""
        statusinfo['currservice_description'] = ""
        statusinfo['currservice_fulldescription'] = "N/A"
        if serviceref:
            statusinfo['currservice_serviceref'] = serviceref.toString()
            if serviceHandlerInfo:
                statusinfo['currservice_station'] = serviceHandlerInfo.getName(
                    serviceref).replace('\xc2\x86',
                                        '').replace('\xc2\x87', '')
            elif serviceref.toString().find("http") != -1:
                statusinfo['currservice_station'] = serviceref.toString(
                ).replace('%3a', ':')[serviceref.toString().find("http"):]
            else:
                statusinfo['currservice_station'] = "N/A"

    # Get Standby State
    from Screens.Standby import inStandby
    if inStandby == None:
        statusinfo['inStandby'] = "false"
    else:
        statusinfo['inStandby'] = "true"

    # Get recording state
    recs = NavigationInstance.instance.getRecordings()
    if recs:
        statusinfo['isRecording'] = "true"
        statusinfo['Recording_list'] = "\n"
        for timer in NavigationInstance.instance.RecordTimer.timer_list:
            if timer.state == TimerEntry.StateRunning:
                if not timer.justplay:
                    statusinfo[
                        'Recording_list'] += timer.service_ref.getServiceName(
                        ).replace('\xc2\x86', '').replace(
                            '\xc2\x87', '') + ": " + timer.name + "\n"
    else:
        statusinfo['isRecording'] = "false"

    return statusinfo
Example #44
0
	def check_and_add_event(self, neweventid):
		if not config.plugins.vps.allow_seeking_multiple_pdc.value:
			return
		
		epgcache = eEPGCache.getInstance()
		evt = epgcache.lookupEventId(self.rec_ref, neweventid)
		
		if evt:
			evt_begin = evt.getBeginTime() + 60
			evt_end = evt.getBeginTime() + evt.getDuration() - 60
			
			if evt_begin < self.timer.begin:
				return
			
			for checktimer in self.session.nav.RecordTimer.timer_list:
				if checktimer == self.timer:
					continue
				if (checktimer.begin - evt_begin) > 3600*2:
					break
				
				compareString = checktimer.service_ref.ref.toCompareString()
				if compareString == self.timer.service_ref.ref.toCompareString() or compareString == self.rec_ref.toCompareString():	
					if checktimer.eit == neweventid:
						return
					
					if checktimer.begin <= evt_begin and checktimer.end >= evt_end:
						if checktimer.vpsplugin_enabled is None or not checktimer.vpsplugin_enabled:
							return
						
						# manuell angelegter Timer mit VPS
						if checktimer.name == "" and checktimer.vpsplugin_time is not None:
							checktimer.eit = neweventid
							checktimer.name = evt.getEventName()
							checktimer.description = evt.getShortDescription()
							checktimer.vpsplugin_time = None
							checktimer.log(0, "[VPS] changed timer (found same PDC-Time as in other VPS-recording)")
							return
			
			# eigenen Timer überprüfen, wenn Zeiten nicht überschrieben werden dürfen
			if not self.timer.vpsplugin_overwrite and evt_begin <= self.timer.end:
				check_already_existing = [x for (x,y) in self.next_events if y == neweventid]
				if len(check_already_existing) > 0:
					start = check_already_existing.pop()
					if start == evt_begin:
						return
					else:
						self.next_events.remove( (start, neweventid) )
						self.timer.log(0, "[VPS] delete event_id "+ str(neweventid) +" because of delay "+ str(evt_begin - start))
					
				self.next_events.append( (evt_begin, neweventid) )
				self.next_events = sorted(self.next_events)
				self.timer.log(0, "[VPS] add event_id "+ str(neweventid))
				
			else:
				newevent_data = parseEvent(evt)
				newEntry = RecordTimerEntry(ServiceReference(self.rec_ref), *newevent_data)
				newEntry.vpsplugin_enabled = True
				newEntry.vpsplugin_overwrite = True
				newEntry.dirname = self.timer.dirname
				newEntry.log(0, "[VPS] added this timer (found same PDC-Time as in other VPS-recording)")
				
				# Wenn kein Timer-Konflikt auftritt, wird der Timer angelegt.
				res = NavigationInstance.instance.RecordTimer.record(newEntry)
				self.timer.log(0, "[VPS] added another timer, res "+ str(res))
Example #45
0
	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)
Example #46
0
    def updateStatus(self):
        print "[TVCharts] Status Update ..."
        self.DBStatusTimer.stop()

        if not config.plugins.tvcharts.enabled.value or Screens.Standby.inStandby:
            return

            # Get Channelname
        sref = self.session.nav.getCurrentlyPlayingServiceReference()
        if sref is not None:
            ref = eServiceReference(sref.toString())
            ref.setName("")
            serviceHandler = eServiceCenter.getInstance()
            info = serviceHandler.info(ref)
            channel_name = (
                info
                and info.getName(ref)
                .replace("\xc2\x86", "")
                .replace("\xc2\x87", "")
                .decode("utf-8", "ignore")
                .encode("utf-8")
                or ""
            )
            self.serviceref = ref.toString()
        else:
            channel_name = ""
            self.serviceref = ""

            # Get Event Info
        service = self.session.nav.getCurrentService()
        info = service and service.info()
        event = info and info.getEvent(0)
        event_name = event and event.getEventName() or ""
        event_description = ""
        event_begin = 0

        if event is not None:
            curEvent = parseEvent(event)
            event_begin = int(curEvent[0]) + (config.recording.margin_before.getValue() * 60)
            event_description = event.getExtendedDescription()

            # Get Box Info
        self.BoxID = iNetwork.getAdapterAttribute("eth0", "mac")
        self.DeviceName = HardwareInfo().get_device_name()
        try:
            from enigma import getEnigmaVersionString
            from boxbranding import getImageVersion, getImageBuild

            self.EnigmaVersion = getEnigmaVersionString()
            self.ImageVersion = getImageVersion() + "." + getImageBuild()
        except:
            self.EnigmaVersion = about.getEnigmaVersionString()
            self.ImageVersion = about.getVersionString()

            # Get TimerList
        self.timerlist = ""
        if config.plugins.tvcharts.submittimers.value and self.LastTimerlistUpdate <= (time() - 1800):
            self.LastTimerlistUpdate = time()
            try:
                for timer in self.recordtimer.timer_list:
                    if timer.disabled == 0 and timer.justplay == 0:
                        self.timerlist += "%s|%s|%s|%s|%s|%s|%s\n" % (
                            timer.eit,
                            str(int(timer.begin) + (config.recording.margin_before.getValue() * 60)),
                            str(int(timer.end) - (config.recording.margin_after.getValue() * 60)),
                            str(timer.service_ref),
                            timer.name,
                            timer.service_ref.getServiceName()
                            .replace("\xc2\x86", "")
                            .replace("\xc2\x87", "")
                            .decode("utf-8", "ignore")
                            .encode("utf-8"),
                            timer.repeated,
                        )
            except Exception:
                print "[TVCharts] Error loading timers!"

                # Get Pluginlist
        if config.plugins.tvcharts.submitplugins.value and self.pluginlist == "":
            try:
                os_system("opkg list_installed | grep enigma2-plugin- > /tmp/plugins.txt")
                for plugin in open("/tmp/plugins.txt", "r"):
                    self.pluginlist += plugin[0 : plugin.find(" - ")] + "\n"
                os_system("rm -f /tmp/plugins.txt")
            except Exception:
                print "[TVCharts] Error loading plugins!"

                # Status Update
        getPage(
            url="http://www.dreambox-plugins.de/feeds/TVCharts/status.php",
            agent="Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)",
            timeout=60,
            method="POST",
            headers={"Content-Type": "application/x-www-form-urlencoded"},
            postdata=urlencode(
                {
                    "boxid": self.BoxID,
                    "devicename": self.DeviceName,
                    "imageversion": self.ImageVersion,
                    "enigmaversion": self.EnigmaVersion,
                    "lastchannel": channel_name,
                    "lastevent": event_name,
                    "eventdescr": event_description,
                    "lastbegin": event_begin,
                    "lastserviceref": self.serviceref,
                    "timerlist": self.timerlist,
                    "pluginlist": self.pluginlist,
                }
            ),
        ).addErrback(self.updateError)

        # Restart Timer
        self.DBStatusTimer.start(900000, True)
Example #47
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)