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()
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
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()
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={}): """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
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
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
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')
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
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
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
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