コード例 #1
0
    def _get_sources(self):
        params = {'id': self.url, 'server': '33', 'ts': self.ts}

        def get_stream_url(base_url, params, DD=None):
            params['_'] = int(generate_(params, DD=DD))
            data = util.get_json(base_url, params=params)

            return data['target']

        try:
            url = get_stream_url(self._base_url, params)
        except KeyError:
            try:
                del params['_']
                del params['ts']
                # I don't know if this is reliable or not.
                # For now it works.
                data = util.get_json('http://9anime.cloud/ajax/episode/info',
                                     params=params)
                url = data['target']
            except Exception as e:
                raise AnimeDLError(
                    '9anime probably changed their API again. Check the issues'
                    'here https://github.com/vn-ki/anime-downloader/issues. '
                    'If it has not been reported yet, please open a new issue'
                ) from e

        return [
            ('rapidvideo', url),
        ]
コード例 #2
0
ファイル: anime.py プロジェクト: anime-dl/anime-downloader
    def __init__(self,
                 url=None,
                 quality='720p',
                 fallback_qualities=None,
                 _skip_online_data=False,
                 subbed=None):
        self.url = url
        self.subbed = subbed

        if fallback_qualities is None:
            fallback_qualities = ['720p', '480p', '360p']

        self._fallback_qualities = [
            q for q in fallback_qualities if q in self.QUALITIES
        ]

        if quality in self.QUALITIES:
            self.quality = quality
        else:
            raise AnimeDLError('Quality {0} not found in {1}'.format(
                quality, self.QUALITIES))

        if not _skip_online_data:
            logger.info('Extracting episode info from page')
            self._episode_urls = self.get_data()
            self._len = len(self._episode_urls)
コード例 #3
0
    def __init__(self, url, quality='720p', parent=None, ep_no=None):
        if quality not in self.QUALITIES:
            raise AnimeDLError('Incorrect quality: "{}"'.format(quality))

        self.ep_no = ep_no
        self.url = url
        self.quality = quality
        self._parent = parent
        self._sources = None
        self.pretty_title = '{}-{}'.format(self._parent.title, self.ep_no)

        logging.debug("Extracting stream info of id: {}".format(self.url))

        # TODO: New flag: online_data=False
        try:
            self.get_data()
            # Just to verify the source is acquired
            self.source().stream_url
        except NotFoundError:
            # Issue #28
            qualities = copy.copy(self.QUALITIES)
            qualities.remove(self.quality)
            for quality in qualities:
                logging.warning('Quality {} not found. Trying {}.'.format(
                    self.quality, quality))
                self.quality = quality
                try:
                    self.get_data()
                    self.source().stream_url
                    # parent.quality = self.quality
                    break
                except NotFoundError:
                    # Issue #28
                    qualities.remove(self.quality)
                    pass
コード例 #4
0
    def getData(self):
        params = {'id': self.episode_id, 'server': '33', 'ts': self.ts}
        params['param_'] = int(generate_(params))

        logging.debug('API call params: {}'.format(params))

        url = self._base_url.format(**params)

        data = util.get_json(url)

        try:
            url = data['target']
        except KeyError as e:
            raise AnimeDLError(
                '9anime probably changed their API again. Check the issues'
                'here https://github.com/vn-ki/anime-downloader/issues. '
                'If it has not been reported yet, please open a new issue'
            ) from e

        headers = desktop_headers
        headers['referer'] = 'www5.9anime.is'

        data = util.get_stream_url_rapidvideo(url, self.quality, headers)

        self.stream_url = data['stream_url']
        self.title = data['title']
        self.image = data['image']
コード例 #5
0
    def __init__(self, episode_id, quality='720p', parent=None,
                 ep_no=None):
        if quality not in self.QUALITIES:
            raise AnimeDLError('Incorrect quality: "{}"'.format(quality))

        self.ep_no = ep_no
        self.episode_id = episode_id
        self.quality = quality
        self._parent = parent
        self.pretty_title = '{}-{}'.format(self._parent.title, self.ep_no)

        logging.debug("Extracting stream info of id: {}".format(self.episode_id))

        try:
            self.getData()
        except NotFoundError:
            for quality in parent.QUALITIES:
                parent.QUALITIES.remove(self.quality)
                logging.warning('Quality {} not found. Trying {}.'.format(self.quality, quality))
                self.quality = quality
                try:
                    self.getData()
                    parent.quality = self.quality
                    break
                except NotFoundError:
                    pass
