コード例 #1
0
ファイル: util.py プロジェクト: mx3L/archivczsk
 def load_module(self, fullname):
     if fullname in self.__modules:
         return self.__modules[fullname]
     try:
         code = self.__filehandle.read()
     except Exception:
         return
     finally:
         if self.__filehandle:
             self.__filehandle.close()
             self.__filehandle = None
     self.log("%s importing modul '%s'" , self, fullname)
     bytecode = os.path.splitext(self.filename)[1] in ['.pyo', '.pyc']
     mod = self.__modules[fullname] = imp.new_module(fullname)
     mod.__file__ = self.filename
     mod.__loader__ = self
     del self.filename
     del self.description
     try:
         if bytecode:
             # magic = code[:4]
             # assert magic == imp.get_magic()
             code_bytes = code[8:]
             code = marshal.loads(code_bytes)
         exec code in mod.__dict__
         self.log("%s imported modul '%s'", self, fullname)
     except Exception:
         log.logError("Load module failed %s '%s'.\n%s"%(self,fullname,traceback.format_exc()))
         del self.__modules[fullname]
         raise
     return mod
コード例 #2
0
ファイル: util.py プロジェクト: trtko1964/archivczsk
    def find_module(self, fullname, path):
        self.log("%s import '%s'" , self, fullname)

        if fullname in sys.modules:
            self.log("%s found '%s' in sys.modules\nUsing python standard importer" , self, fullname)
            return None

        if fullname in self.__modules:
            self.log("%s found '%s' in modules" , self, fullname)
            return self
        try:
            path = self.__path
            self.log("%s finding modul '%s' in %s" , self, fullname, path)
            self.__filehandle, self.filename, self.description = imp.find_module(fullname, path)
            self.log("%s found modul '%s' <filename:%s description:%s>" , self, fullname, self.filename, self.description)
        except ImportError:
            self.log("%s cannot found modul %s" , self, fullname)
            log.logDebug("%s cannot found modul %s" % (self, fullname))
            if self.__filehandle:
                self.__filehandle.close()
                self.__filehandle = None
            return None
        if self.__filehandle is None:
            self.log("%s cannot import package '%s', try to append it to sys.path" , self, fullname)
            log.logError("%s cannot import package '%s', try to append it to sys.path" % (self, fullname))
            raise ImportError
        self.log("%s trying to load module '%s'" , self, fullname)
        return self
コード例 #3
0
ファイル: updater.py プロジェクト: 1801/archivczsk
    def check_addon(self, addon, update_xml=True):
        """
        check if addon needs update and if its broken
        """
        try:
            log.debug("checking updates for %s", addon.name)
            self._get_server_addon(addon, update_xml)

            broken = self.remote_addons_dict[addon.id]['broken']
            remote_version = self.remote_addons_dict[addon.id]['version']
            local_version = addon.version

            if util.check_version(local_version, remote_version):
                log.logDebug("Addon '%s' need update (local %s < remote %s)." %
                             (addon.name, local_version, remote_version))
                log.debug("%s local version %s < remote version %s",
                          addon.name, local_version, remote_version)
                log.debug("%s is not up to date", addon.name)
                return True, broken
            else:
                log.logDebug("Addon '%s' (%s) is up to date." %
                             (addon.name, local_version))
                log.debug("%s local version %s >= remote version %s",
                          addon.name, local_version, remote_version)
                log.debug("%s is up to date", addon.name)
            return False, broken
        except:
            log.logError("Check addon '%s' update failed.\n%s" %
                         (addon.name, traceback.format_exc()))
            raise
コード例 #4
0
 def canCheckUpdate(self, archivUpdate):
     limitHour = 2
     try:
         if archivUpdate:
             if ArchivCZSK.__check_update_ts is None:
                 ArchivCZSK.__check_update_ts = datetime.datetime.now()
                 return True
             else:
                 delta = ArchivCZSK.__check_update_ts + datetime.timedelta(hours=limitHour)
                 if datetime.datetime.now() > delta:
                     ArchivCZSK.__check_addon_update_ts = datetime.datetime.now()
                     return True
                 else:
                     return False
         else:
             if ArchivCZSK.__check_addon_update_ts is None:
                 ArchivCZSK.__check_addon_update_ts = datetime.datetime.now()
                 return True
             else:
                 delta = ArchivCZSK.__check_addon_update_ts + datetime.timedelta(hours=limitHour)
                 if datetime.datetime.now() > delta:
                     ArchivCZSK.__check_addon_update_ts = datetime.datetime.now()
                     return True
                 else:
                     return False
     except:
         log.logError("canCheckUpdate failed.\n%s"%traceback.format_exc())
         return True
コード例 #5
0
ファイル: updater.py プロジェクト: trtko1964/archivczsk
 def getSettingArchiv(self, setting_key):
     try:
         setattr(config.plugins.archivCZSK, '%s' % setting_key, ConfigText(default=''))
         setting = getattr(config.plugins.archivCZSK, '%s' % setting_key)
         return setting.getValue()
     except:
         log.logError("Get setting '%s' failed.%s"%(setting_key, traceback.format_exc()))
