コード例 #1
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
コード例 #2
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)
コード例 #3
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())
コード例 #4
0
ファイル: serialize.py プロジェクト: mx3L/archivczsk
    def create_xml_item(self, item):
        log.logDebug("%s create xml item - %s"%(self,item))
        log.debug("{0} create xml item - {1}".format(self, toString(item)))

        import time
        from datetime import datetime
        t = datetime.now()
        t1 = t.timetuple()
        uid = int(time.mktime(t1))
        if item.id:
            item.id = uid
            #log.logDebug("%s create xml item - %s already exists, skipping"%(self,item))
            #log.debug('{0} create xml item - {1} already exists, skipping'.format(self, toString(item)))
            #return
        item_id = item.get_id()
        if self.find_item_by_id(item_id):
            item_id = uid
            item.id = uid
            #log.logDebug("%s create xml item - %s already exists (2), skipping"%(self,item))
            #log.debug('{0} create xml item - {1} already exists, skipping'.format(self, toString(item)))
            #return
        addon_id = item.addon_id
        xml_item = SubElement(self.xml_root_element.find('items'), 'item')
        xml_item.set('id', toUnicode(item_id))
        xml_item.set('ctime', str(datetime.now()))
        if addon_id:
            xml_item.set('addon_id', toUnicode(addon_id))
        name = SubElement(xml_item, 'name')
        name.text = toUnicode(item.name)
        params = SubElement(xml_item, 'params')
        for key, value in item.params.iteritems():
            params.set(toUnicode(key), toUnicode(value))
        item.id = item_id
        return xml_item
コード例 #5
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
コード例 #6
0
ファイル: serialize.py プロジェクト: trtko1964/archivczsk
    def create_xml_item(self, item):
        log.logDebug("%s create xml item - %s" % (self, item))
        log.debug("{0} create xml item - {1}".format(self, toString(item)))

        import time
        from datetime import datetime
        t = datetime.now()
        t1 = t.timetuple()
        uid = int(time.mktime(t1))
        if item.id:
            item.id = uid
            #log.logDebug("%s create xml item - %s already exists, skipping"%(self,item))
            #log.debug('{0} create xml item - {1} already exists, skipping'.format(self, toString(item)))
            #return
        item_id = item.get_id()
        if self.find_item_by_id(item_id):
            item_id = uid
            item.id = uid
            #log.logDebug("%s create xml item - %s already exists (2), skipping"%(self,item))
            #log.debug('{0} create xml item - {1} already exists, skipping'.format(self, toString(item)))
            #return
        addon_id = item.addon_id
        xml_item = SubElement(self.xml_root_element.find('items'), 'item')
        xml_item.set('id', toUnicode(item_id))
        xml_item.set('ctime', str(datetime.now()))
        if addon_id:
            xml_item.set('addon_id', toUnicode(addon_id))
        name = SubElement(xml_item, 'name')
        name.text = toUnicode(item.name)
        params = SubElement(xml_item, 'params')
        for key, value in item.params.iteritems():
            params.set(toUnicode(key), toUnicode(value))
        item.id = item_id
        return xml_item
コード例 #7
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.")
コード例 #8
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
コード例 #9
0
ファイル: updater.py プロジェクト: 1801/archivczsk
 def check_addons(self, new=True):
     """checks every addon in repository, and update its state accordingly"""
     log.debug('checking addons')
     update_needed = []
     self._get_server_addons()
     for addon_id in self.remote_addons_dict.keys():
         remote_addon = self.remote_addons_dict[addon_id]
         if remote_addon['id'] in self.repository._addons:
             local_addon = self.repository.get_addon(addon_id)
             if local_addon.check_update(False):
                 update_needed.append(local_addon)
         elif new:
             log.debug(
                 "%s not in local repository, adding dummy Addon to update",
                 remote_addon['name'])
             log.logDebug(
                 "'%s' not in local repository, adding Addon to update" %
                 remote_addon['name'])
             new_addon = DummyAddon(self.repository, remote_addon['id'],
                                    remote_addon['name'],
                                    remote_addon['version'])
             update_needed.append(new_addon)
         else:
             log.debug("dont want new addons skipping %s",
                       remote_addon['id'])
     return update_needed
コード例 #10
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
コード例 #11
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
コード例 #12
0
 def check_download(self, data, retval, extra_args):
     self.__console = None
     log.logDebug(
         "Handle subs check download finish... retval=%s, fname=%s" %
         (retval, fname))
     if retval == 0 and os.path.exists(fname):
         item.subs = fname
     self.player.play_item(item)
コード例 #13
0
ファイル: updater.py プロジェクト: puntik1/archivczsk
    def _get_server_addons(self):
        """loads info about addons from remote repository to remote_addons_dict"""
        log.logDebug("pre update xml")
        self._download_update_xml()
        log.logDebug("post update xml")

        pars = parser.XBMCMultiAddonXMLParser(self.update_xml_file)
        self.remote_addons_dict = pars.parse_addons()
コード例 #14
0
ファイル: media.py プロジェクト: trtko1964/archivczsk
 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)
コード例 #15
0
ファイル: media.py プロジェクト: trtko1964/archivczsk
 def open_item_finish(result):
     log.logDebug("Stats (%s) call finished.\n%s"%(action,result))
     if paused and not sendTraktWatchedCmd:
         self.content_provider.pause()
     if sendTraktWatchedCmd:
         return self.cmdTrakt(item, 'watched', finishCB)
     elif finishCB is not None:
         finishCB()