コード例 #6
0
    def _scrape_episode(self, response):
        raise AnimeDLError(
            'Kissanime is not currently working properly.  Try a different provider. '
            'Check the issues here https://github.com/vn-ki/anime-downloader/issues. '
        )

        rapid_re = re.compile(r'iframe.*src="https://(.*?)"')
        rapid_url = rapid_re.findall(response.text)[0]
        return [('rapidvideo', rapid_url)]
コード例 #7
0
ファイル: anime.py プロジェクト: Aify/anime-downloader
    def __init__(self, url, quality='720p'):
        self.url = url

        if quality in self.QUALITIES:
            self.quality = quality
        else:
            raise AnimeDLError('Quality {0} not found in {1}'.format(
                quality, self.QUALITIES))

        logging.info('Extracting episode info from page')
        self.getEpisodes()
コード例 #8
0
    def __init__(self, url=None, quality='720p', _skip_online_data=False):
        self.url = url

        if quality in self.QUALITIES:
            self.quality = quality
        else:
            raise AnimeDLError('Quality {0} not found in {1}'.format(quality, self.QUALITIES))

        if not _skip_online_data:
            logging.info('Extracting episode info from page')
            self.getEpisodes()
コード例 #9
0
    def __init__(self, url=None, quality='720p',
                 fallback_qualities=['720p', '480p', '360p'],
                 _skip_online_data=False):
        self.url = url
        self._fallback_qualities = fallback_qualities

        if quality in self.QUALITIES:
            self.quality = quality
        else:
            raise AnimeDLError(
                'Quality {0} not found in {1}'.format(quality, self.QUALITIES))

        if not _skip_online_data:
            logging.info('Extracting episode info from page')
            self.get_data()
コード例 #10
0
    def _get_sources(self):

        # Scrape episode page to get link for download page
        soup = helpers.soupify(helpers.get(self.url))
        dl_page_url = []

        server = self.config.get('server', 'cdn')

        if server == 'cdn':
            # TODO: This should be a extractor class
            for element in soup.find_all(
                    'a', href=re.compile('https://vidstreaming\.io')):
                source_url = element.get('href')
                logger.debug('%s' % (source_url))
                dl_page_url = source_url
            # Scrape download page for default hoster (cdnfile) file link
            soup_cdnfile = helpers.soupify(helpers.get(dl_page_url))
            cdnfile_url = []

            if soup_cdnfile.find_all(
                    'a',
                    href=re.compile('https://.*\.cdnfile\.info.*' +
                                    self.quality)):
                for element in soup_cdnfile.find_all(
                        'a',
                        href=re.compile('https://.*\.cdnfile\.info.*' +
                                        self.quality)):
                    extractor_class = 'no_extractor'
                    source_url = element.get('href')
                    logger.debug('%s: %s' % (extractor_class, source_url))
                    cdnfile_url.append((
                        extractor_class,
                        source_url,
                    ))
                return cdnfile_url

            elif soup_cdnfile.find_all(
                    'a',
                    href=re.compile('https://.*\.cdnfile\.info.*' +
                                    'orginalP.*')):
                for element in soup_cdnfile.find_all(
                        'a',
                        href=re.compile('https://.*\.cdnfile\.info.*' +
                                        'orginalP.*')):
                    extractor_class = 'no_extractor'
                    source_url = element.get('href')
                    logger.debug('%s: %s' % (extractor_class, source_url))
                    cdnfile_url.append((
                        extractor_class,
                        source_url,
                    ))
                return cdnfile_url

            else:
                raise AnimeDLError(
                    'No supported download servers found.  Try a different provider. '
                    'Check the issues here https://github.com/vn-ki/anime-downloader/issues. '
                )

        else:
            soup = helpers.soupify(helpers.get(self.url))
            extractors_url = []

            for element in soup.select('.anime_muti_link > ul > li'):
                extractor_class = element.get('class')[0]
                source_url = element.a.get('data-video')
                logger.debug('%s: %s' % (extractor_class, source_url))
                # use mp4upload as source

                if extractor_class == 'mp4':
                    extractor_class = 'mp4upload'
                else:
                    raise AnimeDLError(
                        'No supported download servers found.  Try a different provider. '
                        'Check the issues here https://github.com/vn-ki/anime-downloader/issues. '
                    )
                logger.debug('%s: %s' % (extractor_class, source_url))
                extractors_url.append((
                    extractor_class,
                    source_url,
                ))
            return extractors_url