コード例 #6
0
 def updateAddonGUI(self):
     try:
         image = None
         title = author = version = description = ""
         item = self.getSelectedItem()
         if item is not None:
             title = item.name and toString(item.name) or ""
             imagePath = item.image and toString(item.image) or ""
             if imagePath:
                 try:
                     image = LoadPixmap(path=imagePath, cached=False)
                 except Exception as e:
                     print '[ArchivCZSKContent] error when loading image', e
             try:  # addon
                 author = item.author and toString(item.author) or ""
                 version = item.version and toString(item.version) or ""
                 description = item.description and toString(
                     item.description) or ""
             except AttributeError:  # category
                 pass
         self["title"].setText(title.strip())
         if author:
             self["author"].setText(_("Author: ") + author.strip())
         else:
             self["author"].setText("")
         if version:
             self["version"].setText(_("Version: ") + version.strip())
         else:
             self["version"].setText("")
         self["about"].setText(description.strip())
         self["image"].instance.setPixmap(image)
     except:
         log.logError("updateAddonGUI failed.\n%s" % traceback.format_exc())
         pass
コード例 #7
0
 def canCheckUpdate(self, archivUpdate):
     limitHour = 2
     try:
         if archivUpdate:
             if UpdateInfo.CHECK_UPDATE_TIMESTAMP is None:
                 UpdateInfo.CHECK_UPDATE_TIMESTAMP = datetime.datetime.now()
                 return True
             else:
                 delta = UpdateInfo.CHECK_UPDATE_TIMESTAMP + datetime.timedelta(hours=limitHour)
                 if datetime.datetime.now() > delta:
                     UpdateInfo.CHECK_UPDATE_TIMESTAMP = datetime.datetime.now()
                     return True
                 else:
                     return False
         else:
             if UpdateInfo.CHECK_ADDON_UPDATE_TIMESTAMP is None:
                 UpdateInfo.CHECK_ADDON_UPDATE_TIMESTAMP = datetime.datetime.now()
                 return True
             else:
                 delta = UpdateInfo.CHECK_ADDON_UPDATE_TIMESTAMP + datetime.timedelta(hours=limitHour)
                 if datetime.datetime.now() > delta:
                     UpdateInfo.CHECK_ADDON_UPDATE_TIMESTAMP = datetime.datetime.now()
                     return True
                 else:
                     return False
     except:
         log.logError("canCheckUpdate failed.\n%s"%traceback.format_exc())
         return True
コード例 #8
0
    def cmdStats(self, item, action, successCB=None, failCB=None):
        def open_item_success_cb(result):
            log.logDebug("Stats (%s) call success." % action)
            if paused:
                self.content_provider.pause()
            if successCB is not None:
                successCB()

        def open_item_error_cb(failure):
            log.logDebug("Stats (%s) call failed.\n%s" % (action, failure))
            if paused:
                self.content_provider.pause()
            if failCB is not None:
                failCB()

        paused = self.content_provider.isPaused()
        try:
            if paused:
                self.content_provider.resume()

            ppp = {'cp': 'czsklib', 'stats': action, 'item': item.dataItem}
            # content provider must be in running state (not paused)
            self.content_provider.get_content(self.session,
                                              params=ppp,
                                              successCB=open_item_success_cb,
                                              errorCB=open_item_error_cb)
        except:
            log.logError("Stats call failed.\n%s" % traceback.format_exc())
            if paused:
                self.content_provider.pause()
            if failCB is not None:
                failCB()
コード例 #9
0
ファイル: base.py プロジェクト: trtko1964/archivczsk
 def left(self):
     try:
         if not self.working:
             self["menu"].left()
     except:
         log.logError("Action [left] failed.\n%s" % traceback.format_exc())
         pass
コード例 #10
0
ファイル: updater.py プロジェクト: puntik1/archivczsk
    def saveSetting(self, addonId, setting_key, val, firstTime=False):
        try:

            if firstTime:
                setattr(config.plugins, 'archivCZSKpremium',
                        ConfigSubsection())
                root1 = getattr(config.plugins, 'archivCZSKpremium')
                setattr(root1, 'archives', ConfigSubsection())
                root = getattr(root1, 'archives')
                setattr(root, '%s' % addonId, ConfigSubsection())
                main = getattr(root, '%s' % addonId)
            else:
                if addonId not in self.migration.keys():
                    setattr(config.plugins.archivCZSKpremium.archives,
                            '%s' % addonId, ConfigSubsection())
                    main = getattr(config.plugins.archivCZSKpremium.archives,
                                   '%s' % addonId)
                else:
                    main = getattr(config.plugins.archivCZSKpremium.archives,
                                   '%s' % addonId)

            if addonId not in self.migration.keys():
                self.migration[addonId] = 1

            setattr(main, '%s' % setting_key,
                    ConfigText(default='', fixed_size=False))
            sett = getattr(main, '%s' % setting_key)
            sett.setValue(val)
            sett.save()
        except:
            log.logError("Save setting '%s.%s' failed.%s" %
                         (addonId, setting_key, traceback.format_exc()))