コード例 #16
0
ファイル: search.py プロジェクト: trtko1964/archivczsk
 def search(self, addon, mode):
     self.removeDiacritics()
     log.logDebug("Seeker start exp='%s', addon='%s', mode='%s'" %
                  (self.searchExp, addon, mode))
     seeker.search(self.session,
                   self.searchExp,
                   addon,
                   mode,
                   cb=self.searchCB)
コード例 #17
0
ファイル: updater.py プロジェクト: trtko1964/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
コード例 #18
0
    def ok(self):

        if not self.working and len(self.lst_items) > 0:
            itm = self.getSelectedItem()
            try:
                log.logDebug("Opening item '%s'..." % itm)
            except:
                log.logError("Something failed.\n%s" % traceback.format_exc())
                pass
            self.contentHandler.open_item(itm)
コード例 #19
0
            def pairTrakt_cb(res):
                import json
                import urllib2
                from Plugins.Extensions.archivCZSK.settings import USER_AGENT

                def post_json(url, data, headers={}):
                    postdata = json.dumps(data)
                    headers['Content-Type'] = 'application/json'
                    req = urllib2.Request(url, postdata, headers)
                    req.add_header('User-Agent', USER_AGENT)
                    response = urllib2.urlopen(req)
                    data = response.read()
                    response.close()
                    return data

                try:
                    data = json.loads(
                        post_json(params['trakt']['url'],
                                  data={
                                      'code':
                                      params['trakt']['code'],
                                      'client_id':
                                      params['trakt']['client_id'],
                                      'client_secret':
                                      params['trakt']['client_secret']
                                  },
                                  headers={'Content-Type':
                                           'application/json'}))
                    TOKEN = data['access_token']
                    REFRESH_TOKEN = data['refresh_token']
                    expire = data['expires_in']  #seconds
                    created = data['created_at']
                    EXPIRE = expire + created

                    log.logDebug(
                        "Get token return token=%s, rtoken=%s, exp=%s" %
                        (TOKEN, REFRESH_TOKEN, EXPIRE))

                    #update settings
                    self.content_provider.video_addon.set_setting(
                        params['settings']['token'], '%s' % TOKEN)
                    self.content_provider.video_addon.set_setting(
                        params['settings']['refreshToken'],
                        '%s' % REFRESH_TOKEN)
                    self.content_provider.video_addon.set_setting(
                        params['settings']['expire'], '%s' % EXPIRE)

                    return showInfoMessage(self.session,
                                           params['msg']['success'], 20,
                                           continue_cb)
                except:
                    log.logDebug("Pair trakt failed.\n%s" %
                                 traceback.format_exc())
                return showErrorMessage(self.session, params['msg']['fail'],
                                        20, continue_cb)
コード例 #20
0
 def stop(self):
     log.logDebug("ContentProvider stop")
     if not self.__started:
         log.logDebug("[%s] cannot stop, provider is already stopped"%self)
         log.debug("[%s] cannot stop, provider is already stopped",self)
         return
     self.__started = False
     self.__paused = False
     for f in self.on_stop:
         f()
     log.debug("[%s] stopped", self)
コード例 #21
0
ファイル: contentprovider.py プロジェクト: mx3L/archivczsk
 def start(self):
     log.logDebug("ContentProvider start")
     if self.__started:
         log.logDebug("[%s] cannot start, provider is already started"%self)
         log.debug("[%s] cannot start, provider is already started",self)
         return
     self.__started = True
     self.__paused = False
     for f in self.on_start:
         f()
     log.debug("[%s] started", self)
コード例 #22
0
ファイル: player.py プロジェクト: trtko1964/archivczsk
    def play_stream(self,
                    play_url,
                    play_settings=None,
                    subtitles_url=None,
                    title=None,
                    wholeItem=None):
        log.info("play_stream(%s, %s, %s, %s)" %
                 (play_url, play_settings, subtitles_url, title))
        log.logDebug("play_stream(%s, %s, %s, %s)" %
                     (play_url, play_settings, subtitles_url, title))
        if play_url.startswith("rtmp"):
            rtmp_timeout = int(self.settings.rtmpTimeout.value)
            rtmp_buffer = int(self.settings.rtmpBuffer.value)
            if ' timeout=' not in play_url:
                play_url = "%s timeout=%d" % (play_url, rtmp_timeout)
            if ' buffer=' not in play_url:
                play_url = "%s buffer=%d" % (play_url, rtmp_buffer)
        headers = {}
        if play_settings.get("user-agent"):
            headers["User-Agent"] = play_settings["user-agent"]
        if play_settings.get("extra-headers"):
            headers.update(play_settings["extra-headers"])
        if headers:
            play_url += "#" + "&".join("%s=%s" % (k, v)
                                       for k, v in headers.iteritems())

        service_ref = eServiceReference(play_settings.get("stype", 4097), 0,
                                        toString(play_url))

        if self.video_player is None:
            self.video_player = self.session.openWithCallback(
                self.player_exit_callback, ArchivCZSKMoviePlayer,
                self.player_callback)

        # set infobar text
        titleSet = False
        if wholeItem is not None:
            try:
                if 'title' in wholeItem.info:
                    service_ref.setName(toString(wholeItem.info["title"]))
                    self.video_player.setInfoBarText(
                        toString(wholeItem.info["title"]))
                    titleSet = True
            except:
                log.logError("Set title from item failed (set default).\n%s" %
                             traceback.format_exc())

        if not titleSet:
            service_ref.setName(toString(title))
            self.video_player.setInfoBarText(toString(title))

        self.video_player.play_service_ref(
            service_ref, self._play_item.subs,
            play_settings.get("resume_time_sec"))
