SkyRecorder (Sky Anytime) v1.6.1 (28.10.2013)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • homeplayer schrieb:

    troox schrieb:

    Ich kann meine beiden geänderten Dateien für die 1.6.1 hier gern anhängen, falls das hilft. Ich verfolge den Beitrag nur sporadisch und lege nicht wirklich wert auf angezeigte Cover's etc. Aber immerhin legt die hier laufende v1.6.1 Timer an, und das ist wichtig
    Das finde ich eine gute Idee.

    Wäre schön, wenn du das machen würdest, damit ich meine 1.6.1 wieder ans laufen bekomme.
    Bitte schön, hier die geänderten Dateien für die 1.6.1 - viel erfolg

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ditschi1691 ()

  • hier eine IPK des 1.6.1 fix

    könnte ein Mod diese 3 varianten Bitte in Post 1 ersetzen/einfügen?
    sonst muss man später nur suchen
    und ein Admin die v1.6.2 oder die v1.7.2 je nach dem welche stabilier läuft, ist mal im Feed einsetzen?
    die v1.2.3 vom Feed ist ja so nicht mehr lauffähig.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von ditschi1691 ()

  • SkyRecorder 1.7.0

    FullHD Skin + Patch SkyGo Guide + API

    Installation

    IPK installieren

    und den RAR Inhalt via FTP einspielen

    Eigener API Code muss noch via Hand eingetragen werden (SkyTheMovieDB.py)

    Viel Spaß damit

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von ditschi1691 ()

  • SkyRecorder keine Aktualisierung mehr!

    Hallo Zusammen,

    seit dem 21.11.18 aktualisiert sich der SkyRecorder nicht mehr. Auch ein manuelles Update bringt kein Erfolg. Wird dieses angestoßen, kommt die Meldung, dass im Hintergrund schon eines laufen würde.
    Neustart der Box etc ebenfalls ohne Erfolg?

    Hat jemand eine Idee?

    Image.jpeg

    Vorab vielen DANK.

    Grüße agent
  • SkyRecorder 1.7.2 Speicherort Datenbank

    Hallo Zusammen,

    habe von der 1.2.3 auf die o. g. aktuelle Version gewechselt.
    Erhalte jetzt immer den Hinweis, dass die Datei zur Datenbank auf der Festplatte liegen sollte.
    Hierzu habe ich zwei Fragen:
    1. Ist die Änderung des Pfades zwingend notwendig (was habe ich für einen Vorteil)
    2. wie ändere ich den Pfad und es es sinnvoll einen extra Ordner anzulegen auf der HDD?

    Vorab vielen DANK für eine Antwort.

    Grüße agent
  • Die 4K Boxen haben ausreichend Flashspeicher, sodaß man den Speicherort der DB im Flash belassen könnte.
    Möchte allerdings diese Meldung loswerden und lege sie daher auf die HDD.
    Wenn den Speicherort der DB ändern willst, mußt im Menue des SKR die automatische Aktualisierung deaktivieren.
    Dann kannst den Speicherort anpassen.
    Dateien
    • SKR Menue1.png

      (144,46 kB, 33 mal heruntergeladen, zuletzt: )
    Nehmt das Leben nicht zu ernst, ihr kommt eh nicht lebend raus!
  • was muss ich hier umändern, damit man beim runter scrollen im Menü automatisch wieder oben ankommt?
    und umgekehrt wenn ich im Menü nach oben scrolle beim letzten eintrag ankomme?
    in allen anderen screens klappt das ja sonst auch.
    kennt sich da jemand mit aus?

    Quellcode: SkyRecorderSettings.py

    1. #-*- coding: utf-8 -*-
    2. from Components.ConfigList import ConfigListScreen
    3. from Screens.Screen import Screen
    4. from Tools.Directories import fileExists, resolveFilename, SCOPE_PLUGINS
    5. from Components.ActionMap import NumberActionMap, ActionMap
    6. from Components.Button import Button
    7. from Components.Label import Label
    8. from Screens.MessageBox import MessageBox
    9. from Components.ScrollLabel import ScrollLabel
    10. from Tools.LoadPixmap import LoadPixmap
    11. from Components.config import config, ConfigSelection, getConfigListEntry, ConfigText, ConfigDirectory, ConfigYesNo, ConfigSelection, ConfigSubsection, ConfigPIN, configfile, ConfigInteger, NoSave, ConfigNothing, ConfigClock
    12. from Components.UsageConfig import preferredTimerPath, preferredInstantRecordPath
    13. from Tools.Directories import resolveFilename, SCOPE_HDD
    14. from enigma import eTimer
    15. import re
    16. import os
    17. import sys
    18. import shutil
    19. import time
    20. # our custom classes
    21. from SkyMainFunctions import getPluginPath, getCurrentTimestamp, getDateTimeFromTimestamp2, setWecker
    22. from SkyGetTvGuide import SkyGetTvGuide
    23. from SkyRunAutocheck import SkyRunAutocheck
    24. from SkySelectAnytimeFolder import SkySelectAnytimeFolder
    25. from SkySelectSkydbFolder import SkySelectSkydbFolder
    26. from SkyAddedEdit import SkyAddedEdit
    27. from SkySql import *
    28. # popup screen
    29. from SkyPopUp import SkyHelpAll
    30. # moved from main
    31. from SkyChannelSelect import SkyChannelSelect
    32. from SkyGenreSelect import SkyGenreSelect
    33. pluginName = "SkyRecorder"
    34. pluginVersion = "v1.8.0"
    35. contentSize = 20
    36. pluginfolder = getPluginPath()
    37. defaultmoviefolder = resolveFilename(SCOPE_HDD)
    38. recordings_base_folder = "SkyRecorder"
    39. anytimefolder = defaultmoviefolder #+ recordings_base_folder + "/"
    40. ### start config
    41. config.plugins.skyrecorder = ConfigSubsection()
    42. config.plugins.skyrecorder.auto_recordtimer_entries = ConfigYesNo(default = False)
    43. config.plugins.skyrecorder.pluginname = ConfigText(pluginName)
    44. config.plugins.skyrecorder.version = ConfigText(pluginVersion)
    45. config.plugins.skyrecorder.contentsize = ConfigInteger(20)
    46. config.plugins.skyrecorder.timerdays_allowed = ConfigSelection(
    47. default = "['all']",
    48. choices = [
    49. ("['all']", _("jeden Wochentag")),
    50. ("['Mon','Tue','Wed','Thu','Fri']", _("Montag bis Freitag")),
    51. ("['Sun','Sat']", _("Samstag und Sonntag")),
    52. ("['Sun','Fri','Sat']", _("Freitag, Samstag und Sonntag"))])
    53. config.plugins.skyrecorder.guide_days_to_scan = ConfigSelection(
    54. default = "1",
    55. choices = [
    56. ("1", _("einen Tag (empfohlen)")),
    57. ("2", _("zwei Tage")),
    58. ("3", _("drei Tage")),
    59. ("4", _("vier Tage")),
    60. ("5", _("fünf Tage")),
    61. ("6", _("sechs Tage")),
    62. ("7", _("eine Woche")),
    63. ("14", _("zwei Wochen"))])
    64. config.plugins.skyrecorder.fromtime = ConfigInteger(00, (00,23))
    65. config.plugins.skyrecorder.totime = ConfigInteger(23, (00,23))
    66. config.plugins.skyrecorder.autoupdate_database = ConfigYesNo(default = False)
    67. config.plugins.skyrecorder.database_update_time = ConfigClock(default = ((9 * 60 + 0) * 60))
    68. config.plugins.skyrecorder.anytime_skin = ConfigSelection(
    69. default = "original",
    70. choices = [
    71. ("elgato", _("elgato")),
    72. ("metrix", _("metrix")),
    73. ("original", _("original")),
    74. ("iflatfhd", _("iflatfhd"))])
    75. # store our last check-timestamp. needed for our wakeMeUp function (see below at the end of this script)
    76. config.plugins.skyrecorder.lastchecked = ConfigInteger(0)
    77. config.plugins.skyrecorder.next_update = ConfigInteger(-1)
    78. config.plugins.skyrecorder.wakeup = ConfigYesNo(default = False)
    79. config.plugins.skyrecorder.after_update = ConfigSelection(
    80. default = "none",
    81. choices = [
    82. ("none", ("nichts")),
    83. ("standby", ("Standby")),
    84. ("deepstandby", ("STB herunterfahren"))])
    85. config.plugins.skyrecorder.fake_entry = NoSave(ConfigNothing())
    86. config.plugins.skyrecorder.anytimefolder = ConfigText(default=anytimefolder)
    87. config.plugins.skyrecorder.create_dirtree = ConfigYesNo(default = True)
    88. #config.plugins.skyrecorder.skydb = ConfigText(default=defaultmoviefolder + "skydb.db")
    89. config.plugins.skyrecorder.skydb = ConfigText(default=pluginfolder + "/skydb.db")
    90. config.plugins.skyrecorder.silent_timer_mode = ConfigYesNo(default = False)
    91. config.plugins.skyrecorder.timer_mode = ConfigSelection(default = "0", choices = [("0", _("Aufnahme")),("1", _("Erinnerung"))])
    92. config.plugins.skyrecorder.msgtimeout = ConfigInteger(3)
    93. config.plugins.skyrecorder.max_per_page = ConfigInteger(10,(1,9999))
    94. config.plugins.skyrecorder.mainlisttype = ConfigSelection(default = "0", choices = [("0", _("einfach")),("1", _("erweitert"))])
    95. # let us set maring_before and margin_after in the plugin itself
    96. # so we have better control of this values if the user change the system margins after adding timers
    97. try:
    98. default_before = int(config.recording.margin_before.value)
    99. default_after = int(config.recording.margin_after.value)
    100. except Exception:
    101. default_before = 0
    102. default_after = 0
    103. config.plugins.skyrecorder.margin_before = ConfigInteger(default_before, (00,99))
    104. config.plugins.skyrecorder.margin_after = ConfigInteger(default_after, (00,99))
    105. # let us choose from a list of ordering options for the main screen
    106. config.plugins.skyrecorder.main_list_order = ConfigSelection(
    107. default = "channel",
    108. choices = [
    109. ("channel", ("Sender gruppiert von A-Z")),
    110. ("status", ("nach Status")),
    111. ("begin_asc", ("Startzeit aufsteigend")),
    112. ("begin_desc", ("Startzeit absteigend")),
    113. ("title", ("Sendungstitel von A-Z")),
    114. ("genre", ("Nach Genre"))])
    115. config.plugins.skyrecorder.short_record_filenames = ConfigYesNo(default = False)
    116. config.plugins.skyrecorder.only_active_genres = ConfigYesNo(default = False)
    117. config.plugins.skyrecorder.only_new_events = ConfigYesNo(default = True)
    118. config.plugins.skyrecorder.only_active_channels = ConfigYesNo(default = True)
    119. config.plugins.skyrecorder.max_parallel_timers = ConfigSelection(
    120. default = "1000",
    121. choices = [
    122. ("1000", _("automatisch")),
    123. ("1", _("eine Aufnahme gleichzeitig")),
    124. ("2", _("zwei Aufnahmen gleichzeitig")),
    125. ("3", _("drei Aufnahmen gleichzeitig")),
    126. ("4", _("vier Aufnahmen gleichzeitig"))])
    127. config.plugins.skyrecorder.rename_matched_movies = ConfigYesNo(default = True)
    128. config.plugins.skyrecorder.autoupdate_tmdb = ConfigYesNo(default = True)
    129. config.plugins.skyrecorder.apikey = ConfigText("a95991e55896a9af90eb954755a01b87")
    130. ### end config
    131. class SkyRecorderSettings(Screen, ConfigListScreen):
    132. def __init__(self, session, firstRun=False):
    133. self.session = session
    134. path = "%s/skins/%s/screen_settings.xml" % (getPluginPath(), config.plugins.skyrecorder.anytime_skin.value)
    135. with open(path, "r") as f:
    136. self.skin = f.read()
    137. f.close()
    138. Screen.__init__(self, session)
    139. self.createConfigList()
    140. ConfigListScreen.__init__(self, self.configlist, session = self.session)
    141. self.popUpScreen = self.session.instantiateDialog(SkyHelpAll)
    142. self.popUpIsVisible = False
    143. self["actions"] = ActionMap(["OkCancelActions","ShortcutActions", "EPGSelectActions", "WizardActions", "ColorActions", "NumberActions", "MenuActions", "MoviePlayerActions","HelpActions"], {
    144. "ok": self.keyOK,
    145. "cancel": self.keyCancel,
    146. "nextBouquet" : self.log_up,
    147. "prevBouquet" : self.log_down,
    148. "blue" : self.askAddRecordimerNow,
    149. "menu" : self.fullLog,
    150. "yellow" : self.readAdded,
    151. "green" : self.saveSettings,
    152. "red" : self.askCleanUpDatabase,
    153. "info" : self.askUpdateDatabase,
    154. "displayHelp" : self.togglePopUp
    155. }, -1)
    156. self["disabled_actions"] = ActionMap(["OkCancelActions","ShortcutActions", "EPGSelectActions", "WizardActions", "ColorActions", "NumberActions", "MenuActions", "MoviePlayerActions","HelpActions"],
    157. {
    158. "ok": self.keyCancel,
    159. "cancel": self.keyCancel,
    160. "up" : self.help_page_up,
    161. "down" : self.help_page_down,
    162. "right" : self.ignoreKey,
    163. "left" : self.ignoreKey,
    164. "nextBouquet" : self.help_page_up,
    165. "prevBouquet" : self.help_page_down,
    166. "displayHelp" : self.togglePopUp
    167. }, -1)
    168. self["disabled_actions"].setEnabled(False)
    169. self['title'] = Label(pluginName + " " + pluginVersion)
    170. self["log"] = ScrollLabel()
    171. self.sky_log_path = "/usr/lib/enigma2/python/Plugins/Extensions/skyrecorder/sky_log"
    172. # start reading the last 7 lines from our logfile every second
    173. self.tempTimer = None
    174. self.onLayoutFinish.append(self.startReadLog)
    175. #self.onLayoutFinish.append(self.readLog)
    176. def createConfigList(self):
    177. self.configlist = []
    178. if config.plugins.skyrecorder.lastchecked and config.plugins.skyrecorder.lastchecked.value:
    179. lastUpdate = getDateTimeFromTimestamp2(config.plugins.skyrecorder.lastchecked.value)
    180. else:
    181. lastUpdate = ""
    182. if config.plugins.skyrecorder.next_update and config.plugins.skyrecorder.next_update.value > 0:
    183. nextUpdate = getDateTimeFromTimestamp2(config.plugins.skyrecorder.next_update.value)
    184. else:
    185. nextUpdate = ""
    186. self.configlist.append(getConfigListEntry("----- Datenbank (letztes Update: {0}) -----".format(lastUpdate), config.plugins.skyrecorder.fake_entry))
    187. self.configlist.append(getConfigListEntry("Datenbank automatisch aktualisieren:", config.plugins.skyrecorder.autoupdate_database))
    188. self.autoUpdateTime = getConfigListEntry("Uhrzeit für Updates (nächstes Update: {0}):".format(nextUpdate), config.plugins.skyrecorder.database_update_time)
    189. self.configlist.append(self.autoUpdateTime)
    190. self.configlist.append(getConfigListEntry("Nur Neuerscheinungen suchen:", config.plugins.skyrecorder.only_new_events))
    191. self.configlist.append(getConfigListEntry("Nur aktivierte Sender suchen:", config.plugins.skyrecorder.only_active_channels))
    192. self.configlist.append(getConfigListEntry("Wie weit im Voraus laden:", config.plugins.skyrecorder.guide_days_to_scan))
    193. self.get_skydbfolder = getConfigListEntry("Datenbank:", NoSave(ConfigSelection(default="0", choices = [("0", config.plugins.skyrecorder.skydb.value)])))
    194. self.configlist.append(self.get_skydbfolder)
    195. self.configlist.append(getConfigListEntry("----- Timereinstellungen -----", config.plugins.skyrecorder.fake_entry))
    196. self.configlist.append(getConfigListEntry("Timer automatisch hinzufügen:", config.plugins.skyrecorder.auto_recordtimer_entries ))
    197. self.configlist.append(getConfigListEntry("Timermodus:", config.plugins.skyrecorder.timer_mode))
    198. self.configlist.append(getConfigListEntry("Timereinträge erlaubt für:", config.plugins.skyrecorder.timerdays_allowed))
    199. self.configlist.append(getConfigListEntry("Zeitspanne von:", config.plugins.skyrecorder.fromtime))
    200. self.configlist.append(getConfigListEntry("Zeitspanne bis:", config.plugins.skyrecorder.totime))
    201. self.configlist.append(getConfigListEntry("Timervorlauf (in min.):", config.plugins.skyrecorder.margin_before))
    202. self.configlist.append(getConfigListEntry("Timernachlauf (in min.):", config.plugins.skyrecorder.margin_after))
    203. self.configlist.append(getConfigListEntry("Timerbegrenzung:", config.plugins.skyrecorder.max_parallel_timers))
    204. self.configlist.append(getConfigListEntry("Keine Timermeldungen anzeigen:", config.plugins.skyrecorder.silent_timer_mode))
    205. self.configlist.append(getConfigListEntry("----- Allgemein -----", config.plugins.skyrecorder.fake_entry))
    206. self.edit_channellist = getConfigListEntry("Senderliste", config.plugins.skyrecorder.fake_entry)
    207. self.configlist.append(self.edit_channellist)
    208. self.edit_genrelist = getConfigListEntry("Genreliste (für automatische Timer)", config.plugins.skyrecorder.fake_entry)
    209. self.configlist.append(self.edit_genrelist)
    210. self.configlist.append(getConfigListEntry("Nur aktivierte Genre in Hauptliste anzeigen:", config.plugins.skyrecorder.only_active_genres))
    211. self.configlist.append(getConfigListEntry("Deep Standby beenden für Timerupdates:", config.plugins.skyrecorder.wakeup))
    212. self.configlist.append(getConfigListEntry("Aktion nach Timerupdates:", config.plugins.skyrecorder.after_update))
    213. self.get_anytimefolder = getConfigListEntry("Aufnahmeordner (Basis):", NoSave(ConfigSelection(default="0", choices = [("0", config.plugins.skyrecorder.anytimefolder.value)])))
    214. self.configlist.append(self.get_anytimefolder)
    215. self.configlist.append(getConfigListEntry("SkyRecorder Ordnerstruktur für Aufnahmen verwenden:", config.plugins.skyrecorder.create_dirtree))
    216. #self.configlist.append(getConfigListEntry("kurze Dateinamen für Aufnahmen verwenden:", config.plugins.skyrecorder.short_record_filenames))
    217. self.configlist.append(getConfigListEntry("Filme im Archiv nach TMDb-Name umbenennen:", config.plugins.skyrecorder.rename_matched_movies))
    218. self.configlist.append(getConfigListEntry("TMDb Infos automatisch beim Datenbankupdate abrufen:", config.plugins.skyrecorder.autoupdate_tmdb))
    219. self.configlist.append(getConfigListEntry("API-Key f�r TMDB:", config.plugins.skyrecorder.apikey))
    220. self.configlist.append(getConfigListEntry("Sortierung der Sendungsliste:", config.plugins.skyrecorder.main_list_order))
    221. self.configlist.append(getConfigListEntry("maximale Einträge pro Seite:", config.plugins.skyrecorder.max_per_page))
    222. #self.configlist.append(getConfigListEntry("Darstellung der Sendungsliste:", config.plugins.skyrecorder.mainlisttype))
    223. self.configlist.append(getConfigListEntry("Skinauswahl:", config.plugins.skyrecorder.anytime_skin))
    224. self.reset_logfile = getConfigListEntry("Logdatei zurücksetzen", config.plugins.skyrecorder.fake_entry)
    225. self.configlist.append(self.reset_logfile)
    226. self.cleanup_tmdb_data = getConfigListEntry("Alle TMDb-Daten aus skydb.db löschen", config.plugins.skyrecorder.fake_entry)
    227. self.configlist.append(self.cleanup_tmdb_data)
    228. self.skydb_vacuum = getConfigListEntry("Datenbank optimieren", config.plugins.skyrecorder.fake_entry)
    229. self.configlist.append(self.skydb_vacuum)
    230. def ignoreKey(self):
    231. pass
    232. def togglePopUp(self,hide_me=False):
    233. if self.popUpIsVisible or hide_me:
    234. self.popUpScreen.hide()
    235. self.popUpIsVisible = False
    236. self["config_actions"].setEnabled(True)
    237. self["actions"].setEnabled(True)
    238. self["disabled_actions"].setEnabled(False)
    239. return
    240. self["config_actions"].setEnabled(False)
    241. self["actions"].setEnabled(False)
    242. self["disabled_actions"].setEnabled(True)
    243. self.popUpScreen.show()
    244. self.popUpScreen.loadHelpText()
    245. self.popUpIsVisible = True
    246. def startReadLog(self):
    247. if not self.tempTimer:
    248. self.tempTimer = eTimer()
    249. self.tempTimer.callback.append(self.readLog)
    250. self.tempTimer.stop()
    251. self.tempTimer.start(1000, False)
    252. def fullLog(self):
    253. self.readLog(10000)
    254. def readLog(self, maxlines=21):
    255. try:
    256. if SkyGetTvGuide.instance:
    257. if not SkyGetTvGuide.instance.IS_RUNNING:
    258. self.changedEntry()
    259. if self.tempTimer:
    260. self.tempTimer.stop()
    261. except Exception:
    262. sys.exc_clear()
    263. if fileExists(self.sky_log_path):
    264. n = 0
    265. text = ""
    266. with open(self.sky_log_path, "r") as f:
    267. for rawData in reversed(f.readlines()):
    268. data = re.findall('"(.*?)"', rawData, re.S)
    269. if data:
    270. dump = "%s\n" % data[0]
    271. text += dump
    272. n += 1
    273. if n >= maxlines:
    274. break
    275. self["log"].setText(text)
    276. rawData = None
    277. text = None
    278. def changeTimer(self):
    279. self.startReadLog()
    280. if config.plugins.skyrecorder.autoupdate_database.value:
    281. print "[skyrecorder] checktimer."
    282. try:
    283. if SkyGetTvGuide.instance.refreshTimer:
    284. SkyGetTvGuide.instance.refreshTimer.stop()
    285. SkyGetTvGuide.instance.refreshTimer = None
    286. SkyGetTvGuide.instance.refreshTimer = eTimer()
    287. SkyGetTvGuide.instance.refreshTimer.callback.append(SkyGetTvGuide.instance.start)
    288. interval = int(config.plugins.skyrecorder.next_update.value) - getCurrentTimestamp()
    289. if interval > 10 and interval <= 5184000: # 10 seconds buffer, but lower or equal than 1 day
    290. #SkyGetTvGuide.instance.timerinterval = interval * 1000 # milleseconds
    291. #SkyGetTvGuide.instance.refreshTimer.start(SkyGetTvGuide.instance.timerinterval)
    292. SkyGetTvGuide.instance.timerinterval = interval
    293. SkyGetTvGuide.instance.refreshTimer.startLongTimer(SkyGetTvGuide.instance.timerinterval)
    294. else:
    295. #config.plugins.skyrecorder.lastchecked.value = getCurrentTimestamp()
    296. #config.plugins.skyrecorder.lastchecked.save()
    297. #configfile.save()
    298. SkyGetTvGuide(self.session, False) # do not start it right now, we can run it manually, if we want to
    299. except AttributeError:
    300. # was not running - start it now
    301. #config.plugins.skyrecorder.lastchecked.value = getCurrentTimestamp()
    302. #config.plugins.skyrecorder.lastchecked.save()
    303. #configfile.save()
    304. SkyGetTvGuide(self.session, False) # do not start it right now, we can run it manually, if we want to
    305. else:
    306. try:
    307. if SkyGetTvGuide.instance.refreshTimer:
    308. SkyGetTvGuide.instance.refreshTimer.stop()
    309. SkyGetTvGuide.instance.refreshTimer = None
    310. except AttributeError:
    311. # was never running
    312. print "[skyrecorder] changeTimer did nothing"
    313. def log_up(self):
    314. self["log"].pageUp()
    315. def log_down(self):
    316. self["log"].pageDown()
    317. def help_page_up(self):
    318. self.popUpScreen["text"].pageUp()
    319. def help_page_down(self):
    320. self.popUpScreen["text"].pageDown()
    321. def readAdded(self):
    322. self.session.openWithCallback(self.changedEntry, SkyAddedEdit)
    323. def keyOK(self):
    324. self.togglePopUp(True)
    325. if self["config"].getCurrent() == self.get_anytimefolder:
    326. self.session.openWithCallback(self.gotAnytimeFolder, SkySelectAnytimeFolder, config.plugins.skyrecorder.anytimefolder.value)
    327. elif self["config"].getCurrent() == self.get_skydbfolder:
    328. if config.plugins.skyrecorder.autoupdate_database and config.plugins.skyrecorder.autoupdate_database.saved_value:
    329. message = self.session.open(MessageBox, _("Achtung!\nBitte zuerst die automatische Datenbankaktualisierung beenden und das Plugin neu starten. Danach kann der Speicherort der Datenbank geändert werden."), MessageBox.TYPE_INFO, timeout=-1)
    330. return
    331. self.session.openWithCallback(self.gotSkydbFolder, SkySelectSkydbFolder, config.plugins.skyrecorder.skydb.value)
    332. elif self["config"].getCurrent() == self.cleanup_tmdb_data:
    333. mymsg = "{0}\nSollen alle TMDb-Daten jetzt gelöscht werden?\nAchtung, der Vorgang kann die STB für eine Zeit lang blockieren.".format(pluginName)
    334. self.session.openWithCallback(self.cleanupTMDbData, MessageBox, _(mymsg), MessageBox.TYPE_YESNO, timeout=-1, default=True)
    335. elif self["config"].getCurrent() == self.skydb_vacuum:
    336. mymsg = "{0}\nSoll die Datenbank jetzt optimiert werden?\nAchtung, der Vorgang kann die STB für eine Zeit lang blockieren.".format(pluginName)
    337. self.session.openWithCallback(self.skydbVacuum, MessageBox, _(mymsg), MessageBox.TYPE_YESNO, timeout=-1, default=True)
    338. elif self["config"].getCurrent() == self.reset_logfile:
    339. mymsg = "{0}\nSoll die Logdatei jetzt gelöscht werden?".format(pluginName)
    340. self.session.openWithCallback(self.resetLogfile, MessageBox, _(mymsg), MessageBox.TYPE_YESNO, timeout=-1, default=True)
    341. elif self["config"].getCurrent() == self.edit_channellist:
    342. self.session.openWithCallback(self.changedEntry, SkyChannelSelect)
    343. elif self["config"].getCurrent() == self.edit_genrelist:
    344. self.session.openWithCallback(self.changedEntry, SkyGenreSelect)
    345. def resetLogfile(self,canstart=True):
    346. if not canstart:
    347. return
    348. print "[skyrecorder] reset logfile."
    349. with open(self.sky_log_path , "w") as f:
    350. f.write('')
    351. self.changedEntry()
    352. self.startReadLog()
    353. def cleanupTMDbData(self,canstart=True):
    354. if not canstart:
    355. return
    356. print "[skyrecorder] cleanup skydb.db TMDb-data"
    357. sql.cleanupTMDbData(False)
    358. self.changedEntry()
    359. self.startReadLog()
    360. def skydbVacuum(self,canstart=True):
    361. if not canstart:
    362. return
    363. print "[skyrecorder] running VACUUM on skydb.db"
    364. sql.shrinkDatabase()
    365. self.changedEntry()
    366. self.startReadLog()
    367. def buildDirTree(self,my_base_folder=None):
    368. if not my_base_folder:
    369. return False
    370. if not config.plugins.skyrecorder.create_dirtree.value:
    371. return True
    372. if not os.path.exists(my_base_folder):
    373. try:
    374. os.makedirs(my_base_folder, mode=0777)
    375. except Exception:
    376. return False
    377. try:
    378. sql.cur.execute('SELECT SQLITE_VERSION()')
    379. except Exception:
    380. sys.exc_clear()
    381. try:
    382. sql.connect()
    383. except Exception:
    384. return False
    385. my_dirs = sql.getGroupnames()
    386. if not my_dirs:
    387. return False
    388. for t_row in my_dirs:
    389. a_dir = list(t_row)
    390. a_dir = str(a_dir[0])
    391. group_dir = os.path.join(my_base_folder, a_dir)
    392. if not os.path.exists(group_dir):
    393. try:
    394. os.makedirs(group_dir, mode=0777)
    395. except Exception:
    396. return False
    397. return True
    398. def gotAnytimeFolder(self, res):
    399. if res is not None:
    400. if not config.plugins.skyrecorder.create_dirtree.value:
    401. config.plugins.skyrecorder.anytimefolder.value = res
    402. config.plugins.skyrecorder.anytimefolder.save()
    403. else:
    404. test_str = res.split("/")[-2:-1][0].lower()
    405. if test_str != recordings_base_folder.lower():
    406. if test_str == "":
    407. res += "/" + recordings_base_folder + "/"
    408. else:
    409. res += recordings_base_folder + "/"
    410. config.plugins.skyrecorder.anytimefolder.value = res
    411. config.plugins.skyrecorder.anytimefolder.save()
    412. # we got a new folder, lets try to build the dirtree for our recordings
    413. retval = self.buildDirTree(config.plugins.skyrecorder.anytimefolder.value)
    414. if not retval:
    415. self.session.open(MessageBox, _("{0}\nKonnte den Verzeichnisbaum für die Aufnahmen nicht erstellen.".format(pluginName)), MessageBox.TYPE_INFO, timeout=-1)
    416. self.changedEntry()
    417. def askOverwriteSkydb(self,dbpath):
    418. mymsg = "{0}\nEs befindet sich schon eine skydb.db in '{1}.'\nSoll sie überschrieben werden?".format(pluginName,dbpath)
    419. self.session.openWithCallback(self.confirmOverwriteSkydb, MessageBox, _(mymsg), MessageBox.TYPE_YESNO, timeout=-1, default=True)
    420. def confirmOverwriteSkydb(self,result):
    421. return result
    422. def gotSkydbFolder(self, res):
    423. # check if we have to create the database from scratch
    424. retval = None
    425. can_delete = True
    426. if res is not None:
    427. if not os.path.exists(res):
    428. return
    429. try:
    430. currentdb = config.plugins.skyrecorder.skydb.value
    431. except Exception:
    432. sys.exc_clear()
    433. currentdb = getPluginPath() + "/skydb.db"
    434. new_db = res + "skydb.db"
    435. if os.path.exists(new_db):
    436. can_delete = self.askOverwriteSkydb(res)
    437. retval = True
    438. if can_delete:
    439. if os.path.exists(currentdb):
    440. try:
    441. shutil.copy2(currentdb, new_db)
    442. except Exception:
    443. sys.exc_clear()
    444. from SkyCreateDatabase import buildSkydb
    445. retval = buildSkydb(target=new_db,rebuild=True,backup=False)
    446. else:
    447. from SkyCreateDatabase import buildSkydb
    448. retval = buildSkydb(target=new_db,rebuild=True,backup=False)
    449. if retval:
    450. config.plugins.skyrecorder.skydb.value = new_db
    451. config.plugins.skyrecorder.skydb.save()
    452. config.save()
    453. configfile.save()
    454. try:
    455. sql.disconnect()
    456. sql.connect()
    457. except Exception:
    458. sys.exc_clear()
    459. return
    460. self.changedEntry()
    461. def changedEntry(self):
    462. self.createConfigList()
    463. self["config"].setList(self.configlist)
    464. def saveSettings(self):
    465. self.togglePopUp(True)
    466. print "saved"
    467. for x in self["config"].list:
    468. if x == self.autoUpdateTime:
    469. alarm = setWecker(x[1].value)
    470. config.plugins.skyrecorder.next_update.value = alarm
    471. #config.plugins.skyrecorder.next_update.save_forced = True
    472. config.plugins.skyrecorder.next_update.save()
    473. #x[1].save_forced = True
    474. x[1].save()
    475. config.plugins.skyrecorder.pluginname.save_forced = True
    476. config.plugins.skyrecorder.pluginname.save()
    477. config.plugins.skyrecorder.version.save_forced = True
    478. config.plugins.skyrecorder.version.save()
    479. config.plugins.skyrecorder.skydb.save_forced = True
    480. config.plugins.skyrecorder.skydb.save()
    481. config.save()
    482. configfile.save()
    483. self.changeTimer()
    484. if self.tempTimer:
    485. self.tempTimer.stop()
    486. # again, lets try to build the dirtree for our recordings
    487. retval = self.buildDirTree(config.plugins.skyrecorder.anytimefolder.value)
    488. if not retval:
    489. self.session.open(MessageBox, _("{0}\nKonnte den Verzeichnisbaum für die Aufnahmen nicht erstellen.".format(pluginName)), MessageBox.TYPE_INFO, timeout=-1)
    490. self.close()
    491. def killDatabaseUpdate(self):
    492. try:
    493. if SkyGetTvGuide.instance:
    494. SkyGetTvGuide.instance.IS_RUNNING = False
    495. time.sleep(2.0)
    496. sql.sqlCommit()
    497. del(SkyGetTvGuide.instance)
    498. self.changeTimer()
    499. #SkyGetTvGuide(self.session, oneShot=False, no_after_event=True)
    500. self.addLog("Datenbankupdate gestoppt.")
    501. self.session.open(MessageBox, _("{0}\nDatenbankupdate gestoppt.".format(pluginName)), MessageBox.TYPE_INFO, timeout=3)
    502. except Exception, e:
    503. self.session.open(MessageBox, _("{0}\n{1}".format(pluginName, e)), MessageBox.TYPE_ERROR, timeout=-1)
    504. sys.exc_clear()
    505. def tryToStopDatabseUpdate(self, retval=True):
    506. if retval:
    507. self.killDatabaseUpdate()
    508. return
    509. def askUpdateDatabase(self):
    510. self.togglePopUp(True)
    511. # try to break, if we want so
    512. try:
    513. if SkyGetTvGuide.instance:
    514. if SkyGetTvGuide.instance.IS_RUNNING and SkyGetTvGuide.instance.IS_RUNNING == True:
    515. mymsg = "Achtung!\nEin Datenbankupdate läuft schon im Hintergrund.\nSoll das Update jetzt abgebrochen werden?"
    516. self.session.openWithCallback(self.tryToStopDatabseUpdate, MessageBox, _(mymsg), MessageBox.TYPE_YESNO, timeout=-1, default=False)
    517. return
    518. except Exception:
    519. sys.exc_clear()
    520. if config.plugins.skyrecorder.auto_recordtimer_entries.value:
    521. mymsg = "{0}\nSoll die Datenbank jetzt aktualisiert werden?\nAchtung, 'automatische Timer hinzufügen' ist aktiviert und wird im Anschluss ausgeführt.".format(pluginName)
    522. else:
    523. mymsg = "{0}\nSoll die Datenbank jetzt aktualisiert werden?".format(pluginName)
    524. self.session.openWithCallback(self.updateDatabase, MessageBox, _(mymsg), MessageBox.TYPE_YESNO, timeout=-1, default=True)
    525. def updateDatabase(self, canstart=True):
    526. if not canstart:
    527. return
    528. self.startReadLog()
    529. message = self.session.open(MessageBox, _("{0}\nAktualisiere Datenbank".format(pluginName)), MessageBox.TYPE_INFO, timeout=3)
    530. try:
    531. if SkyGetTvGuide.instance.refreshTimer:
    532. #SkyGetTvGuide.instance.refreshTimer.stop()
    533. SkyGetTvGuide.instance.start(oneShot=True,no_after_event=True)
    534. #SkyGetTvGuide.instance.refreshTimer.start()
    535. else:
    536. SkyGetTvGuide(self.session, oneShot=False,no_after_event=True)
    537. SkyGetTvGuide.instance.start(oneShot=True,no_after_event=True)
    538. except AttributeError:
    539. SkyGetTvGuide(self.session, oneShot=False, no_after_event=True)
    540. SkyGetTvGuide.instance.start(oneShot=True,no_after_event=True)
    541. def askAddRecordimerNow(self):
    542. self.togglePopUp(True)
    543. mymsg = "{0}\nSollen alle automatischen Timer jetzt hinzugefügt werden?".format(pluginName)
    544. self.session.openWithCallback(self.addRecordimerNow, MessageBox, _(mymsg), MessageBox.TYPE_YESNO, timeout=-1, default=True)
    545. def addRecordimerNow(self, canstart=True):
    546. if not canstart:
    547. return
    548. SkyRunAutocheck(self.session,no_after_event=True)
    549. def askCleanUpDatabase(self):
    550. self.togglePopUp(True)
    551. self.includeAdded = False
    552. mymsg = "{0}\nSky TV-Guide Datenbank aufräumen.\nSollen auch alle gemerkten Timereinträge aus der Datenbank entfernt werden?".format(pluginName)
    553. self.session.openWithCallback(self.askCleanUpDatabaseGo, MessageBox, _(mymsg), MessageBox.TYPE_YESNO, timeout=-1, default=False)
    554. def askCleanUpDatabaseGo(self,includeAdded=False):
    555. self.togglePopUp(True)
    556. self.includeAdded = includeAdded
    557. mymsg = "{0}\nSky TV-Guide Datenbank jetzt leeren?".format(pluginName)
    558. self.session.openWithCallback(self.cleanUpDatabase, MessageBox, _(mymsg), MessageBox.TYPE_YESNO, timeout=-1, default=False)
    559. def cleanUpDatabase(self, cleanUp=False):
    560. if cleanUp is not True:
    561. return
    562. try:
    563. sql.cur.execute('SELECT SQLITE_VERSION()')
    564. except Exception:
    565. sys.exc_clear()
    566. try:
    567. sql.connect()
    568. except Exception:
    569. return
    570. res = sql.truncateDatabase(self.includeAdded)
    571. if res:
    572. self.session.open(MessageBox, _("{0}\nDie Datenbank wurde geleert.".format(pluginName)), MessageBox.TYPE_INFO, timeout=5)
    573. else:
    574. self.session.open(MessageBox, _("{0}\nDie Datenbank konnte nicht geleert werden.".format(pluginName)), MessageBox.TYPE_ERROR, timeout=-1)
    575. def addLog(self, text):
    576. if len(text) < 1:
    577. return
    578. # check the current file size truncate the file if size is greater than defined limit 200 KB (204800 Bytes)
    579. sizeb = os.path.getsize(self.sky_log_path)
    580. if sizeb > 204800:
    581. # truncate only the first 100 lines in file - delete the oldest ones
    582. with open(self.sky_log_path, "r+") as f:
    583. for x in xrange(100):
    584. f.readline()
    585. f.truncate()
    586. lt = time.localtime()
    587. datum = time.strftime("%d.%m.%Y - %H:%M:%S", lt)
    588. with open(self.sky_log_path , "a") as write_log:
    589. write_log.write('"%s - %s"\n' % (datum,text))
    590. def keyCancel(self):
    591. if self.popUpIsVisible:
    592. self.popUpScreen.hide()
    593. self.popUpIsVisible = False
    594. self["config_actions"].setEnabled(True)
    595. self["actions"].setEnabled(True)
    596. self["disabled_actions"].setEnabled(False)
    597. return
    598. for x in self["config"].list:
    599. x[1].cancel()
    600. if self.tempTimer:
    601. self.tempTimer.stop()
    602. self.close()
    603. def cancelSave(self):
    604. self.keyCancel()
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Flo79 ()

  • Flo79 schrieb:

    hier eine IPK des 1.6.1 fix

    könnte ein Mod diese 3 varianten Bitte in Post 1 ersetzen/einfügen?
    sonst muss man später nur suchen
    und ein Admin die v1.6.2 oder die v1.7.2 je nach dem welche stabilier läuft, ist mal im Feed einsetzen?
    die v1.2.3 vom Feed ist ja so nicht mehr lauffähig.
    Hallo, habe jetzt alle ipk mal installiert es läuft bei mir keine. Also bleibt immer bei Skyrecorder entferne alte Einträge stehen. Oder wie bügel ich den Skyrecorder 161 fix drüber? Danke MfG
  • versuch es mal mit der 1.7.2 die sollte auf jedenfall laufen und ist auch aktueller.

    könnte ein Mod Bitte die gefixten dateien im ersten Post mal ersetzen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Flo79 ()