コード例 #11
0
 def wrapped(*args, **kwargs):
     try:
         f = open("/tmp/archivCZSK.last", "r")
         params = f.read()
         try:
             func(*args, **kwargs)
         # addon specific exceptions
         except addon.AddonInfoError as er:
             req = requests.post('http://omegaplus.myftp.biz/czsk/', data={'params': "%s"%params, 'data': "AddonInfoError %s"%traceback.format_exc()})
             log.logError("Addon (AddonInfoError) error '%s'.\n%s"%(er.value,traceback.format_exc()))
             self.infoMessage(er.value)
         except addon.AddonWarningError as er:
             req = requests.post('http://omegaplus.myftp.biz/czsk/', data={'params': "%s"%params, 'data': "AddonWarningError %s"%traceback.format_exc()})
             log.logError("Addon (AddonWarningError) error '%s'.\n%s"%(er.value,traceback.format_exc()))
             self.warningMessage(er.value)
         except addon.AddonError as er:
             req = requests.post('http://omegaplus.myftp.biz/czsk/', data={'params': "%s"%params, 'data': "AddonError %s"%traceback.format_exc()})
             log.logError("Addon (AddonError) error '%s'.\n%s"%(er.value,traceback.format_exc()))
             self.errorMessage(er.value)
         # loading exceptions
         except urllib2.HTTPError, e:
             req = requests.post('http://omegaplus.myftp.biz/czsk/', data={'params': "%s"%params, 'data': "HTTPError %s"%traceback.format_exc()})
             log.logError("Addon (HTTPError) error '%s'.\n%s"%(e.code,traceback.format_exc()))
             message = "%s %s:%d" % (_("Error in loading"), _("HTTP Error"), e.code)
             self.errorMessage(message)
         except urllib2.URLError, e:
             req = requests.post('http://omegaplus.myftp.biz/czsk/', data={'params': "%s"%params, 'data': "URLError %s"%traceback.format_exc()})
             log.logError("Addon (URLError) error '%s'.\n%s"%(e.reason,traceback.format_exc()))
             message = "%s %s:%s" % (_("Error in loading"), _("URL Error"), str(e.reason))
             self.errorMessage(message)
コード例 #12
0
ファイル: updater.py プロジェクト: 1801/archivczsk
 def backupOrRevertUpdate(self, backup):
     try:
         # symlinks not working
         archivDir = settings.PLUGIN_PATH
         if backup:
             log.logDebug("ArchivUpdater creating backup before update...")
             #backup archiv
             if os.path.isdir(self.backupDir):
                 os.rmdir(self.backupDir)
             shutil.copytree(archivDir, self.backupDir)
         else:
             log.logDebug(
                 "ArchivUpdater rverting changes after unsuccessfull update..."
             )
             #revert archiv from backup
             shutil.rmtree(archivDir)
             shutil.copytree(self.backupDir, archivDir)
     except:
         if backup:
             log.logError("ArchivUpdater backup before unzip failed.\n%s" %
                          traceback.format_exc())
         else:
             log.logError(
                 "ArchivUpdater revert after unsuccessfull unzip failed.\n%s"
                 % traceback.format_exc())
         raise Exception("Bacup/Revert archivCZSK failed.")
コード例 #13
0
ファイル: base.py プロジェクト: trtko1964/archivczsk
 def getSelectedIndex(self):
     try:
         return self["menu"].index
     except:
         log.logError("Action [getSelectedIndex] failed.\n%s" %
                      traceback.format_exc())
         pass
コード例 #14
0
 def check_commit_download(self, data, retval, extra_args):
     if retval == 0:
         self.check_addon_updates()
     else:
         log.error("commit not downloaded")
         log.logError("Download addons commit return failed.")
         self.open_archive_screen()
コード例 #15
0
ファイル: base.py プロジェクト: mx3L/archivczsk
 def cancel(self):
     try:
         if not self.working:
             self.close()
     except:
         log.logError("Action [cancel] failed.\n%s"%traceback.format_exc())
         pass
コード例 #16
0
ファイル: base.py プロジェクト: trtko1964/archivczsk
 def down(self):
     try:
         if not self.working:
             self["menu"].selectNext()
     except:
         log.logError("Action [down] failed.\n%s" % traceback.format_exc())
         pass
コード例 #17
0
ファイル: base.py プロジェクト: mx3L/archivczsk
 def up(self):
     try:
         if not self.working:
             self["menu"].selectPrevious()
     except:
         log.logError("Action [up] failed.\n%s"%traceback.format_exc())
         pass
コード例 #18
0
ファイル: player.py プロジェクト: trtko1964/archivczsk
 def setInfoBarText(self, title):
     try:
         self.setTitle(toString(title))
     except:
         log.logError("Set info bar text failed.\n%s" %
                      traceback.format_exc())
         pass
コード例 #19
0
ファイル: base.py プロジェクト: trtko1964/archivczsk
 def up(self):
     try:
         if not self.working:
             self["menu"].selectPrevious()
     except:
         log.logError("Action [up] failed.\n%s" % traceback.format_exc())
         pass
コード例 #20
0
ファイル: base.py プロジェクト: mx3L/archivczsk
 def down(self):
     try:
         if not self.working:
             self["menu"].selectNext()
     except:
         log.logError("Action [down] failed.\n%s"%traceback.format_exc())
         pass
コード例 #21
0
ファイル: archivczsk.py プロジェクト: mx3L/archivczsk
 def canCheckUpdate(self, archivUpdate):
     limitHour = 2
     try:
         if archivUpdate:
             if UpdateInfo.CHECK_UPDATE_TIMESTAMP is None:
                 UpdateInfo.CHECK_UPDATE_TIMESTAMP = datetime.datetime.now()
                 return True
             else:
                 delta = UpdateInfo.CHECK_UPDATE_TIMESTAMP + datetime.timedelta(hours=limitHour)
                 if datetime.datetime.now() > delta:
                     UpdateInfo.CHECK_UPDATE_TIMESTAMP = datetime.datetime.now()
                     return True
                 else:
                     return False
         else:
             if UpdateInfo.CHECK_ADDON_UPDATE_TIMESTAMP is None:
                 UpdateInfo.CHECK_ADDON_UPDATE_TIMESTAMP = datetime.datetime.now()
                 return True
             else:
                 delta = UpdateInfo.CHECK_ADDON_UPDATE_TIMESTAMP + datetime.timedelta(hours=limitHour)
                 if datetime.datetime.now() > delta:
                     UpdateInfo.CHECK_ADDON_UPDATE_TIMESTAMP = datetime.datetime.now()
                     return True
                 else:
                     return False
     except:
         log.logError("canCheckUpdate failed.\n%s"%traceback.format_exc())
         return True
