# flake8: noqa: E501 import re from urllib.parse import parse_qs, quote as qs_quote def get_user_agent(): # TODO: randomize it return "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" def regex_search_string(regexes, string, default=None): if not isinstance(regexes, list): regexes = [regexes] for regex in regexes: match = re.match(regex, string) if match: return match return default def dump_qs(obj): old_qs = [] qs = [] for key in obj: old_qs.append((key, obj[key])) not_flat = True while not_flat: not_flat = False for old_qs_element in old_qs: if isinstance(old_qs_element[1], (str, int, float)): qs.append((old_qs_element[0], old_qs_element[1])) elif isinstance(old_qs_element[1], (dict)): for subkey in old_qs_element[1]: qs.append( (old_qs_element[0] + "[" + subkey + "]", old_qs_element[1][subkey])) if isinstance(old_qs_element[1][subkey], (dict, list)): not_flat = True elif isinstance(old_qs_element[1], (list)): for index in range(len(old_qs_element[1])): element = old_qs_element[1][index] qs.append( (old_qs_element[0] + "[" + str(index) + "]", element)) if isinstance(element, (dict, list)): not_flat = True if not_flat: old_qs = qs qs = [] strng = "" for el in qs: strng += qs_quote(str(el[0]), encoding="utf8") + "=" + \ qs_quote(str(el[1]), encoding="utf8") + "&" return strng[:-1]