コード例 #23
0
 def open_item_success_cb(result):
     log.logDebug("Trakt (%s) call success. %s" % (action, result))
     list_items, command, args = result
     if command is not None and command.lower() == 'result_msg':
         #{'msg':msg, 'isError':isError}
         if args['isError']:
             showErrorMessage(self.session, args['msg'], 10, finishCb)
         else:
             showInfoMessage(self.session, args['msg'], 10, finishCb)
     else:
         finishCb(None)
コード例 #24
0
ファイル: info.py プロジェクト: mx3L/archivczsk
 def is3GPPSupported(self):
     if self.type == 'gstreamer':
         return self.isMP4Supported()
     
     elif self.type == 'eplayer3':
         log.logDebug("3GPP may be supported (eplayer3)")
         return None
             
     elif self.type == 'eplayer2':
         log.logDebug("3GPP may be supported (eplayer2)")
         return None
コード例 #25
0
 def start(self):
     log.logDebug("ContentProvider start")
     if self.__started:
         log.logDebug("[%s] cannot start, provider is already started"%self)
         log.debug("[%s] cannot start, provider is already started",self)
         return
     self.__started = True
     self.__paused = False
     for f in self.on_start:
         f()
     log.debug("[%s] started", self)
コード例 #26
0
 def end_play():
     try:
         self.cmdTimer.stop()
         del self.cmdTimer
         del self.cmdTimer_conn
     except:
         log.logDebug("Release cmd timer failed.\n%s" %
                      traceback.format_exc())
     self.content_screen.workingFinished()
     self.content_provider.resume()
     self.cmdStats(item, 'end')
コード例 #27
0
ファイル: info.py プロジェクト: trtko1964/archivczsk
    def is3GPPSupported(self):
        if self.type == 'gstreamer':
            return self.isMP4Supported()

        elif self.type == 'eplayer3':
            log.logDebug("3GPP may be supported (eplayer3)")
            return None

        elif self.type == 'eplayer2':
            log.logDebug("3GPP may be supported (eplayer2)")
            return None
コード例 #28
0
ファイル: contentprovider.py プロジェクト: mx3L/archivczsk
 def stop(self):
     log.logDebug("ContentProvider stop")
     if not self.__started:
         log.logDebug("[%s] cannot stop, provider is already stopped"%self)
         log.debug("[%s] cannot stop, provider is already stopped",self)
         return
     self.__started = False
     self.__paused = False
     for f in self.on_stop:
         f()
     log.debug("[%s] stopped", self)
コード例 #29
0
ファイル: updater.py プロジェクト: 1801/archivczsk
    def updateArchiv(self, callback=None, verbose=True):
        try:
            if not callback:
                log.logDebug("ArchivUpdater update canceled.")
                self.continueToArchiv()
            else:
                # copy files
                self.downloadZip()
                log.logDebug(
                    "ArchivUpdater download zip archivCZSK complete...")
                # remove tree
                self.backupOrRevertUpdate(True)
                self.BackupCreate = True
                self.removeArchivTree()
                # maybe zipper replace the file
                log.logDebug(
                    "ArchivUpdater remove archivCZSK files complete...")
                # unzip
                unzipper = unzip.unzip()
                #.../Plugins/Extensions/
                log.logDebug("ArchivUpdater extracting to %s" %
                             settings.ENIGMA_PLUGIN_PATH)
                unzipper.extract(self.updateZipFilePath,
                                 settings.ENIGMA_PLUGIN_PATH)
                log.logDebug("ArchivUpdater unzip archivCZSK complete...")
                self.removeTempFiles()

                # restart enigma
                strMsg = "%s" % _("Update archivCZSK complete.")
                self.archiv.session.openWithCallback(
                    self.archiv.ask_restart_e2,
                    MessageBox,
                    strMsg,
                    type=MessageBox.TYPE_INFO)
        except:
            strMsg = "%s" % _("Update archivCZSK failed.")
            try:
                if self.BackupCreate:
                    self.backupOrRevertUpdate(False)
            except:
                strMsg = strMsg + "\n\nFATAL ERROR\n\n" + _(
                    "Please revert archivCZSK manualy from following location before restart!!!"
                ) + "\n\n" + toString(self.backupDir)
                pass
            log.logError(
                "ArchivUpdater update archivCZSK from zip failed.\n%s" %
                traceback.format_exc())

            self.archiv.session.openWithCallback(self.updateFailed,
                                                 MessageBox,
                                                 strMsg,
                                                 type=MessageBox.TYPE_INFO)
            pass