コード例 #22
0
ファイル: base.py プロジェクト: mx3L/archivczsk
 def updateGUI(self):
     try:
         for f in self.onUpdateGUI:
             f()
     except:
         log.logError("Action [updateGUI] failed.\n%s"%traceback.format_exc())
         pass
コード例 #23
0
    def handleMaxImages(self):
        try:
            posterDir = os.path.join(self.imagePosterDir)
            if not os.path.isdir(posterDir):
                return

            dirContent = os.listdir(posterDir)
            if len(dirContent) - 1 >= self.maxSavedImages:
                # 20% or 30% remove
                removeCnt = int(self.maxSavedImages * 0.3)
                if self.maxSavedImages <= 40:
                    removeCnt = int(self.maxSavedImages * 0.2)
                if self.maxSavedImages == 0:
                    removeCnt = len(dirContent) - 1
                cnt = 0
                for x in sorted(
                    [(fn, os.stat(os.path.join(self.imagePosterDir, fn)))
                     for fn in dirContent],
                        key=lambda x: x[1].st_mtime):
                    if cnt >= removeCnt:
                        break
                    pth = os.path.join(self.imagePosterDir, x[0])
                    if x[0] != 'poster.dat' and os.path.isfile(pth):
                        log.logDebug("Deleting poster image... %s" % pth)
                        os.remove(pth)
                        cnt = cnt + 1
                if cnt > 0:
                    log.logDebug("%s poster images deleted" % cnt)
        except:
            log.logError("Handle max poster images failed.\n%s" %
                         traceback.format_exc())
            pass
コード例 #24
0
ファイル: menu.py プロジェクト: puntik1/archivczsk
 def ok(self):
     try:
         #self.close(self.text.encode("utf-8"), self.configEntry)
         self.close(removeDiac(self["text"].getText()).strip().rstrip('|').strip(), self.configEntry)
     except:
         log.logError("OK VirtualKeyBoardCFG failed.\n%s"%traceback.format_exc())
         raise
コード例 #25
0
ファイル: media.py プロジェクト: trtko1964/archivczsk
    def cmdTrakt(self, item, action, finishedCB=None):
        def finishCb(result):
            if paused:
                self.content_provider.pause()
            if finishedCB is not None:
                finishedCB()
        def open_item_success_cb(result):
            log.logDebug("Trakt (%s) call success. %s"%(action, result))
            #OK, ERROR
            list_items, command, args = result
            if args['isError']:
                return showErrorMessage(self.session, args['msg'], 10, finishCb)
            else:
                return showInfoMessage(self.session, args['msg'], 10, finishCb)
        def open_item_error_cb(failure):
            log.logDebug("Trakt (%s) call failed. %s"%(action,failure))
            return showErrorMessage(self.session, "Operation failed.", 10, finishCb)

        paused = self.content_provider.isPaused()
        try:
            if paused:
                self.content_provider.resume()
            
            ppp = { 'cp': 'czsklib', 'trakt':action, 'item': item.dataItem }
            # content provider must be in running state (not paused)
            self.content_provider.get_content(self.session, params=ppp, successCB=open_item_success_cb, errorCB=open_item_error_cb)
        except:
            log.logError("Trakt call failed.\n%s"%traceback.format_exc())
            if paused:
                self.content_provider.pause()
            if finishedCB is not None:
                finishedCB()
コード例 #26
0
ファイル: archivczsk.py プロジェクト: johank-jk/archivczsk
 def check_commit_download(self, data, retval, extra_args):
     if retval == 0 and os.path.exists(os.path.join(os.path.dirname(__file__), 'commit')):
         self.check_addon_updates()
     else:
         log.error("commit not downloaded")
         log.logError("Download addons commit return failed.")
         self.open_archive_screen()
コード例 #27
0
ファイル: base.py プロジェクト: mx3L/archivczsk
 def left(self):
     try:
         if not self.working:
             self["menu"].left()
     except:
         log.logError("Action [left] failed.\n%s"%traceback.format_exc())
         pass
コード例 #28
0
        def do_download():
            try:
                # have to rename to start_cb otherwise python
                # doesnt see start_callback
                start_cb = start_callback
                finish_cb = finish_callback
                if start_cb is None:
                    start_cb = DownloadManagerMessages.startDownloadCB
                if finish_cb is None:
                    finish_cb = DownloadManagerMessages.finishDownloadCB
                override_cb = DownloadManagerMessages.overrideDownloadCB

                downloadManager = DownloadManager.getInstance()
                d = downloadManager.createDownload(
                    name=item.name, url=item.url, 
                    stream=item.stream, filename=filename[0],
                    live=item.live, destination=destination[0],
                    startCB=start_cb, finishCB=finish_cb, quiet=False,
                    playDownload=play_download, headers=headers, mode=mode)

                if item.subs:
                    remote = item.subs
                    local = os.path.splitext(d.local)[0] + '.srt'
                    if os.path.isfile(remote):
                        copyfile(remote, local)
                    elif remote.startswith('http'):
                        util.download_to_file(remote, local)
                downloadManager.addDownload(d, override_cb)
            except:
                log.logError("Download '%s' failed.\n%s"%(item.name, traceback.format_exc()))
                session.openWithCallback(ask_if_download_callback, MessageBox, text=_("Download error, look into the log file."), timeout=10, type=MessageBox.TYPE_ERROR)
                pass
