Exemple #1
0
    def do_GET(self):
        self.url = get_path(self.path)[1:]
        self.url_parts = url_parts = urlsplit(self.url)

        if not url_parts.netloc:
            self.send_error(
                400,
                'No host found, range fetch can not be finished, url: %s' %
                self.path)
            return

        if ('range=' in url_parts.query or 'live=1' in url_parts.query
                or 'range/' in url_parts.path):
            self.send_error(
                500,
                'Range request not be accepted, range fetch can not be finished, url: %s'
                % self.url)
            return

        request_range = self.headers.get('Range')
        if request_range:
            request_range = getbytes(request_range)
            range_start, range_end = [
                int(n) if n else 0 for n in request_range.group(1, 2)
            ]
        else:
            range_start = range_end = 0

        RangeFetch(self, range_start, range_end).fetch()
Exemple #2
0
    def l_assert(self):
        if self.url.startswith('http://'):
            self.url = self.url.replace('http://', 'https://', 1)
        self.url = get_location(self.url)

        if 'passport.weibo.com' in self.url:
            query = urlsplit(self.url).query
            self.url = parse_qs(query)['url'][0]
            return self.l_assert()

        # Mobile ver.
        if 'm.weibo.cn' in self.url:
            self.title_patterns = '"content2": "(.+?)",', '"status_title": "(.+?)",'
            self.url_patterns = '"stream_url_hd": "([^"]+)', '"stream_url": "([^"]+)'
            return

        if '/tv/v/' in self.url or 'fid=' not in self.url:
            self.title_patterns = 'class="info_txt \w+">([^<]+)</', 'class="WB_text \w+"[^>]+>\s*(?:<a[^<]+</a>)?\s*([^<]+)'
            self.url_patterns = 'video-sources\s*=\s*".+?(?:&\d+=http.+?)*&\d+=(http.+?[^=])(?:&\d+=)*&qType=\w+"',
            return

        self.title_patterns = '<title>([^<]+)</',
        self.url_patterns = r'(?:data-url|controls src)\s*=\s*[\"\']([^\"\']+)',
        html = get_content(self.url)
        url = match1(html, '"page_url": "([^"]+)')
        assert url, 'No url match'
        self.url = url
        self.l_assert()
Exemple #3
0
    def do_GET(self):
        self.url = get_path(self.path)[1:]
        self.url_parts = url_parts = urlsplit(self.url)

        if not url_parts.netloc:
            self.send_error(400,
                'No host found, range fetch can not be finished, url: %s' %  self.path)
            return

        if ('range=' in url_parts.query or
            'live=1' in url_parts.query or
            'range/' in url_parts.path):
            self.send_error(500,
                'Range request not be accepted, range fetch can not be finished, url: %s' %  self.url)
            return

        request_range = self.headers.get('Range')
        if request_range:
            request_range = getbytes(request_range)
            range_start, range_end = [int(n) if n else 0 for n in request_range.group(1, 2)]
        else:
            range_start = range_end = 0

        RangeFetch(self, range_start, range_end).fetch()