コード例 #30
0
def showCSFDInfo(session, item):
    try:
        #name = removeDiacriticsCsfd(item.name)
        name = removeDiac(item.name)
        name = name.replace('.', ' ').replace('_', ' ').replace('-', ' ')

        name = name.replace(" CZ ", "").replace(" EN ", "").replace(
            " SK ", "").replace(" DA ", "").replace(" FI ", "").replace(
                " CH ", "").replace(" HI ",
                                    "").replace(" JP ",
                                                "").replace(" KH ", "")
        name = name.replace(" RU ", "").replace(" KO ", "").replace(" SP ", "")

        year = 0
        yearStr = ""
        try:
            mask = re.compile('([0-9]{4})', re.DOTALL)
            yearStr = mask.findall(name)[0]
            year = int(yearStr)
        except:
            pass

        if ' (' in name:
            name = name[0:name.index("(")]

        name = name.strip()
        log.logDebug("Csfd search '%s', year=%s." % (name, year))

        csfdType = int(config.plugins.archivCZSK.csfdMode.getValue())

        if csfdType == 1:
            from Plugins.Extensions.archivCZSK.gui.archivcsfd import ArchivCSFD
            session.open(ArchivCSFD, name, year)
        elif csfdType == 2:
            from Plugins.Extensions.CSFD.plugin import CSFD
            session.open(CSFD, name)
        elif csfdType == 3:
            from Plugins.Extensions.CSFDLite.plugin import CSFDLite
            try:
                session.open(CSFDLite, name, yearStr)
            except:
                log.logDebug("Trying CsfdLite older version compatibility...")
                session.open(CSFDLite, name)
        else:
            raise Exception("CsfdMode '%s' not supported." % csfdType)
    except:
        log.logError(
            "Show CSFD info failed (plugin may not be installed).\n%s" %
            traceback.format_exc())
        try:
            showInfoMessage(session, _("Show CSFD info failed."), timeout=6)
        except:
            pass
コード例 #31
0
ファイル: addon.py プロジェクト: mx3L/archivczsk
    def get_setting(self, setting_id):
        try:
            if self.setting_exist(setting_id):
                setting = getattr(self.main, '%s' % setting_id)
                if isinstance(setting, ConfigIP):
                    return setting.getText()
                return setting.getValue()
            else:
                log.logDebug("Cannot retrieve setting '%s' - %s" % (setting_id, self.addon))
        except:
            log.logError("Cannot retrieve setting '%s' - %s\n%s" % (setting_id, self.addon, traceback.format_exc()))

        return ""
コード例 #32
0
ファイル: addon.py プロジェクト: firo11/archivczsk
 def get_setting(self, setting_id):
     try:
         setting = getattr(self.main, '%s' % setting_id)
     except (ValueError, KeyError):
         log.error('%s cannot retrieve setting %s,  Invalid setting id',
                   self, setting_id)
         log.logDebug("Cannot retrieve setting '%s' - %s" %
                      (setting_id, self.addon))
         return ""
     else:
         if isinstance(setting, ConfigIP):
             return setting.getText()
         return setting.getValue()
コード例 #33
0
ファイル: info.py プロジェクト: trtko1964/archivczsk
    def isHLSSupported(self):
        """
        @return: True if its 100% supported
        @return: None may be supported
        @return: False not supported
        """
        if self.type == 'gstreamer':
            fragmentedlib = os.path.join(GSTREAMER_PATH, 'libgstfragmented.so')
            fragmentedlib2 = os.path.join(GSTREAMER10_PATH,
                                          'libgstfragmented.so')
            if os.path.isfile(fragmentedlib) or os.path.isfile(fragmentedlib2):
                log.logDebug("HLS supported")
                return True
            log.logDebug(
                "HLS not supported, missing file '/usr/lib/gstreamer-*/libgstfragmented.so'"
            )
            return False

        elif self.type == 'eplayer3':
            log.logDebug("HLS may be supported (eplayer3)")
            return None

        elif self.type == 'eplayer2':
            log.logDebug("HLS may be supported (eplayer2)")
            return None
コード例 #34
0
ファイル: updater.py プロジェクト: trtko1964/archivczsk
 def showUpdatePremium(self):
     try:
         if not os.path.isdir(os.path.join(settings.ENIGMA_PLUGIN_PATH,'archivCZSKpremium')):
             strMsg = _('Do you want to try ArchivCZSK premium?')+'\n\n'
             strMsg += _('More info: ')+'https://czsk.page.link/inf\n'
             self.archiv.session.openWithCallback(self.showUpdatePremium2,
                         MessageBox,
                         strMsg,
                         type=MessageBox.TYPE_YESNO)
         else:
             self.downloadCommit()
     except:
         log.logDebug("checkUpdateRequest failed.\n%s"%traceback.format_exc())
         self.downloadCommit()
コード例 #35
0
ファイル: info.py プロジェクト: trtko1964/archivczsk
    def isRTMPSupported(self):
        """
        @return: True if its 100% supported
        @return: None may be supported
        @return: False not supported
        """

        if self.type == 'gstreamer':
            rtmplib = os.path.join(GSTREAMER_PATH, 'libgstrtmp.so')
            rtmplib2 = os.path.join(GSTREAMER10_PATH, 'libgstrtmp.so')

            librtmp = os.path.join(LIB_PATH, 'librtmp.so.0')
            librtmp2 = os.path.join(LIB_PATH, 'librtmp.so.1')

            # flv is file container used in rtmp
            flvlib = os.path.join(GSTREAMER_PATH, 'libgstflv.so')
            flvlib2 = os.path.join(GSTREAMER10_PATH, 'libgstflv.so')
            if (os.path.isfile(rtmplib) or os.path.isfile(rtmplib2)) and (
                    os.path.isfile(librtmp) or os.path.isfile(librtmp2)) and (
                        os.path.isfile(flvlib) or os.path.isfile(flvlib2)):
                log.logDebug("RTMP supported for 100%...")
                return True

            msg = ""
            if not (os.path.isfile(rtmplib) or os.path.isfile(rtmplib2)):
                msg += "\n'libgstrtmp.so' is missing..."
            if not (os.path.isfile(librtmp) or os.path.isfile(librtmp2)):
                msg += "\n'%s' or '%s' is missing..." % (librtmp, librtmp2)
            if not (os.path.isfile(flvlib) or os.path.isfile(flvlib2)):
                msg += "\n'libgstflv.so' is missing..."

            log.logDebug(
                "RTMP not supported (some file missing '/usr/lib/gstreamer-*')...%s"
                % msg)
            return False

        elif self.type == 'eplayer2':
            # dont know any eplayer2 which supports rtmp
            # also not used anymore so setting to false
            log.logDebug("RTMP may be supported (eplayer2)...")
            return False
        elif self.type == 'eplayer3':
            rtmplib = '/usr/lib/librtmp.so'
            log.logDebug("RTMP may be supported (eplayer3)...")
            if os.path.isfile(rtmplib):
                log.logDebug("RTMP may be supported (eplayer3)...\n%s" %
                             rtmplib)
                # some older e2 images not support rtmp
                # even if there is this library(missing support in servicemp3)
                return None
