Esempio n. 1
0
 def wrapper(*args, **kwargs):
     qry = f(*args, **kwargs)
     if not isinstance(qry, _Query):
         raise ValueError('|{0}| did not return a Query, was: |{1}|'.format(f.__name__, repr(qry)))
     log.debug('{0} QUERY: url: |{1}|, params: |{2}|, data: |{3}|, headers: |{4}|, target_func: |{5}|'
               .format(qry.method, qry.url, qry.params, qry.data, qry.headers, f.__name__))
     return qry.execute()
Esempio n. 2
0
def m3u8_to_dict(string):
    log.debug('m3u8_to_dict called for:\n{}'.format(string))
    d = dict()
    matches = re.finditer(_m3u_pattern, string)
    for m in matches:
        d[m.group('group_name')] = m.group('url')
    log.debug('m3u8_to_dict result:\n{}'.format(d))
    return d
Esempio n. 3
0
def m3u8_to_dict(string):
    log.debug('m3u8_to_dict called for:\n{}'.format(string))
    d = dict()
    matches = re.finditer(_m3u_pattern, string)
    for m in matches:
        d[m.group('group_name')] = m.group('url')
    log.debug('m3u8_to_dict result:\n{}'.format(d))
    return d
Esempio n. 4
0
 def wrapper(*args, **kwargs):
     qry = f(*args, **kwargs)
     if not isinstance(qry, _Query):
         raise ValueError('{} did not return a Query, was: {}'.format(
                          f.__name__, repr(qry)))
     log.debug('QUERY: url: %s, params: %s, '
               'headers: %r, target_func: %r',
               qry.url, qry.params, qry.headers, f.__name__)
     return qry.execute()
Esempio n. 5
0
 def wrapper(*args, **kwargs):
     qry = f(*args, **kwargs)
     if not isinstance(qry, _Query):
         raise ValueError('{} did not return a Query, was: {}'.format(
                          f.__name__, repr(qry)))
     log.debug('QUERY: url: %s, params: %s, '
               'headers: %r, target_func: %r',
               qry.url, qry.params, qry.headers, f.__name__)
     return qry.execute()
Esempio n. 6
0
def get_json(baseurl, parameters={}, headers={}):
    '''Download Data from an URL and returns it as JSON
    @param url Url to download from
    @param parameters Parameter dict to be encoded with url
    @param headers Headers dict to pass with Request
    @returns JSON Object with data from URL
    '''
    jsonString = download(baseurl, parameters, headers)
    jsonDict = json.loads(jsonString)
    log.debug(json.dumps(jsonDict, indent=4, sort_keys=True))
    return jsonDict
Esempio n. 7
0
def get_json(baseurl, parameters={}, headers={}):
    """Download Data from an URL and returns it as JSON
    @param url Url to download from
    @param parameters Parameter dict to be encoded with url
    @param headers Headers dict to pass with Request
    @returns JSON Object with data from URL
    """
    jsonString = download(baseurl, parameters, headers)
    jsonDict = json.loads(jsonString)
    log.debug(json.dumps(jsonDict, indent=4, sort_keys=True))
    return jsonDict
def get_json(baseurl, parameters={}, headers={}, data={}, method=methods.GET):
    '''Download Data from an URL and returns it as JSON
    @param url Url to download from
    @param parameters Parameter dict to be encoded with url
    @param headers Headers dict to pass with Request
    @param data Request body
    @param method Request method
    @returns JSON Object with data from URL
    '''
    method = methods.validate(method)
    jsonString = download(baseurl, parameters, headers, data, method)
    jsonDict = json.loads(jsonString)
    log.debug(json.dumps(jsonDict, indent=4, sort_keys=True))
    return jsonDict
Esempio n. 9
0
def live_request(channel):
    token = channel_token(channel)
    if keys.ERROR in token:
        return token
    else:
        q = UsherQuery('api/channel/hls/{channel}.m3u8')
        q.add_urlkw(keys.CHANNEL, channel)
        q.add_param(keys.SIG, token[keys.SIG])
        q.add_param(keys.TOKEN, token[keys.TOKEN])
        q.add_param(keys.ALLOW_SOURCE, Boolean.TRUE)
        q.add_param(keys.ALLOW_SPECTRE, Boolean.TRUE)
        q.add_param(keys.ALLOW_AUDIO_ONLY, Boolean.TRUE)
        url = '?'.join([q.url, urlencode(q.params)])
        request_dict = {'url': url, 'headers': q.headers}
        log.debug('live_request: |{0}|'.format(str(request_dict)))
        return request_dict
Esempio n. 10
0
def m3u8_to_dict(string):
    log.debug('m3u8_to_dict called for:\n{0}'.format(string))
    d = dict()
    matches = re.finditer(_m3u_pattern, string)
    for m in matches:
        name = 'Audio Only' if m.group(
            'group_name') == 'audio_only' else m.group('group_name')
        name = 'Source' if m.group('group_id') == 'chunked' else name
        d[m.group('group_id')] = {
            'id': m.group('group_id'),
            'name': name,
            'url': m.group('url'),
            'bandwidth': int(m.group('bandwidth'))
        }
    log.debug('m3u8_to_dict result:\n{0}'.format(d))
    return d
