def showCover(data, self, serien_nameCover, force_show=True): if self is not None and config.plugins.serienRec.showCover.value: if not force_show: global coverToShow if coverToShow == serien_nameCover: coverToShow = None else: return if fileExists(serien_nameCover): self['cover'].instance.setPixmap(gPixmapPtr()) scale = AVSwitch().getFramebufferScale() size = self['cover'].instance.size() self.picload.setPara((size.width(), size.height(), scale[0], scale[1], False, 1, "#00000000")) picLoaderResult = 1 if isDreamOS(): picLoaderResult = self.picload.startDecode(serien_nameCover, False) else: picLoaderResult = self.picload.startDecode(serien_nameCover, 0, 0, False) if picLoaderResult == 0: ptr = self.picload.getData() if ptr is not None: self['cover'].instance.setPixmap(ptr) self['cover'].show() else: print "[SerienRecorder] Coverfile not found: %s" % serien_nameCover
def startCheck(self): # Log Reload Timer print "[SerienRecorder] startCheck timer" SerienRecorder.autoCheckFinished = False self.autoCheckRunning = False if isDreamOS(): self.readLogTimer_conn = self.readLogTimer.timeout.connect(self.readLog) else: self.readLogTimer.callback.append(self.readLog) self.readLogTimer.start(2500)
def startCheck(self): # Log Reload Timer print "[SerienRecorder] startCheck timer" SerienRecorder.autoCheckFinished = False self.autoCheckRunning = False if isDreamOS(): self.readLogTimer_conn = self.readLogTimer.timeout.connect( self.readLog) else: self.readLogTimer.callback.append(self.readLog) self.readLogTimer.start(2500)
def __init__(self, session): serienRecBaseScreen.__init__(self, session) Screen.__init__(self, session) HelpableScreen.__init__(self) self.modus = "menu_list" self.session = session self.picload = ePicLoad() self.ErrorMsg = "unbekannt" self.piconLoader = PiconLoader() self.picloader = None self.filter = False self.database = SRDatabase(SerienRecorder.serienRecDataBaseFilePath) self.changesMade = False self["actions"] = HelpableActionMap(self, "SerienRecorderActions", { "ok": (self.keyOK, "Marker für die ausgewählte Serie hinzufügen"), "cancel": (self.keyCancel, "zurück zur vorherigen Ansicht"), "left": (self.keyLeft, "zur vorherigen Seite blättern"), "right": (self.keyRight, "zur nächsten Seite blättern"), "up": (self.keyUp, "eine Zeile nach oben"), "down": (self.keyDown, "eine Zeile nach unten"), "menu": (self.recSetup, "Menü für globale Einstellungen öffnen"), "yellow": (self.keyYellow, "Zeige nur Serien-Starts"), "startTeletext": (self.wunschliste, "Informationen zur ausgewählten Serie auf Wunschliste anzeigen"), "0" : (self.readLogFile, "Log-File des letzten Suchlaufs anzeigen"), "4" : (self.serieInfo, "Informationen zur ausgewählten Serie anzeigen"), "6" : (self.showConflicts, "Liste der Timer-Konflikte anzeigen"), "7" : (self.showWishlist, "Merkzettel (vorgemerkte Folgen) anzeigen"), }, -1) self.helpList[0][2].sort() self["helpActions"] = ActionMap(["SerienRecorderActions" ,], { "displayHelp" : self.showHelp, "displayHelp_long" : self.showManual, }, 0) self.setupSkin() self.timer_default = eTimer() if isDreamOS(): self.timer_default_conn = self.timer_default.timeout.connect(self.readProposal) else: self.timer_default.callback.append(self.readProposal) self.proposalList = [] self.transmissions = {} self.serviceRefs = self.database.getActiveServiceRefs() self.onLayoutFinish.append(self.setSkinProperties) self.onLayoutFinish.append(self.__onLayoutFinish) self.onClose.append(self.__onClose)
def startDisplayTimer(self): self.displayTimer = None if config.plugins.serienRec.showAllButtons.value: setMenuTexts(self) else: self.displayMode = 2 self.updateMenuKeys() self.displayTimer = eTimer() if isDreamOS(): self.displayTimer_conn = self.displayTimer.timeout.connect(self.updateMenuKeys) else: self.displayTimer.callback.append(self.updateMenuKeys) self.displayTimer.start(config.plugins.serienRec.DisplayRefreshRate.value * 1000)
def startDisplayTimer(self): self.displayTimer = None if config.plugins.serienRec.showAllButtons.value: setMenuTexts(self) else: self.displayMode = 2 self.updateMenuKeys() self.displayTimer = eTimer() if isDreamOS(): self.displayTimer_conn = self.displayTimer.timeout.connect( self.updateMenuKeys) else: self.displayTimer.callback.append(self.updateMenuKeys) self.displayTimer.start( config.plugins.serienRec.DisplayRefreshRate.value * 1000)
def setSkinProperties(self): setSkinProperties(self) self['text_red'].setText("Zurück") self.num_bt_text[4][0] = buttonText_na self.displayTimer = None if config.plugins.serienRec.showAllButtons.value: setMenuTexts(self) else: self.updateMenuKeys() self.displayTimer = eTimer() if isDreamOS(): self.displayTimer_conn = self.displayTimer.timeout.connect(self.updateMenuKeys) else: self.displayTimer.callback.append(self.updateMenuKeys) self.displayTimer.start(config.plugins.serienRec.DisplayRefreshRate.value * 1000)
def autostart(reason, **kwargs): if reason == 0 and "session" in kwargs: session = kwargs["session"] global startTimer global startTimerConnection global autoCheckFinished lt = time.localtime() uhrzeit = time.strftime("%d.%m.%Y - %H:%M:%S", lt) SRLogger.writeLog("\nSerienRecorder Start: %s" % uhrzeit, True) def startAutoCheckTimer(): serienRecCheckForRecording(session, False, False) if config.plugins.serienRec.autochecktype.value in ("1", "2") and config.plugins.serienRec.timeUpdate.value: print "[SerienRecorder] Auto-Check: AN" startTimer = eTimer() if isDreamOS(): startTimerConnection = startTimer.timeout.connect(startAutoCheckTimer) else: startTimer.callback.append(startAutoCheckTimer) startTimer.start(60 * 1000, True) else: print "[SerienRecorder] Auto-Check: AUS"
def __init__(self, session, serien_name, serie_url, serien_cover): serienRecBaseScreen.__init__(self, session) Screen.__init__(self, session) HelpableScreen.__init__(self) self.ErrorMsg = '' self.database = SRDatabase(serienRecDataBaseFilePath) self.addedEpisodes = self.database.getTimerForSeries(serien_name) self.modus = "menu_list" self.session = session self.picload = ePicLoad() self.serien_name = serien_name self.serien_id = 0 self.serien_cover = serien_cover self.episodes_list_cache = {} self.showEpisodes = True self.aStaffel = None self.aFromEpisode = None self.aToEpisode = None self.numberOfEpisodes = 0 self.page = 1 self.maxPages = 1 self.loading = False self.changesMade = False self["actions"] = HelpableActionMap(self, "SerienRecorderActions", { "ok" : (self.keyOK, "Informationen zur ausgewählten Episode anzeigen"), "cancel": (self.keyCancel, "Zurück zur Serien-Marker-Ansicht"), "left" : (self.keyLeft, "Zur vorherigen Seite blättern"), "right" : (self.keyRight, "Zur nächsten Seite blättern"), "up" : (self.keyUp, "Eine Zeile nach oben"), "down" : (self.keyDown, "Eine Zeile nach unten"), "red" : (self.keyRed, "Diese Folge (nicht mehr) timern"), "green" : (self.keyGreen, "Zeige nur Einträge aus der Timer-Liste"), "yellow": (self.keyYellow, "Ausgewählte Folge auf den Merkzettel"), "blue" : (self.keyBlue, "Neue Einträge manuell hinzufügen"), "menu" : (self.recSetup, "Menü für globale Einstellungen öffnen"), "nextBouquet" : (self.nextPage, "Nächste Seite laden"), "prevBouquet" : (self.backPage, "Vorherige Seite laden"), "startTeletext" : (self.wunschliste, "Informationen zur ausgewählten Serie auf Wunschliste anzeigen"), "0" : (self.readLogFile, "Log-File des letzten Suchlaufs anzeigen"), "3" : (self.showProposalDB, "Liste der Serien/Staffel-Starts anzeigen"), "4" : (self.serieInfo, "Informationen zur ausgewählten Serie anzeigen"), "6" : (self.showConflicts, "Liste der Timer-Konflikte anzeigen"), "7" : (self.showWishlist, "Merkzettel (vorgemerkte Folgen) anzeigen"), }, -1) self.helpList[0][2].sort() self["helpActions"] = ActionMap(["SerienRecorderActions", ], { "displayHelp" : self.showHelp, "displayHelp_long" : self.showManual, }, 0) self.setupSkin() self.serien_id = serie_url self.timer_default = eTimer() if isDreamOS(): self.timer_default_conn = self.timer_default.timeout.connect(self.loadEpisodes) else: self.timer_default.callback.append(self.loadEpisodes) self.onLayoutFinish.append(self.setSkinProperties) self.onLayoutFinish.append(self.searchEpisodes) self.onClose.append(self.__onClose)
def startCheck(self): self.database = SRDatabase(serienRecDataBaseFilePath) global autoCheckFinished autoCheckFinished = False print "[SerienRecorder] settings:" print "[SerienRecorder] manuell:", self.manuell print "[SerienRecorder] tvplaner_manuell:", self.tvplaner_manuell print "[SerienRecorder] uhrzeit check:", config.plugins.serienRec.timeUpdate.value lt = time.localtime() self.uhrzeit = time.strftime("%d.%m.%Y - %H:%M:%S", lt) global refreshTimer global refreshTimerConnection SRLogger.checkFileAccess() SRLogger.writeLog("\n---------' %s '---------" % self.uhrzeit, True) if not self.manuell and not initDB(): self.askForDSB() return if not self.database.hasMarkers() and not config.plugins.serienRec.tvplaner and not config.plugins.serienRec.tvplaner_create_marker: SRLogger.writeLog("\n---------' Starte Auto-Check um %s '---------" % self.uhrzeit, True) print "[SerienRecorder] check: Tabelle SerienMarker leer." SRLogger.writeLog("Es sind keine Serien-Marker vorhanden - Auto-Check kann nicht ausgeführt werden.", True) SRLogger.writeLog("---------' Auto-Check beendet '---------", True) self.askForDSB() return if not self.database.hasChannels(): SRLogger.writeLog("\n---------' Starte Auto-Check um %s '---------" % self.uhrzeit, True) print "[SerienRecorder] check: Tabelle Channels leer." SRLogger.writeLog("Es wurden keine Sender zugeordnet - Auto-Check kann nicht ausgeführt werden.", True) SRLogger.writeLog("---------' Auto-Check beendet '---------", True) self.askForDSB() return if refreshTimer: refreshTimer.stop() refreshTimer = None if refreshTimerConnection: refreshTimerConnection = None print "[SerienRecorder] Auto-Check Timer stop." SRLogger.writeLog("Auto-Check stop.", True) if config.plugins.serienRec.autochecktype.value == "1" and config.plugins.serienRec.timeUpdate.value: deltatime = self.getNextAutoCheckTimer(lt) refreshTimer = eTimer() if isDreamOS(): refreshTimerConnection = refreshTimer.timeout.connect(self.startCheck) else: refreshTimer.callback.append(self.startCheck) refreshTimer.start(((deltatime * 60) + random.randint(0, int(config.plugins.serienRec.maxDelayForAutocheck.value)*60)) * 1000, True) print "[SerienRecorder] Auto-Check Uhrzeit-Timer gestartet." print "[SerienRecorder] Verbleibende Zeit: %s Stunden" % (TimeHelpers.td2HHMMstr(datetime.timedelta(minutes=deltatime+int(config.plugins.serienRec.maxDelayForAutocheck.value)))) SRLogger.writeLog("Auto-Check Uhrzeit-Timer gestartet.", True) SRLogger.writeLog("Verbleibende Zeit: %s Stunden" % TimeHelpers.td2HHMMstr(datetime.timedelta(minutes=deltatime+int(config.plugins.serienRec.maxDelayForAutocheck.value))), True) if config.plugins.serienRec.AutoBackup.value == "before": createBackup() SRLogger.reset() from SerienRecorderTVPlaner import resetTVPlanerHTMLBackup resetTVPlanerHTMLBackup() self.database.removeExpiredTimerConflicts() if self.tvplaner_manuell and config.plugins.serienRec.tvplaner.value: print "\n---------' Starte Check um %s (TV-Planer manuell) '---------" % self.uhrzeit SRLogger.writeLog("\n---------' Starte Check um %s (TV-Planer manuell) '---------\n" % self.uhrzeit, True) elif self.manuell: print "\n---------' Starte Check um %s (manuell) '---------" % self.uhrzeit SRLogger.writeLog("\n---------' Starte Check um %s (manuell) '---------\n" % self.uhrzeit, True) elif config.plugins.serienRec.tvplaner.value: print "\n---------' Starte Auto-Check um %s (TV-Planer auto) '---------" % self.uhrzeit SRLogger.writeLog("\n---------' Starte Auto-Check um %s (TV-Planer auto) '---------\n" % self.uhrzeit, True) else: print "\n---------' Starte Auto-Check um %s (auto)'---------" % self.uhrzeit SRLogger.writeLog("\n---------' Starte Auto-Check um %s (auto)'---------\n" % self.uhrzeit, True) if config.plugins.serienRec.showNotification.value in ("1", "3"): Notifications.AddPopup("SerienRecorder Suchlauf nach neuen Timern wurde gestartet.", MessageBox.TYPE_INFO, timeout=3, id="Suchlauf wurde gestartet") if config.plugins.serienRec.writeLogVersion.value: SRLogger.writeLog("STB Type: %s\nImage: %s" % (STBHelpers.getSTBType(), STBHelpers.getImageVersionString()), True) SRLogger.writeLog("SR Version: %s\nDatenbank Version: %s" % (config.plugins.serienRec.showversion.value, str(self.database.getVersion())), True) SRLogger.writeLog("Skin Auflösung: %s x %s" % (str(getDesktop(0).size().width()), str(getDesktop(0).size().height())), True) sMsg = "\nDEBUG Filter: " if config.plugins.serienRec.writeLogChannels.value: sMsg += "Senderliste " if config.plugins.serienRec.writeLogAllowedEpisodes.value: sMsg += "Episoden " if config.plugins.serienRec.writeLogAdded.value: sMsg += "Added " if config.plugins.serienRec.writeLogDisk.value: sMsg += "Disk " if config.plugins.serienRec.writeLogTimeRange.value: sMsg += "Tageszeit " if config.plugins.serienRec.writeLogTimeLimit.value: sMsg += "Zeitlimit " if config.plugins.serienRec.writeLogTimerDebug.value: sMsg += "Timer " SRLogger.writeLog(sMsg, True) self.markers = [] self.messageList = [] self.speedStartTime = time.clock() # teste Verbindung ins Internet if not testWebConnection(): SRLogger.writeLog("\nKeine Verbindung ins Internet. Check wurde abgebrochen!!\n", True) # Statistik self.speedEndTime = time.clock() speedTime = (self.speedEndTime - self.speedStartTime) SRLogger.writeLog("---------' Auto-Check beendet ( Ausführungsdauer: %3.2f Sek.)'---------" % speedTime, True) print "[SerienRecorder] ---------' Auto-Check beendet ( Ausführungsdauer: %3.2f Sek.)'---------" % speedTime from SerienRecorderTVPlaner import backupTVPlanerHTML backupTVPlanerHTML() global autoCheckFinished autoCheckFinished = True if config.plugins.serienRec.AutoBackup.value == "after": createBackup() # in den deep-standby fahren. self.askForDSB() return # Versuche Verzeichnisse zu erreichen try: SRLogger.writeLog("\nPrüfe konfigurierte Aufnahmeverzeichnisse:", True) recordDirectories = self.database.getRecordDirectories(config.plugins.serienRec.savetopath.value) for directory in recordDirectories: SRLogger.writeLog(" %s" % directory, True) os.path.exists(directory) except: SRLogger.writeLog("Es konnten nicht alle Aufnahmeverzeichnisse gefunden werden", True) # suche nach neuen Serien, Covern und Planer-Cache from twisted.internet import reactor from SerienRecorderSeriesPlanner import serienRecSeriesPlanner seriesPlanner = serienRecSeriesPlanner(self.manuell) reactor.callFromThread(seriesPlanner.updatePlanerData()) #if config.plugins.serienRec.downloadCover.value: # reactor.callFromThread(self.getMarkerCover()) self.startCheckTransmissions()
def __init__(self, session, manuell, tvplaner_manuell=False): assert not serienRecCheckForRecording.instance, "Go is a singleton class!" serienRecCheckForRecording.instance = self self.session = session self.database = None self.manuell = manuell self.tvplaner_manuell = tvplaner_manuell print "[SerienRecorder] 1__init__ tvplaner_manuell: ", tvplaner_manuell self.newSeriesOrEpisodesFound = False self.senderListe = {} self.markers = [] self.messageList = [] self.speedStartTime = 0 self.speedEndTime = 0 self.konflikt = "" self.count_url = 0 self.countSerien = 0 self.countActivatedSeries = 0 self.noOfRecords = int(config.plugins.serienRec.NoOfRecords.value) self.emailData = None SRLogger.checkFileAccess() lt = time.localtime() self.uhrzeit = time.strftime("%d.%m.%Y - %H:%M:%S", lt) SRLogger.writeLog("\n---------' %s '---------" % self.uhrzeit, True) self.daypage = 0 global refreshTimer if refreshTimer: refreshTimer.stop() refreshTimer = None global refreshTimerConnection if refreshTimerConnection: refreshTimerConnection = None self.tempDB = None if config.plugins.serienRec.autochecktype.value == "0": SRLogger.writeLog("Auto-Check ist deaktiviert - nur manuelle Timersuche", True) elif config.plugins.serienRec.autochecktype.value == "1": SRLogger.writeLog("Auto-Check ist aktiviert - er wird zur gewählten Uhrzeit gestartet", True) elif config.plugins.serienRec.autochecktype.value == "2": SRLogger.writeLog("Auto-Check ist aktiviert - er wird nach dem EPGRefresh ausgeführt", True) if not self.manuell and config.plugins.serienRec.autochecktype.value == "1" and config.plugins.serienRec.timeUpdate.value: deltatime = self.getNextAutoCheckTimer(lt) refreshTimer = eTimer() if isDreamOS(): refreshTimerConnection = refreshTimer.timeout.connect(self.startCheck) else: refreshTimer.callback.append(self.startCheck) refreshTimer.start(((deltatime * 60) + random.randint(0, int(config.plugins.serienRec.maxDelayForAutocheck.value)*60)) * 1000, True) print "[SerienRecorder] Auto-Check Uhrzeit-Timer gestartet." print "[SerienRecorder] Verbleibende Zeit: %s Stunden" % (TimeHelpers.td2HHMMstr(datetime.timedelta(minutes=deltatime+int(config.plugins.serienRec.maxDelayForAutocheck.value)))) SRLogger.writeLog("Verbleibende Zeit bis zum nächsten Auto-Check: %s Stunden\n" % TimeHelpers.td2HHMMstr(datetime.timedelta(minutes=deltatime+int(config.plugins.serienRec.maxDelayForAutocheck.value))), True) if self.manuell: print "[SerienRecorder] checkRecTimer manuell." self.startCheck() self.manuell = False self.tvplaner_manuell = False else: try: from Plugins.Extensions.EPGRefresh.EPGRefresh import epgrefresh self.epgrefresh_instance = epgrefresh config.plugins.serienRec.autochecktype.addNotifier(self.setEPGRefreshCallback) except Exception as e: SRLogger.writeLog("EPGRefresh plugin nicht installiert! " + str(e), True)
def __init__(self, session): serienRecBaseScreen.__init__(self, session) Screen.__init__(self, session) HelpableScreen.__init__(self) self.session = session self.serienRecChannelList = [] self.stbChannelList = [] self.selected_sender = None self.skin = None self.displayMode = 2 self.chooseMenuList = None self.chooseMenuList_popup = None self.chooseMenuList_popup2 = None from SerienRecorder import serienRecDataBaseFilePath from SerienRecorderDatabase import SRDatabase self.database = SRDatabase(serienRecDataBaseFilePath) from difflib import SequenceMatcher self.sequenceMatcher = SequenceMatcher(" ".__eq__, "", "") self["actions"] = HelpableActionMap( self, "SerienRecorderActions", { "ok": (self.keyOK, "Popup-Fenster zur Auswahl des STB-Sender öffnen"), "cancel": (self.keyCancel, "zurück zur Serienplaner-Ansicht"), "red": (self.keyRed, "umschalten ausgewählter Sender für Timererstellung aktiviert/deaktiviert" ), "red_long": (self.keyRedLong, "ausgewählten Sender aus der Channelliste endgültig löschen"), "green": (self.keyGreen, "Sender-Zuordnung aktualisieren"), "blue": (self.keyBlue, "Automatische Sender-Zuordnung"), "menu": (self.channelSetup, "Menü für Sender-Einstellungen öffnen"), "menu_long": (self.recSetup, "Menü für globale Einstellungen öffnen"), "left": (self.keyLeft, "zur vorherigen Seite blättern"), "right": (self.keyRight, "zur nächsten Seite blättern"), "up": (self.keyUp, "eine Zeile nach oben"), "down": (self.keyDown, "eine Zeile nach unten"), "0": (self.readLogFile, "Log-File des letzten Suchlaufs anzeigen"), "3": (self.showProposalDB, "Liste der Serien/Staffel-Starts anzeigen"), "6": (self.showConflicts, "Liste der Timer-Konflikte anzeigen"), "7": (self.showWishlist, "Merkzettel (vorgemerkte Folgen) anzeigen"), "8": (self.checkChannels, "Sender prüfen"), "9": (self.resetChannelList, "Alle Zuordnungen löschen"), }, -1) self.helpList[0][2].sort() self["helpActions"] = ActionMap([ "SerienRecorderActions", ], { "displayHelp": self.showHelp, "displayHelp_long": self.showManual, }, 0) self.setupSkin() self.modus = "list" self.changesMade = False self.timer_default = eTimer() if isDreamOS(): self.timer_default_conn = self.timer_default.timeout.connect( self.showChannels) else: self.timer_default.callback.append(self.showChannels) self.onLayoutFinish.append(self.__onLayoutFinished) self.onClose.append(self.__onClose) self.onLayoutFinish.append(self.setSkinProperties)
def __init__(self, session): serienRecBaseScreen.__init__(self, session) Screen.__init__(self, session) HelpableScreen.__init__(self) self.modus = "menu_list" self.session = session self.picload = ePicLoad() self.ErrorMsg = "unbekannt" self.piconLoader = PiconLoader() self.picloader = None self.filter = False self.database = SRDatabase(SerienRecorder.serienRecDataBaseFilePath) self.changesMade = False self["actions"] = HelpableActionMap( self, "SerienRecorderActions", { "ok": (self.keyOK, "Marker für die ausgewählte Serie hinzufügen"), "cancel": (self.keyCancel, "zurück zur vorherigen Ansicht"), "left": (self.keyLeft, "zur vorherigen Seite blättern"), "right": (self.keyRight, "zur nächsten Seite blättern"), "up": (self.keyUp, "eine Zeile nach oben"), "down": (self.keyDown, "eine Zeile nach unten"), "menu": (self.recSetup, "Menü für globale Einstellungen öffnen"), "yellow": (self.keyYellow, "Zeige nur Serien-Starts"), "startTeletext": (self.wunschliste, "Informationen zur ausgewählten Serie auf Wunschliste anzeigen" ), "0": (self.readLogFile, "Log-File des letzten Suchlaufs anzeigen"), "2": (self.changeTVDBID, "TVDB-ID ändern"), "4": (self.serieInfo, "Informationen zur ausgewählten Serie anzeigen"), "6": (self.showConflicts, "Liste der Timer-Konflikte anzeigen"), "7": (self.showWishlist, "Merkzettel (vorgemerkte Folgen) anzeigen"), }, -1) self.helpList[0][2].sort() self["helpActions"] = ActionMap([ "SerienRecorderActions", ], { "displayHelp": self.showHelp, "displayHelp_long": self.showManual, }, 0) self.setupSkin() self.timer_default = eTimer() if isDreamOS(): self.timer_default_conn = self.timer_default.timeout.connect( self.readProposal) else: self.timer_default.callback.append(self.readProposal) self.proposalList = [] self.transmissions = {} self.serviceRefs = self.database.getActiveServiceRefs() self.onLayoutFinish.append(self.setSkinProperties) self.onLayoutFinish.append(self.__onLayoutFinish) self.onClose.append(self.__onClose)