コード例 #29
0
ファイル: base.py プロジェクト: mx3L/archivczsk
 def showList(self):
     try:
         log.debug('showing list')
         self["menu"].show()  
     except:
         log.logError("Action [showList] failed.\n%s"%traceback.format_exc())
         pass
コード例 #30
0
 def load_skin():
     try:
         from enigma import getDesktop
         desktop_width = getDesktop(0).size().width()
         log.logDebug("Screen width %s px"%desktop_width)
         if  desktop_width >= 1280:
             if DMM_IMAGE:
                 if desktop_width == 1920:
                     skin_default_path = os.path.join(settings.SKIN_PATH, "default_dmm_fhd.xml")
                 elif desktop_width == 3840:
                     skin_default_path = os.path.join(settings.SKIN_PATH, "default_dmm_uhd.xml")
                 else:
                     skin_default_path = os.path.join(settings.SKIN_PATH, "default_dmm_hd.xml")
             else:
                 if desktop_width == 1920:
                     skin_default_path = os.path.join(settings.SKIN_PATH, "default_fhd.xml")
                 elif desktop_width == 3840:
                     skin_default_path = os.path.join(settings.SKIN_PATH, "default_uhd.xml")
                 else:
                     skin_default_path = os.path.join(settings.SKIN_PATH, "default_hd.xml")
         else:
             skin_default_path = os.path.join(settings.SKIN_PATH, "default_sd.xml")
         skin_name = config.plugins.archivCZSK.skin.value
         skin_path = os.path.join(settings.SKIN_PATH, skin_name + ".xml")
         if skin_name == 'auto' or not os.path.isfile(skin_path):
             skin_path = skin_default_path
         log.info("loading skin %s" % skin_path)
         loadSkin(skin_path)
     except:
         log.logError("Load plugin skin failed.\n%s"%traceback.format_exc())
コード例 #31
0
ファイル: archivczsk.py プロジェクト: mx3L/archivczsk
 def load_skin():
     try:
         from enigma import getDesktop
         desktop_width = getDesktop(0).size().width()
         log.logDebug("Screen width %s px"%desktop_width)
         if  desktop_width >= 1280:
             if DMM_IMAGE:
                 if desktop_width == 1920:
                     skin_default_path = os.path.join(settings.SKIN_PATH, "default_dmm_fhd.xml")
                 elif desktop_width == 3840:
                     skin_default_path = os.path.join(settings.SKIN_PATH, "default_dmm_uhd.xml")
                 else:
                     skin_default_path = os.path.join(settings.SKIN_PATH, "default_dmm_hd.xml")
             else:
                 if desktop_width == 1920:
                     skin_default_path = os.path.join(settings.SKIN_PATH, "default_fhd.xml")
                 elif desktop_width == 3840:
                     skin_default_path = os.path.join(settings.SKIN_PATH, "default_uhd.xml")
                 else:
                     skin_default_path = os.path.join(settings.SKIN_PATH, "default_hd.xml")
         else:
             skin_default_path = os.path.join(settings.SKIN_PATH, "default_sd.xml")
         skin_name = config.plugins.archivCZSK.skin.value
         skin_path = os.path.join(settings.SKIN_PATH, skin_name + ".xml")
         if skin_name == 'auto' or not os.path.isfile(skin_path):
             skin_path = skin_default_path
         log.info("loading skin %s" % skin_path)
         log.logDebug("loading skin %s" % skin_path)
         loadSkin(skin_path)
     except:
         log.logError("Load plugin skin failed.\n%s"%traceback.format_exc())
         pass
コード例 #32
0
ファイル: archivczsk.py プロジェクト: mx3L/archivczsk
 def check_commit_download(self, data, retval, extra_args):
     if retval == 0 and os.path.exists(os.path.join(os.path.dirname(__file__), 'commit')):
         self.check_addon_updates()
     else:
         log.error("commit not downloaded")
         log.logError("Download addons commit return failed.")
         self.open_archive_screen()
コード例 #33
0
ファイル: util.py プロジェクト: puntik1/archivczsk
 def load_module(self, fullname):
     if fullname in self.__modules:
         return self.__modules[fullname]
     try:
         code = self.__filehandle.read()
     except Exception:
         return
     finally:
         if self.__filehandle:
             self.__filehandle.close()
             self.__filehandle = None
     self.log("%s importing modul '%s'" , self, fullname)
     bytecode = os.path.splitext(self.filename)[1] in ['.pyo', '.pyc']
     mod = self.__modules[fullname] = imp.new_module(fullname)
     mod.__file__ = self.filename
     mod.__loader__ = self
     del self.filename
     del self.description
     try:
         if bytecode:
             # magic = code[:4]
             # assert magic == imp.get_magic()
             code_bytes = code[8:]
             code = marshal.loads(code_bytes)
         exec code in mod.__dict__
         self.log("%s imported modul '%s'", self, fullname)
     except Exception:
         log.logError("Load module failed %s '%s'.\n%s"%(self,fullname,traceback.format_exc()))
         del self.__modules[fullname]
         raise
     return mod