コード例 #36
0
ファイル: seeker.py プロジェクト: trtko1964/archivczsk
    def showCSFDInfo(self, session, searchExp):
        try:
            name = removeDiac(searchExp)
            name = name.replace('.', ' ').replace('_', ' ').replace('*', '')

            # remove languages ... "Mother - CZ, EN, KO (2017)"
            name = re.sub("\s-\s[A-Z]{2}(,\s[A-Z]{2})*\s\(", " (", name)

            year = 0
            yearStr = ""
            try:
                mask = re.compile('([0-9]{4})', re.DOTALL)
                yearStr = mask.findall(name)[0]
                year = int(yearStr)
            except:
                pass
            # remove year
            name = re.sub("\([0-9]{4}\)", "", name)

            name = name.strip()
            log.logDebug("Csfd search '%s', year=%s." % (name, year))

            csfdType = int(config.plugins.archivCZSK.csfdMode.getValue())

            if csfdType == 1:
                from Plugins.Extensions.archivCZSK.gui.archivcsfd import ArchivCSFD
                session.open(ArchivCSFD, name, year)
            elif csfdType == 2:
                from Plugins.Extensions.CSFD.plugin import CSFD
                session.open(CSFD, name)
            elif csfdType == 3:
                from Plugins.Extensions.CSFDLite.plugin import CSFDLite
                try:
                    session.open(CSFDLite, name, yearStr)
                except:
                    log.logDebug(
                        "Trying CsfdLite older version compatibility...")
                    session.open(CSFDLite, name)
            else:
                raise Exception("CsfdMode '%s' not supported." % csfdType)
        except:
            log.logError(
                "Show CSFD info failed (plugin may not be installed).\n%s" %
                traceback.format_exc())
            try:
                showInfoMessage(session,
                                _("Show CSFD info failed."),
                                timeout=6)
            except:
                pass
コード例 #37
0
ファイル: util.py プロジェクト: puntik1/archivczsk
def download_to_file_async(url, dest, callback=None, data=None, headers=None, timeout=60):
    def got_data(data):
        if data:
            try:
                with open(dest, "wb") as f:
                    f.write(data)
            except Exception as e:
                log.logError("download_to_file_async: %s"% toString(e))
                callback(None, None)
            else:
                callback(url, dest)
        else:
            callback(None, None)
    log.logDebug("download_to_file_async: %s -> %s"% (toString(url), toString(dest)))
    return url_get_data_async(url, got_data, data, headers, timeout)
コード例 #38
0
ファイル: info.py プロジェクト: mx3L/archivczsk
    def isRTMPSupported(self):
        """
        @return: True if its 100% supported
        @return: None may be supported
        @return: False not supported
        """
        

        if self.type == 'gstreamer':
            rtmplib = os.path.join(GSTREAMER_PATH, 'libgstrtmp.so')
            rtmplib2 = os.path.join(GSTREAMER10_PATH, 'libgstrtmp.so')
            
            librtmp = os.path.join(LIB_PATH, 'librtmp.so.0')
            librtmp2 = os.path.join(LIB_PATH, 'librtmp.so.1')
            
            # flv is file container used in rtmp
            flvlib = os.path.join(GSTREAMER_PATH, 'libgstflv.so')
            flvlib2 = os.path.join(GSTREAMER10_PATH, 'libgstflv.so')
            if (os.path.isfile(rtmplib) or os.path.isfile(rtmplib2)) and (os.path.isfile(librtmp) or os.path.isfile(librtmp2)) and (os.path.isfile(flvlib) or os.path.isfile(flvlib2)):
                log.logDebug("RTMP supported for 100%...")
                return True

            msg = ""
            if not (os.path.isfile(rtmplib) or os.path.isfile(rtmplib2)):
                msg+= "\n'libgstrtmp.so' is missing..."
            if not (os.path.isfile(librtmp) or os.path.isfile(librtmp2)):
                msg+= "\n'%s' or '%s' is missing..."%(librtmp, librtmp2)
            if not (os.path.isfile(flvlib) or os.path.isfile(flvlib2)):
                msg+= "\n'libgstflv.so' is missing..."

            log.logDebug("RTMP not supported (some file missing '/usr/lib/gstreamer-*')...%s"%msg)
            return False
            
        elif self.type == 'eplayer2':
            # dont know any eplayer2 which supports rtmp
            # also not used anymore so setting to false
            log.logDebug("RTMP may be supported (eplayer2)...")
            return False
        elif self.type == 'eplayer3':
            rtmplib = '/usr/lib/librtmp.so'
            log.logDebug("RTMP may be supported (eplayer3)...")
            if os.path.isfile(rtmplib):
                log.logDebug("RTMP may be supported (eplayer3)...\n%s"%rtmplib)
                # some older e2 images not support rtmp
                # even if there is this library(missing support in servicemp3)
                return None
