예제 #1
0
    def _getSubtitle(self, item, args, id):
        log("(Media) Subtitle")
        subtitle = Cache(
            "%s.mediainfo.subtitles" % self._mediaSettings.mediaType,
            ttl=_ttl,
            readOnly=True,
            last_changed=self._mediaSettings.subtitle_lastchanged,
        ).get(id)
        if not subtitle:
            try:
                log("(Media) Getting subtitle")
                _res = self._handle_param(**self._mediaSettings.subtitles_provider.item(*args))
                if not self.stop.is_set():
                    subtitle = cleanDictList(
                        self._mediaSettings.subtitles_provider.build_item(_res, *args)
                    )  # 1. Get request parameter. 2. Perform request(s). 3. Build info.
            except:
                log_error()
                sys.exc_clear()
            else:
                if subtitle:
                    Cache(
                        "%s.mediainfo.subtitles" % self._mediaSettings.mediaType,
                        ttl=_ttl,
                        last_changed=self._mediaSettings.subtitle_lastchanged,
                    )[id] = subtitle

        if self._callbackfn:
            log("(Media) Callback with '%s'" % item["label"])
            self._callbackfn(self._progressValue, item, subtitle or {})

        if subtitle:
            item.setdefault("stream_info", {})["subtitle"] = subtitle.setdefault("stream_info", {}).get("subtitle", {})
            item.setdefault("params", {}).update(subtitle.get("params", {}))
예제 #2
0
    def _getSubtitle(self, item, args, id):
        log("(Media) Subtitle")
        subtitle = Cache("%s.mediainfo.subtitles" %self._mediaSettings.mediaType, ttl=_ttl, readOnly=True, last_changed=self._mediaSettings.subtitle_lastchanged).get(id)
        if not subtitle:
            try:
                log("(Media) Getting subtitle")
                _res = self._handle_param(**self._mediaSettings.subtitles_provider.item(*args))
                if not self.stop.is_set():
                    subtitle = cleanDictList(self._mediaSettings.subtitles_provider.build_item(_res, *args)) # 1. Get request parameter. 2. Perform request(s). 3. Build info.
            except:
                log_error()
                sys.exc_clear()
            else:
                if subtitle:
                    Cache("%s.mediainfo.subtitles" %self._mediaSettings.mediaType, ttl=_ttl, last_changed=self._mediaSettings.subtitle_lastchanged)[id] = subtitle

        if self._callbackfn:
            log("(Media) Callback with '%s'" %item['label'])
            self._callbackfn(self._progressValue, item, subtitle or {})

        if subtitle:
            item.setdefault('stream_info', {})['subtitle'] = subtitle.setdefault('stream_info', {}).get("subtitle", {})
            item.setdefault('params', {}).update(subtitle.get('params',  {}))