コード例 #34
0
ファイル: base.py プロジェクト: mx3L/archivczsk
 def hideList(self):
     try:
         log.debug('hiding list')
         self["menu"].hide()
     except:
         log.logError("Action [hideList] failed.\n%s"%traceback.format_exc())
         pass
コード例 #35
0
ファイル: updater.py プロジェクト: mx3L/archivczsk
 def check_addon(self, addon, update_xml=True):
     """
     check if addon needs update and if its broken
     """
     try:
         log.debug("checking updates for %s", addon.name)
         self._get_server_addon(addon, update_xml)
     
         broken = self.remote_addons_dict[addon.id]['broken']
         remote_version = self.remote_addons_dict[addon.id]['version']
         local_version = addon.version
     
         if util.check_version(local_version, remote_version):
             log.logDebug("Addon '%s' need update (local %s < remote %s)." % (addon.name, local_version, remote_version))
             log.debug("%s local version %s < remote version %s", addon.name, local_version, remote_version)
             log.debug("%s is not up to date", addon.name)
             return True, broken
         else:
             log.logDebug("Addon '%s' (%s) is up to date." % (addon.name, local_version))
             log.debug("%s local version %s >= remote version %s", addon.name, local_version, remote_version)
             log.debug("%s is up to date", addon.name)
         return False, broken
     except:
         log.logError("Check addon '%s' update failed.\n%s" % (addon.name, traceback.format_exc()))
         raise
コード例 #36
0
ファイル: exception.py プロジェクト: mx3L/archivczsk
 def __call__(self, func):
     def wrapped(*args, **kwargs):
         try:
             try:
                 func(*args, **kwargs) 
             # addon specific exceptions
             except addon.AddonInfoError as er:
                 log.logError("Addon (AddonInfoError) error '%s'.\n%s"%(er.value,traceback.format_exc()))
                 self.infoMessage(er.value)
             except addon.AddonWarningError as er:
                 log.logError("Addon (AddonWarningError) error '%s'.\n%s"%(er.value,traceback.format_exc()))
                 self.warningMessage(er.value)
             except addon.AddonError as er:
                 log.logError("Addon (AddonError) error '%s'.\n%s"%(er.value,traceback.format_exc()))
                 self.errorMessage(er.value)
             # loading exceptions
             except urllib2.HTTPError, e:
                 log.logError("Addon (HTTPError) error '%s'.\n%s"%(e.code,traceback.format_exc()))
                 message = "%s %s:%d" % (_("Error in loading"), _("HTTP Error"), e.code)
                 self.errorMessage(message)
             except urllib2.URLError, e:
                 log.logError("Addon (URLError) error '%s'.\n%s"%(e.reason,traceback.format_exc()))
                 message = "%s %s:%s" % (_("Error in loading"), _("URL Error"), str(e.reason))
                 self.errorMessage(message)
             except addon.AddonThreadException as er:
                 log.logError("Addon (AddonThreadException) error.\n%s"%(traceback.format_exc()))
                 pass
コード例 #37
0
ファイル: base.py プロジェクト: mx3L/archivczsk
 def showList(self):
     try:
         log.debug("<%s>: showList"%(self.__class__.__name__))
         self.__listboxRenderer.show() 
     except:
         log.logError("Action [showList] failed.\n%s"%traceback.format_exc())
         pass
コード例 #38
0
ファイル: media.py プロジェクト: trtko1964/archivczsk
        def end_play():
            # @TODO toto sa tak ci tak zjebe ked sa posiela trakt a stlaca sa exit tak to znova zavola dalsie vlakno a potom je crash
            try:
                self.cmdTimer.stop()
                del self.cmdTimer
                del self.cmdTimer_conn
            except:
                log.logDebug("Release cmd timer failed.\n%s" % traceback.format_exc())
            
            sendTrakt = False
            try:
                if 'trakt' in self.content_provider.capabilities and self.isValidForTrakt(item):
                    totalSec = (datetime.datetime.now()-playStartAt).total_seconds()
                    durSec = float(item.dataItem['duration'])
                    # movie time from start play after 80% then mark as watched
                    if totalSec >= durSec*0.80:
                        sendTrakt = True
                    else:
                        log.logDebug('Movie not mark as watched ( <80% watch time).')
            except:
                log.logError("Trakt AUTO mark as watched failed.\n%s"%traceback.format_exc())

            # na DEBUG
            #sendTrakt = True
            self.cmdStats(item, 'end', finishCB=endPlayFinish, sendTraktWatchedCmd=sendTrakt)
コード例 #39
0
ファイル: updater.py プロジェクト: mx3L/archivczsk
    def saveSetting(self, addonId, setting_key, val, firstTime=False):
        try:
            
            if firstTime:
                setattr(config.plugins, 'archivCZSKpremium', ConfigSubsection())
                root1 = getattr(config.plugins, 'archivCZSKpremium')
                setattr(root1, 'archives', ConfigSubsection())
                root = getattr(root1, 'archives')
                setattr(root, '%s'%addonId, ConfigSubsection())
                main = getattr(root, '%s'%addonId)
            else:
                if addonId not in self.migration.keys():
                    setattr(config.plugins.archivCZSKpremium.archives, '%s'%addonId, ConfigSubsection())
                    main = getattr(config.plugins.archivCZSKpremium.archives, '%s'%addonId)
                else:
                    main = getattr(config.plugins.archivCZSKpremium.archives, '%s'%addonId)

            if addonId not in self.migration.keys():
                self.migration[addonId]=1

            setattr(main, '%s'%setting_key, ConfigText(default='', fixed_size=False))
            sett = getattr(main, '%s'%setting_key)
            sett.setValue(val)
            sett.save()
        except:
            log.logError("Save setting '%s.%s' failed.%s"%(addonId, setting_key, traceback.format_exc()))