コード例 #39
0
ファイル: info.py プロジェクト: mx3L/archivczsk
def showCSFDInfo(session, item):
    try:
        #name = removeDiacriticsCsfd(item.name)
        name = removeDiac(item.name)
        name = name.replace('.', ' ').replace('_', ' ').replace('*','')
        
        # remove languages ... "Mother - CZ, EN, KO (2017)"
        name = re.sub("\s-\s[A-Z]{2}(,\s[A-Z]{2})*\s\(", " (", name)
        
        year = 0
        yearStr = ""
        try:
            mask = re.compile('([0-9]{4})', re.DOTALL)
            yearStr = mask.findall(name)[0]
            year = int(yearStr)
        except:
            pass
        # remove year
        name = re.sub("\([0-9]{4}\)","", name)

        name = name.strip()
        log.logDebug("Csfd search '%s', year=%s."%(name,year))

        csfdType = int(config.plugins.archivCZSK.csfdMode.getValue())

        if csfdType == 1:
            from Plugins.Extensions.archivCZSK.gui.archivcsfd import ArchivCSFD
            session.open(ArchivCSFD, name, year)
        elif csfdType == 2:
            from Plugins.Extensions.CSFD.plugin import CSFD
            session.open(CSFD, name)
        elif csfdType == 3:
            from Plugins.Extensions.CSFDLite.plugin import CSFDLite
            try:
                session.open(CSFDLite, name, yearStr)
            except:
                log.logDebug("Trying CsfdLite older version compatibility...")
                session.open(CSFDLite, name)
        else:
            raise Exception("CsfdMode '%s' not supported." % csfdType)
    except:
        log.logError("Show CSFD info failed (plugin may not be installed).\n%s"%traceback.format_exc())
        try:
            showInfoMessage(session, _("Show CSFD info failed."), timeout=6)
        except:
            pass
コード例 #40
0
ファイル: updater.py プロジェクト: mx3L/archivczsk
            def check_archiv():
                try:
                    if self.downloadUpdateXml():
                        from Plugins.Extensions.archivCZSK.version import version
                        local_version = version
                        xmlroot = util.load_xml(self.updateXmlFilePath).getroot()
                        self.remote_version = xmlroot.attrib.get('version')
                        log.logDebug("ArchivUpdater version local/remote: %s/%s" % (local_version, self.remote_version))

                        if util.check_version(local_version, self.remote_version):
                            self.needUpdate = True
                        else:
                            self.needUpdate = False
                    else:
                        self.needUpdate = False
                except:
                    log.logError("ArchivUpdater compare versions failed.\n%s"%traceback.format_exc())
コード例 #41
0
ファイル: player.py プロジェクト: mx3L/archivczsk
 def setAspect(self, aspect, policy, policy2):
     log.info('aspect: %s policy: %s policy2: %s' % (str(aspect), str(policy), str(policy2)))
     log.logDebug('aspect: %s policy: %s policy2: %s' % (str(aspect), str(policy), str(policy2)))
     if aspect:
         try:
             open("/proc/stb/video/aspect", "w").write(aspect)
         except IOError as e:
             print e
     if policy:
         try:
             open("/proc/stb/video/policy", "w").write(policy)
         except IOError as e:
             print e
     if policy2:
         try:
             open("/proc/stb/video/policy2", "w").write(policy2)
         except IOError as e:
             print e
コード例 #42
0
ファイル: updater.py プロジェクト: mx3L/archivczsk
    def updateArchiv(self, callback=None, verbose=True):
        try:
            if not callback:
                log.logDebug("ArchivUpdater update canceled.")
                self.continueToArchiv()
            else:
                # copy files
                self.downloadZip()
                log.logDebug("ArchivUpdater download zip archivCZSK complete...")
                # remove tree
                self.backupOrRevertUpdate(True)
                self.BackupCreate = True
                self.removeArchivTree()
                # maybe zipper replace the file 
                log.logDebug("ArchivUpdater remove archivCZSK files complete...")
                # unzip
                unzipper = unzip.unzip()
                #.../Plugins/Extensions/
                log.logDebug("ArchivUpdater extracting to %s" % settings.ENIGMA_PLUGIN_PATH)
                unzipper.extract(self.updateZipFilePath, settings.ENIGMA_PLUGIN_PATH)
                log.logDebug("ArchivUpdater unzip archivCZSK complete...")
                self.removeTempFiles()

                # restart enigma
                strMsg = "%s" % _("Update archivCZSK complete.")
                self.archiv.session.openWithCallback(self.archiv.ask_restart_e2,
                        MessageBox,
                        strMsg,
                        type=MessageBox.TYPE_INFO)
        except:
            strMsg = "%s" % _("Update archivCZSK failed.")
            try:
                if self.BackupCreate:
                    self.backupOrRevertUpdate(False)
            except:
                strMsg = strMsg + "\n\nFATAL ERROR\n\n"+_("Please revert archivCZSK manualy from following location before restart!!!")+"\n\n"+toString(self.backupDir)
                pass
            log.logError("ArchivUpdater update archivCZSK from zip failed.\n%s"%traceback.format_exc())
            
            self.archiv.session.openWithCallback(self.updateFailed,
                    MessageBox,
                    strMsg,
                    type=MessageBox.TYPE_INFO)
            pass
