Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    def getPosterImage(self, item):
        log.logDebug("Processing image '%s'" % self.procPosterImage)
        if self.procPosterImage:
            # handle if picload.startDecode failed etc. invalid image file, i dont have failed event from picload
            delta = self.posterStartProc + datetime.timedelta(seconds=10)
            if datetime.datetime.now() > delta:
                log.logDebug("Processing image reset ...")
                self.procPosterImage = False
            else:
                return

        self.posterStartProc = datetime.datetime.now()
        self.procPosterImage = True

        posterFile = os.path.join(self.imagePosterDir, 'poster.dat')

        try:
            self.posterChanged = False
            url = item.image
            log.logDebug("getPosterImage start '%s'" % url)

            videoPoster, isValid = self.getPosterImageName(url)
            #videoPoster = tuple[0]
            if not isValid:
                #tuple[1]:
                if self.lastPoster != self.noImage:
                    self.posterChanged = True
                    shutil.copy(videoPoster, posterFile)
                self.lastPoster = videoPoster
                return posterFile

            isDownloaded = False
            if self.lastPoster != videoPoster:
                self.posterChanged = True
            self.lastPoster = videoPoster
            #videoPoster
            if not os.path.isfile(videoPoster):
                isDownloaded = True
                download_web_file(url, videoPoster)

            # in some case file got 0b then all lod image fail (send imgPath=None)
            if os.path.getsize(videoPoster) < 100:
                os.remove(videoPoster)
                raise Exception("Poster image got less than 100 bytes.")

            # copy current to poster
            # only this way i can change poster dynamiclly on UI
            shutil.copy(videoPoster, posterFile)

            log.logDebug('getPosterImage finished (Downloaded=%s, change=%s)' %
                         (isDownloaded, self.posterChanged))
            return posterFile
        except:
            if self.lastPoster != self.noImage:
                self.posterChanged = True
                try:
                    shutil.copy(self.noImage, posterFile)
                except:
                    log.logError(
                        "Please change path for poster images in plugin settings.\n%s"
                        % traceback.format_exc())
                    return None
            log.logError("getPosterImage failed (return no image).\n%s" %
                         traceback.format_exc())
            return posterFile
            pass
        finally:
            # handle no necessary change picture
            if not self.posterChanged:
                self.procPosterImage = False
            # let only max file on hdd
            self.handleMaxImages()