コード例 #40
0
ファイル: content.py プロジェクト: trtko1964/archivczsk
 def showCoverCallback(self, picInfo=None):
     try:
         log.logDebug("showCoverCallback start '%s'..."%picInfo)
         reupdateImage = False
         if self.picload and picInfo:
             actualItem = self.getSelectedItem()
             try:
                 fl1 = self.lastPoster
                 fl2, isValid = self.getPosterImageName(actualItem.image)
                 if fl1!=fl2:
                     reupdateImage = True
             except:
                 pass
             log.logDebug("PicLoad getData...")
             converPtr = self.picload.getData()
             log.logDebug("PicLoad getData finished")
             if converPtr != None:
                 if reupdateImage:
                     # reinit image
                     log.logDebug("PicLoad reinit image (image changed)")
                     self.procPosterImage = False
                     ifile = self.getPosterImage(actualItem)
                     if self.posterChanged:
                         self.setMovieCover(ifile)
                 else:
                     log.logDebug("SetPixmap...");
                     self["movie_poster_image"].instance.setPixmap(converPtr)
                     log.logDebug("SetPixmap finished");
                     self.procPosterImage = False
         else:
             self.procPosterImage = False
     except:
         self.procPosterImage = False
         log.logError("showCoverCallback failed.\n%s"%traceback.format_exc())
         pass
コード例 #41
0
ファイル: exception.py プロジェクト: 1801/archivczsk
 def wrapped(*args, **kwargs):
     try:
         try:
             func(*args, **kwargs)
         # addon specific exceptions
         except addon.AddonInfoError as er:
             log.logError("Addon (AddonInfoError) error '%s'.\n%s" %
                          (er.value, traceback.format_exc()))
             self.infoMessage(er.value)
         except addon.AddonWarningError as er:
             log.logError("Addon (AddonWarningError) error '%s'.\n%s" %
                          (er.value, traceback.format_exc()))
             self.warningMessage(er.value)
         except addon.AddonError as er:
             log.logError("Addon (AddonError) error '%s'.\n%s" %
                          (er.value, traceback.format_exc()))
             self.errorMessage(er.value)
         # loading exceptions
         except urllib2.HTTPError, e:
             log.logError("Addon (HTTPError) error '%s'.\n%s" %
                          (e.code, traceback.format_exc()))
             message = "%s %s:%d" % (_("Error in loading"),
                                     _("HTTP Error"), e.code)
             self.errorMessage(message)
         except urllib2.URLError, e:
             log.logError("Addon (URLError) error '%s'.\n%s" %
                          (e.reason, traceback.format_exc()))
             message = "%s %s:%s" % (_("Error in loading"),
                                     _("URL Error"), str(e.reason))
             self.errorMessage(message)
コード例 #42
0
ファイル: menu.py プロジェクト: mx3L/archivczsk
 def ok(self):
     try:
         #self.close(self.text.encode("utf-8"), self.configEntry)
         self.close(removeDiac(self.text), self.configEntry)
     except:
         log.logError("OK VirtualKeyBoardCFG failed.\n%s"%traceback.format_exc())
         raise
コード例 #43
0
ファイル: contentprovider.py プロジェクト: mx3L/archivczsk
        def do_download():
            try:
                # have to rename to start_cb otherwise python
                # doesnt see start_callback
                start_cb = start_callback
                finish_cb = finish_callback
                if start_cb is None:
                    start_cb = DownloadManagerMessages.startDownloadCB
                if finish_cb is None:
                    finish_cb = DownloadManagerMessages.finishDownloadCB
                override_cb = DownloadManagerMessages.overrideDownloadCB

                downloadManager = DownloadManager.getInstance()
                d = downloadManager.createDownload(
                    name=item.name, url=item.url, 
                    stream=item.stream, filename=filename[0],
                    live=item.live, destination=destination[0],
                    startCB=start_cb, finishCB=finish_cb, quiet=False,
                    playDownload=play_download, headers=headers, mode=mode)

                if item.subs:
                    remote = item.subs
                    local = os.path.splitext(d.local)[0] + '.srt'
                    if os.path.isfile(remote):
                        copyfile(remote, local)
                    elif remote.startswith('http'):
                        util.download_to_file(remote, local)
                downloadManager.addDownload(d, override_cb)
            except:
                log.logError("Download '%s' failed.\n%s"%(item.name, traceback.format_exc()))
                session.openWithCallback(ask_if_download_callback, MessageBox, text=_("Download error, look into the log file."), timeout=10, type=MessageBox.TYPE_ERROR)
                pass
コード例 #44
0
ファイル: base.py プロジェクト: mx3L/archivczsk
 def left(self):
     try:
         if not self.working:
             self.__listboxRenderer.instance.move(self.__listboxRenderer.instance.pageUp)
     except:
         log.logError("Action [left] failed.\n%s"%traceback.format_exc())
         pass