コード例 #43
0
ファイル: updater.py プロジェクト: mx3L/archivczsk
 def check_addons(self, new=True):
     """checks every addon in repository, and update its state accordingly"""
     log.debug('checking addons')
     update_needed = []
     self._get_server_addons()
     for addon_id in self.remote_addons_dict.keys():
         remote_addon = self.remote_addons_dict[addon_id]
         if remote_addon['id'] in self.repository._addons:
             local_addon = self.repository.get_addon(addon_id)
             if local_addon.check_update(False):
                 update_needed.append(local_addon)
         elif new:
             log.debug("%s not in local repository, adding dummy Addon to update", remote_addon['name'])
             log.logDebug("'%s' not in local repository, adding Addon to update"%remote_addon['name'])
             new_addon = DummyAddon(self.repository, remote_addon['id'], remote_addon['name'], remote_addon['version'])
             update_needed.append(new_addon)
         else:
             log.debug("dont want new addons skipping %s", remote_addon['id'])
     return update_needed        
コード例 #44
0
ファイル: player.py プロジェクト: mx3L/archivczsk
    def play_stream(self, play_url, play_settings=None, subtitles_url=None, title=None, wholeItem=None):
        log.info("play_stream(%s, %s, %s, %s)"%(play_url, play_settings, subtitles_url, title))
        log.logDebug("play_stream(%s, %s, %s, %s)"%(play_url, play_settings, subtitles_url, title))
        if play_url.startswith("rtmp"):
            rtmp_timeout = int(self.settings.rtmpTimeout.value)
            rtmp_buffer = int(self.settings.rtmpBuffer.value)
            if ' timeout=' not in play_url:
                play_url = "%s timeout=%d" % (play_url, rtmp_timeout)
            if ' buffer=' not in play_url:
                play_url = "%s buffer=%d" % (play_url, rtmp_buffer)
        headers = {}
        if play_settings.get("user-agent"):
            headers["User-Agent"] = play_settings["user-agent"]
        if play_settings.get("extra-headers"):
            headers.update(play_settings["extra-headers"])
        if headers:
            play_url += "#" + "&".join("%s=%s"%(k,v) for k,v in headers.iteritems())

        service_ref = eServiceReference(play_settings.get("stype", 4097), 0, toString(play_url))
        
        if self.video_player is None:
            self.video_player = self.session.openWithCallback(self.player_exit_callback,
                    ArchivCZSKMoviePlayer, self.player_callback)

        # set infobar text
        titleSet = False
        if wholeItem is not None:
            try:
                if 'title' in  wholeItem.info:
                    service_ref.setName(toString(wholeItem.info["title"]))
                    self.video_player.setInfoBarText(toString(wholeItem.info["title"]))
                    titleSet = True
            except:
                log.logError("Set title from item failed (set default).\n%s"%traceback.format_exc())

        if not titleSet:
            service_ref.setName(toString(title))
            self.video_player.setInfoBarText(toString(title))
        
        self.video_player.play_service_ref(service_ref, 
                self._play_item.subs, play_settings.get("resume_time_sec"))
コード例 #45
0
ファイル: updater.py プロジェクト: mx3L/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.")
コード例 #46
0
ファイル: contentprovider.py プロジェクト: mx3L/archivczsk
    def handle_substitles_and_play(self, item):
        def check_download(self, data, retval, extra_args):
            self.__console = None
            log.logDebug("Handle subs check download finish... retval=%s, fname=%s"%(retval, fname))
            if retval == 0 and os.path.exists(fname):
                item.subs = fname
            self.player.play_item(item)

        try:
            subs = ''
            if not isinstance(item, PPlaylist) and hasattr(item, 'subs'):
                subs = "%s"%item.subs
            if subs.startswith('http'):
                spl = subs.split('/')
                fname = os.path.join(config.plugins.archivCZSK.tmpPath.getValue(), spl[len(spl)-1])
                try:
                            
                    download_web_file(subs, fname)
                    item.subs = fname
                    self.player.play_item(item)
                except urllib2.URLError: #SSL cert problem
                    if subs.startswith('https:\\'): # only for https
                        log.logDebug("Handle substitle file failed (try download by CURL).\n%s"%traceback.format_exc())
                        # download file by CURL
                        self.__console = Console()
                        self.__console.ePopen('curl -kfo %s %s' % (fname, subs), check_download)
                    else:
                        log.logError("Handle substitle file failed.\n%s"%traceback.format_exc())
                        self.player.play_item(item)
                except:
                    log.logError("Handle substitle file failed.\n%s"%traceback.format_exc())
                    self.player.play_item(item)
            else:
                self.player.play_item(item)
        except:
            log.logError("Handle substitle file failed.\n%s"%traceback.format_exc())
            self.player.play_item(item)
コード例 #47
0
ファイル: info.py プロジェクト: mx3L/archivczsk
 def __init__(self):
     self.type = 'gstreamer'
     self.version = 0
     if os.path.isdir(GSTREAMER10_PATH):
         print 'found gstreamer'
         log.logDebug('Found gstreamer 1.0')
         self.type = 'gstreamer'
         self.version = '1.0'
     elif os.path.isdir(GSTREAMER_PATH):
         print 'found gstreamer'
         log.logDebug('Found gstreamer 0.10')
         self.type = 'gstreamer'
         self.version = '0.10'
     elif os.path.isfile(EPLAYER3_PATH):
         log.logDebug('Found eplayer3')
         print 'found eplayer3'
         self.type = 'eplayer3'
     elif os.path.isfile(EPLAYER2_PATH):
         log.logDebug('Found eplayer2')
         print 'found eplayer2'
         self.type = 'eplayer2'
