From 91046da67fd333c09668a3ebe6dd6f9421b703a7 Mon Sep 17 00:00:00 2001 From: Lasse Server Date: Wed, 8 Sep 2021 14:55:49 +0200 Subject: [PATCH] . --- .gitignore | 4 +-- docker/stats/Dockerfile | 13 +++++++ docker/stats/requirements.txt | 27 ++++++++++++++ docker/stats/stats.py | 66 +++++++++++++++++++++++++++++++++++ 4 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 docker/stats/Dockerfile create mode 100644 docker/stats/requirements.txt create mode 100644 docker/stats/stats.py diff --git a/.gitignore b/.gitignore index e25c77b..5169577 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,6 @@ facebook/test.py facebook/mrkoll. # docker -/docker/* -!/docker/*.py +/stats/* +!/stats/*.py diff --git a/docker/stats/Dockerfile b/docker/stats/Dockerfile new file mode 100644 index 0000000..8cd6c9a --- /dev/null +++ b/docker/stats/Dockerfile @@ -0,0 +1,13 @@ +FROM python:alpine + +WORKDIR / + +COPY requirements.txt . + +RUN pip install -r requirements.txt + +ADD docker/stats/. . + +ENTRYPOINT [ "python", "facebook/mrkoll.py" ] + +# docker buildx build --file docker/stats/Dockerfile --platform linux/arm64,linux/amd64 -t mrkoll . \ No newline at end of file diff --git a/docker/stats/requirements.txt b/docker/stats/requirements.txt new file mode 100644 index 0000000..2ba3112 --- /dev/null +++ b/docker/stats/requirements.txt @@ -0,0 +1,27 @@ +black==21.8b0 +certifi==2020.6.20 +chardet==4.0.0 +click==8.0.1 +httplib2==0.18.1 +idna==2.10 +mypy-extensions==0.4.3 +packaging==21.0 +pathspec==0.9.0 +platformdirs==2.3.0 +pycurl==7.43.0.6 +PyJWT==2.1.0 +pyparsing==2.4.7 +PySimpleSOAP==1.16.2 +python-apt==2.2.1 +python-arango==7.2.0 +python-debian==0.1.39 +python-debianbts==3.1.0 +regex==2021.8.28 +reportbug==7.10.3 +requests==2.25.1 +requests-toolbelt==0.9.1 +setuptools-scm==6.3.1 +six==1.16.0 +tomli==1.2.1 +typing-extensions==3.10.0.2 +urllib3==1.26.5 diff --git a/docker/stats/stats.py b/docker/stats/stats.py new file mode 100644 index 0000000..d4b8f92 --- /dev/null +++ b/docker/stats/stats.py @@ -0,0 +1,66 @@ +from datetime import datetime +from getpass import getpass +from time import sleep + +from arango import ArangoClient + + +def now(): + """Returns current date and time as string""" + return datetime.now().strftime("%Y-%m-%d_%H:%M:%S") + +def write_stats(db, continuous=False): + while True: + d = {} + for col in db.collections(): + if not col["system"]: + d[col["name"]] = db.collection(col["name"]).count() + del d["stats"] + # d['time'] = now() + cursor = db.aql.execute( + """ + FOR doc IN members + FILTER doc.checked == true + COLLECT WITH COUNT INTO length + RETURN length + """ + ) + d["checked_members"] = cursor.next() + + # Hur många konton per säljare som finns kvar + cursor = db.aql.execute( + """ + for doc in profiles_webshare + filter has(doc, "vendor") + COLLECT vendor = doc.vendor WITH COUNT INTO length + RETURN { + "vendor" : vendor, + "active" : length + } + """ + ) + d["active_vendors"] = [doc for doc in cursor] + + d["_key"] = now()[:13] + db.insert_document("stats", d, overwrite=True) + + # Sov för att fortsätta senare + if continuous: + print(now()) + sleep(86400) + else: + break + + +# Info för arangodb +user_arango = "Stats" +db_arango = "facebook" +host_arango = "http://192.168.1.10:8529" + +# Starta koppling till arangodb +# Avkryptera lösen till arango +pwd = getpass(f"Arangolösenord för {user_arango}:").strip() + +db = ArangoClient(hosts=host_arango).db(db_arango, username=user_arango, password=pwd) + +write_stats(db, continuous=True)