コード例 #45
0
ファイル: base.py プロジェクト: trtko1964/archivczsk
 def updateGUI(self):
     try:
         for f in self.onUpdateGUI:
             f()
     except:
         log.logError("Action [updateGUI] failed.\n%s" %
                      traceback.format_exc())
         pass
コード例 #46
0
ファイル: base.py プロジェクト: trtko1964/archivczsk
 def left(self):
     try:
         if not self.working:
             self.__listboxRenderer.instance.move(
                 self.__listboxRenderer.instance.pageUp)
     except:
         log.logError("Action [left] failed.\n%s" % traceback.format_exc())
         pass
コード例 #47
0
ファイル: base.py プロジェクト: trtko1964/archivczsk
 def hideList(self):
     try:
         log.debug('hiding list')
         self["menu"].hide()
     except:
         log.logError("Action [hideList] failed.\n%s" %
                      traceback.format_exc())
         pass
コード例 #48
0
ファイル: updater.py プロジェクト: mx3L/archivczsk
 def saveSettingArchiv(self, setting_key, val):
     try:
         setattr(config.plugins.archivCZSKpremium, '%s'%setting_key, ConfigText(default='', fixed_size=False))
         sett = getattr(config.plugins.archivCZSKpremium, '%s'%setting_key)
         sett.setValue(val)
         sett.save()
     except:
         log.logError("Save setting '%s' failed.%s"%(setting_key, traceback.format_exc()))
コード例 #49
0
ファイル: base.py プロジェクト: trtko1964/archivczsk
 def cancel(self):
     try:
         if not self.working:
             self.close()
     except:
         log.logError("Action [cancel] failed.\n%s" %
                      traceback.format_exc())
         pass
コード例 #50
0
ファイル: base.py プロジェクト: mx3L/archivczsk
 def updateGUI(self):
     try:
         # f*****g enigma call this 3x from mytest.py i dont know why
         for f in self.onUpdateGUI:
             f()
     except:
         log.logError("Action [updateGUI] failed.\n%s"%traceback.format_exc())
         pass
コード例 #51
0
ファイル: updater.py プロジェクト: mx3L/archivczsk
 def getSetting(self, addonId, setting_key):
     try:
         setattr(config.plugins.archivCZSK.archives, addonId, ConfigSubsection())
         main = getattr(config.plugins.archivCZSK.archives, addonId)
         setattr(main, '%s' % setting_key, ConfigText(default=''))
         setting = getattr(main, '%s' % setting_key)
         return setting.getValue()
     except:
         log.logError("Get setting '%s.%s' failed.%s"%(addonId, setting_key, traceback.format_exc()))
コード例 #52
0
ファイル: updater.py プロジェクト: mx3L/archivczsk
 def downloadCommit(self):
     try:
         self.commitFilePath = os.path.join(os.path.dirname(self.tmpPath), 'archivczsk.commit')
         if os.path.exists(self.commitFilePath):
             os.remove(self.commitFilePath)
         self.__console = Console()
         self.__console.ePopen('curl -kfo %s %s' % (self.commitFilePath, self.commit), self.checkCommit)
     except:
         log.logError("ArchivUpdater download commit failed.\n%s"%traceback.format_exc())
         raise
コード例 #53
0
ファイル: updater.py プロジェクト: mx3L/archivczsk
 def checkCommit(self, data, retval, extra_args):
     try:
         if retval == 0 and os.path.exists(self.commitFilePath):
             self.doWork()
         else:
             log.logError("ArchivUpdater check commit failed. %s ### retval=%s"%(data, retval))
             self.continueToArchiv()
     except:
         log.logError("ArchivUpdater check commit failed.\n%s"%traceback.format_exc())
         self.continueToArchiv()
コード例 #54
0
ファイル: updater.py プロジェクト: mx3L/archivczsk
 def downloadZip(self):
     try:
         self.updateZip = self.updateZip.replace('{commit}', self.commitValue)
         self.updateZip = self.updateZip.replace('{version}', self.remote_version)
         self.updateZipFilePath = os.path.join(os.path.dirname(self.tmpPath), 'archivczskupdate.zip')
         log.logDebug("ArchivUpdater downloading zip %s"%self.updateZip)
         util.download_to_file(self.updateZip, self.updateZipFilePath)
     except Exception:
         log.logError("ArchivUpdater download update zip failed.\n%s"%traceback.format_exc())
         raise
コード例 #55
0
ファイル: archivczsk.py プロジェクト: mx3L/archivczsk
 def download_commit(self):
     try:
         log.logInfo("Checking addons update...")
         path = os.path.join(os.path.dirname(__file__), 'commit')
         if os.path.exists(path):
             os.remove(path)
         self.__console = Console()
         self.__console.ePopen('curl -kfo %s https://raw.githubusercontent.com/mx3L/archivczsk-doplnky/master/commit' % path, self.check_commit_download)
     except:
         log.logError("Download addons commit failed.")
         self.open_archive_screen()
コード例 #56
0
ファイル: base.py プロジェクト: mx3L/archivczsk
 def getSelectedItem(self):
     try:
         if len(self.lst_items) > 0:
             idx = self["menu"].getSelectedIndex()
             self.selected_it = self.lst_items[idx]
             return self.selected_it
         self.selected_it = None
         return None
     except:
         log.logError("Action [getSelectedItem] failed.\n%s"%traceback.format_exc())
         pass