RecordTimer.py: remove debug output
[vuplus_dvbapp] / RecordTimer.py
index 6075141..304a528 100644 (file)
@@ -1,6 +1,6 @@
 import time
 #from time import datetime
-from Tools import Directories, Notifications
+from Tools import Directories, Notifications, ASCIItranslit
 
 from Components.config import config
 import timer
@@ -141,6 +141,9 @@ class RecordTimerEntry(timer.TimerEntry, object):
                if self.name:
                        filename += " - " + self.name
 
+               if config.recording.ascii_filenames.value:
+                       filename = ASCIItranslit.legacyEncode(filename)
+
                if self.dirname and not Directories.fileExists(self.dirname, 'w'):
                        self.dirnameHadToFallback = True
                        self.Filename = Directories.getRecordingFilename(filename, None)
@@ -183,10 +186,16 @@ class RecordTimerEntry(timer.TimerEntry, object):
 
                        prep_res=self.record_service.prepare(self.Filename + ".ts", self.begin, self.end, event_id, self.name.replace("\n", ""), self.description.replace("\n", ""), ' '.join(self.tags))
                        if prep_res:
-                               if prep_rest == 255:
+                               if prep_res == -255:
                                        self.log(4, "failed to write meta information")
                                else:
                                        self.log(2, "'prepare' failed: error %d" % prep_res)
+
+                               # we must calc nur start time before stopRecordService call because in Screens/Standby.py TryQuitMainloop tries to get
+                               # the next start time in evEnd event handler...
+                               self.do_backoff()
+                               self.start_prepare = time.time() + self.backoff
+
                                NavigationInstance.instance.stopRecordService(self.record_service)
                                self.record_service = None
                                return False
@@ -204,7 +213,7 @@ class RecordTimerEntry(timer.TimerEntry, object):
        def activate(self):
                next_state = self.state + 1
                self.log(5, "activating state %d" % next_state)
-               
+
                if next_state == self.StatePrepared:
                        if self.tryPrepare():
                                self.log(6, "prepare ok, waiting for begin")
@@ -212,21 +221,23 @@ class RecordTimerEntry(timer.TimerEntry, object):
                                self.next_activation = self.begin
                                self.backoff = 0
                                return True
-                       
+
                        self.log(7, "prepare failed")
                        if self.first_try_prepare:
                                self.first_try_prepare = False
-                               if not config.recording.asktozap.value:
-                                       self.log(8, "asking user to zap away")
-                                       Notifications.AddNotificationWithCallback(self.failureCB, MessageBox, _("A timer failed to record!\nDisable TV and try again?\n"), timeout=20)
-                               else: # zap without asking
-                                       self.log(9, "zap without asking")
-                                       Notifications.AddNotification(MessageBox, _("In order to record a timer, the TV was switched to the recording service!\n"), type=MessageBox.TYPE_INFO, timeout=20)
-                                       self.failureCB(True)
-
-                       self.do_backoff()
-                       # retry
-                       self.start_prepare = time.time() + self.backoff
+                               cur_ref = NavigationInstance.instance.getCurrentlyPlayingServiceReference()
+                               if cur_ref and not cur_ref.getPath():
+                                       if not config.recording.asktozap.value:
+                                               self.log(8, "asking user to zap away")
+                                               Notifications.AddNotificationWithCallback(self.failureCB, MessageBox, _("A timer failed to record!\nDisable TV and try again?\n"), timeout=20)
+                                       else: # zap without asking
+                                               self.log(9, "zap without asking")
+                                               Notifications.AddNotification(MessageBox, _("In order to record a timer, the TV was switched to the recording service!\n"), type=MessageBox.TYPE_INFO, timeout=20)
+                                               self.failureCB(True)
+                               elif cur_ref:
+                                       self.log(8, "currently running service is not a live service.. so stop it makes no sense")
+                               else:
+                                       self.log(8, "currently no service running... so we dont need to stop it")
                        return False
                elif next_state == self.StateRunning:
                        # if this timer has been cancelled, just go to "end" state.
@@ -353,8 +364,8 @@ class RecordTimerEntry(timer.TimerEntry, object):
                        if self.dirnameHadToFallback:
                                text = '\n'.join((text, _("Please note that the previously selected media could not be accessed and therefore the default directory is being used instead.")))
 
-                       # maybe this should be configurable?
-                       Notifications.AddPopup(text = text, type = MessageBox.TYPE_INFO, timeout = 3)
+                       if config.usage.show_message_when_recording_starts.value:
+                               Notifications.AddPopup(text = text, type = MessageBox.TYPE_INFO, timeout = 3)
 
        # we have record_service as property to automatically subscribe to record service events
        def setRecordService(self, service):
@@ -566,9 +577,10 @@ class RecordTimer(timer.Timer):
        def getNextRecordingTime(self):
                now = time.time()
                for timer in self.timer_list:
-                       if timer.justplay or timer.begin < now:
+                       next_act = timer.getNextActivation()
+                       if timer.justplay or next_act < now:
                                continue
-                       return timer.begin
+                       return next_act
                return -1
 
        def isNextRecordAfterEventActionAuto(self):
@@ -646,7 +658,7 @@ class RecordTimer(timer.Timer):
                                                chktimecmp_end = chktimecmp + (duration / 60)
                                        time = localtime(x.begin)
                                        for y in (0, 1, 2, 3, 4, 5, 6):
-                                               if x.repeated & (2 ** y):
+                                               if x.repeated & (2 ** y) and (x.begin <= begin or begin <= x.begin <= end):
                                                        timecmp = y * 1440 + time.tm_hour * 60 + time.tm_min
                                                        if timecmp <= chktimecmp < (timecmp + ((x.end - x.begin) / 60)):
                                                                time_match = ((timecmp + ((x.end - x.begin) / 60)) - chktimecmp) * 60