コード例 #48
0
ファイル: contentprovider.py プロジェクト: mx3L/archivczsk
 def pause(self):
     log.logDebug("ContentProvider pause")
     if not self.__started:
         log.logDebug("[%s] cannot pause, provider not started yet"%self)
         log.debug("[%s] cannot pause, provider not started yet",self)
         return
     if self.__paused:
         log.logDebug("[%s] cannot pause, provider is already paused"%self)
         log.debug("[%s] cannot pause, provider is already paused",self)
         return
     self.__paused = True
     for f in self.on_pause:
         f()
     log.debug("[%s] paused", self)
コード例 #49
0
ファイル: contentprovider.py プロジェクト: mx3L/archivczsk
 def resume(self):
     log.logDebug("ContentProvider resume")
     if not self.__started:
         log.logDebug("[%s] cannot resume, provider not started yet"%self)
         log.debug("[%s] cannot resume, provider not started yet",self)
         return
     if not self.__paused:
         log.logDebug("[%s] cannot resume, provider is already running"%self)
         log.debug("[%s] cannot resume, provider is already running",self)
         return
     self.__paused = False
     for f in self.on_resume:
         f()
     log.debug("[%s] resumed", self)
コード例 #50
0
ファイル: info.py プロジェクト: mx3L/archivczsk
 def isMMSSupported(self):
     """
     @return: True if its 100% supported
     @return: None may be supported
     @return: False not supported
     """
     if self.type == 'gstreamer':
         mmslib = os.path.join(GSTREAMER_PATH, 'libgstmms.so')
         mmslib2 = os.path.join(GSTREAMER10_PATH, 'libgstmms.so')
         if os.path.isfile(mmslib) or os.path.isfile(mmslib2):
             log.logDebug("MMS supported")
             return True
         log.logDebug("MMS not supported, missing file '/usr/lib/gstreamer-*/libgstmms.so'")
         return False
         
     elif self.type == 'eplayer3':
         log.logDebug("MMS may be supported (eplayer3)")
         return None
             
     elif self.type == 'eplayer2':
         log.logDebug("MMS may be supported (eplayer2)")
         return None
コード例 #51
0
ファイル: info.py プロジェクト: mx3L/archivczsk
 def isHTTPSupported(self):
     """
     @return: True if its 100% supported
     @return: None may be supported
     @return: False not supported
     """
     if self.type == 'gstreamer':
         httplib = os.path.join(GSTREAMER_PATH, 'libgstsouphttpsrc.so')
         httplib2 = os.path.join(GSTREAMER10_PATH, 'libgstsouphttpsrc.so')
         if os.path.isfile(httplib) or os.path.isfile(httplib2):
             log.logDebug("HTTP supported")
             return True
         log.logDebug("HTTP not supported, missing file '/usr/lib/gstreamer-*/libgstsouphttpsrc.so'")
         return False
         
     elif self.type == 'eplayer3':
         log.logDebug("HTTP may be supported (eplayer3)")
         return True
             
     elif self.type == 'eplayer2':
         log.logDebug("HTTP may be supported (eplayer2)")
         return True
コード例 #52
0
ファイル: info.py プロジェクト: mx3L/archivczsk
    def isRTSPSupported(self):
        """
        @return: True if its 100% supported
        @return: None may be supported
        @return: False not supported
        """
        if self.type == 'gstreamer':
            rtsplib = os.path.join(GSTREAMER_PATH, 'libgstrtsp.so')
            rtplib = os.path.join(GSTREAMER_PATH, 'libgstrtp.so')
            rtpmanager = os.path.join(GSTREAMER_PATH, 'libgstrtpmanager.so')
            rtsplib2 = os.path.join(GSTREAMER10_PATH, 'libgstrtsp.so')
            rtplib2 = os.path.join(GSTREAMER10_PATH, 'libgstrtp.so')
            rtpmanager2 = os.path.join(GSTREAMER10_PATH, 'libgstrtpmanager.so')
            if ((os.path.isfile(rtsplib) and os.path.isfile(rtplib) and os.path.isfile(rtpmanager)) or
                (os.path.isfile(rtsplib2) and os.path.isfile(rtplib2) and os.path.isfile(rtpmanager2))):
                log.logDebug("RTSP supported for 100%...")
                return True

            msg = ""
            if not (os.path.isfile(rtsplib) or os.path.isfile(rtsplib2)):
                msg+= "\n'libgstrtsp.so' is missing..."
            if not (os.path.isfile(rtplib) or os.path.isfile(rtplib2)):
                msg+= "\n'libgstrtp.so' is missing..."
            if not (os.path.isfile(rtpmanager2) or os.path.isfile(rtpmanager)):
                msg+= "\n'libgstrtpmanager.so' is missing..."

            log.logDebug("RTSP may be supported (some file missing '/usr/lib/gstreamer-*')...%s"%msg)
            return False
            
        elif self.type == 'eplayer3':
            log.logDebug("RTSP may be supported (eplayer3)")
            return None
                
        elif self.type == 'eplayer2':
            log.logDebug("RTSP may be supported (eplayer2)")
            return None
コード例 #53
0
ファイル: media.py プロジェクト: mx3L/archivczsk
 def open_item_error_cb(failure):
     log.logDebug("Trakt (%s) call failed. %s"%(action,failure))
     return showErrorMessage(self.session, "Operation failed.", 10, finishCb)
コード例 #54
0
ファイル: contentprovider.py プロジェクト: mx3L/archivczsk
 def check_download(self, data, retval, extra_args):
     self.__console = None
     log.logDebug("Handle subs check download finish... retval=%s, fname=%s"%(retval, fname))
     if retval == 0 and os.path.exists(fname):
         item.subs = fname
     self.player.play_item(item)