Esempio n. 11
0
def video_request(video_id):
    video_id = valid_video_id(video_id)
    if video_id:
        token = vod_token(video_id)
        if keys.ERROR in token:
            return token
        else:
            q = UsherQuery('vod/{id}')
            q.add_urlkw(keys.ID, video_id)
            q.add_param(keys.NAUTHSIG, token[keys.SIG])
            q.add_param(keys.NAUTH, token[keys.TOKEN])
            q.add_param(keys.ALLOW_SOURCE, Boolean.TRUE)
            q.add_param(keys.ALLOW_AUDIO_ONLY, Boolean.TRUE)
            url = '?'.join([q.url, urlencode(q.params)])
            request_dict = {'url': url, 'headers': q.headers}
            log.debug('video_request: |{0}|'.format(str(request_dict)))
            return request_dict
    else:
        raise NotImplementedError('Unknown Video Type')
Esempio n. 12
0
def download(baseurl, parameters={}, headers={}, data={}, method=methods.GET):
    '''Download Data from an url and returns it as a String
    @param method Request method
    @param baseurl Url to download from (e.g. http://www.google.com)
    @param parameters Parameter dict to be encoded with url
    @param headers Headers dict to pass with Request
    @param data Request body
    @param method Request method
    @returns String of data from URL
    '''
    method = methods.validate(method)
    url = '?'.join([baseurl, urlencode(parameters)])
    log.debug('Downloading: ' + url)
    content = ""
    for _ in range(MAX_RETRIES):
        try:
            headers.update({USER_AGENT: USER_AGENT_STRING})
            response = requests.request(method=method,
                                        url=url,
                                        headers=headers,
                                        data=data,
                                        verify=SSL_VERIFICATION)
            content = response.content
            if not content:
                content = '{"status": %d}' % response.status_code
            break
        except Exception as err:
            if not isinstance(err, URLError):
                log.debug("Error %s during HTTP Request, abort", repr(err))
                raise  # propagate non-URLError
            log.debug("Error %s during HTTP Request, retrying", repr(err))
    else:
        raise
    return content
Esempio n. 13
0
def download(baseurl, parameters={}, headers={}):
    '''Download Data from an url and returns it as a String
    @param baseurl Url to download from (e.g. http://www.google.com)
    @param parameters Parameter dict to be encoded with url
    @param headers Headers dict to pass with Request
    @returns String of data from URL
    '''
    url = '?'.join([baseurl, urlencode(parameters)])
    log.debug('Downloading: ' + url)
    data = ""
    for _ in range(MAX_RETRIES):
        try:
            req = Request(url, headers=headers)
            req.add_header(USER_AGENT, USER_AGENT_STRING)
            response = urlopen(req)
            if six.PY2:
                data = response.read()
            else:
                data = response.read().decode('utf-8')
            response.close()
            break
        except Exception as err:
            if not isinstance(err, URLError):
                log.debug("Error %s during HTTP Request, abort", repr(err))
                raise  # propagate non-URLError
            log.debug("Error %s during HTTP Request, retrying", repr(err))
    else:
        raise
    return data
Esempio n. 14
0
def download(baseurl, parameters={}, headers={}):
    """Download Data from an url and returns it as a String
    @param baseurl Url to download from (e.g. http://www.google.com)
    @param parameters Parameter dict to be encoded with url
    @param headers Headers dict to pass with Request
    @returns String of data from URL
    """
    url = "?".join([baseurl, urlencode(parameters)])
    log.debug("Downloading: " + url)
    data = ""
    for _ in range(MAX_RETRIES):
        try:
            req = Request(url, headers=headers)
            req.add_header(USER_AGENT, USER_AGENT_STRING)
            response = urlopen(req)
            if six.PY2:
                data = response.read()
            else:
                data = response.read().decode("utf-8")
            response.close()
            break
        except Exception as err:
            if not isinstance(err, URLError):
                log.debug("Error %s during HTTP Request, abort", repr(err))
                raise  # propagate non-URLError
            log.debug("Error %s during HTTP Request, retrying", repr(err))
    else:
        raise
    return data
Esempio n. 15
0
def clip_embed_to_list(string):
    log.debug('clip_embed_to_list called for:\n{0}'.format(string))
    match = re.search(_clip_embed_pattern, string)
    l = list()
    if match:
        match = eval(match.group('qualities'))
        l = [{
            'id': item['quality'],
            'name': item['quality'],
            'url': item['source'],
            'bandwidth': -1
        } for item in match]
        if l:
            l.insert(
                0, {
                    'id': 'Source',
                    'name': 'Source',
                    'url': l[0]['url'],
                    'bandwidth': -1
                })

    log.debug('clip_embed_to_list result:\n{0}'.format(l))
    return l