librefi/librefi/utils.py

54 lines
1.8 KiB
Python

# 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.search(regex, string)
if match:
return match.group(1)
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]