You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.2 KiB
77 lines
2.2 KiB
import pickle |
|
import random |
|
from datetime import datetime |
|
from time import sleep |
|
import re |
|
|
|
from arangodb import db |
|
|
|
|
|
def sleep_(t): |
|
""" |
|
Sover en tid nära den angivna (för att inte sökningarna ska bli för lika varandra) |
|
""" |
|
variation = 4 # Testa olika sovlängder för att inte få användaren blockerad |
|
sleep(t * variation * random.randrange(85, 115, 1) / 100) |
|
if random.randrange(0, 60, 1) == 1: |
|
longsleep = random.randrange(200, 300) |
|
for s in range(0, longsleep): |
|
print(f"Sover {longsleep - s} sekunder till... ", end="\r") |
|
sleep(1) |
|
print() |
|
sleep(random.randrange(0, 10, 1) / 4) |
|
|
|
# TODO #1 spara cookies till db |
|
def update_cookie(cookies, profile_name): |
|
""" Uppdaterar cookie för browser """ |
|
with open("../data/cookie_{}.pkl".format(profile_name), "wb") as f: |
|
pickle.dump(cookies, f) |
|
|
|
|
|
def write_error(nr, e="", traceback="", soup="", user="", url="", url_name=""): |
|
"""Skriver info efter error till arango |
|
|
|
Args: |
|
nr ([type]): error number |
|
e (str, optional): error. Defaults to "". |
|
traceback (str, optional): The traceback from traceback.format_exc(). Defaults to "". |
|
soup (str, optional): Soup. Defaults to "". |
|
user (str, optional): The user. Defaults to "". |
|
url (str, optional): Url, if any. Defaults to "". |
|
count (int, optional): Count, if any. Defaults to 0. |
|
url_name (str, optional): The description of the url, if any. Defaults to "". |
|
""" |
|
if url == "": |
|
url = "ingen url" |
|
url_name = "ingen url" |
|
|
|
if soup != "": |
|
soup = str(soup.prettify()) |
|
|
|
print(e) # FELSÖKNING |
|
|
|
key = datetime.now().strftime("%Y%m%d_%H:%M:%S") |
|
doc = { |
|
"_key": key, |
|
"number": nr, |
|
"error": nr, |
|
"user": str(user), |
|
"error": str(e), |
|
"url": str(url), |
|
"url_name": url_name, |
|
"soup": soup, |
|
"traceback": str(traceback), |
|
} |
|
|
|
try: |
|
db.insert_document( |
|
"errors", |
|
doc, |
|
overwrite_mode="update", |
|
silent=True, |
|
) |
|
except Exception as e: |
|
print(e) |
|
|
|
def clean(string): |
|
return ''.join(re.findall('[A-Za-z0-9-:.@()+,=;$!*\s]+', string)) |