Some formatting
Some checks failed
dR export statistics / Compile (push) Failing after 21s

This commit is contained in:
retoor 2024-11-23 20:17:01 +01:00
parent f780447eb1
commit 518b9534ba
6 changed files with 85 additions and 60 deletions

View File

@ -3,7 +3,7 @@ from pathlib import Path
import functools import functools
import sys import sys
printr = functools.partial(print,file=sys.stderr) printr = functools.partial(print, file=sys.stderr)
per_image_width = 480 per_image_width = 480
per_image_height = 320 per_image_height = 320
@ -11,8 +11,8 @@ cols = 2
images = list(Path("./export/").glob("*.png")) images = list(Path("./export/").glob("*.png"))
image_count = len(images) image_count = len(images)
total_image_height = (image_count / cols * per_image_height) total_image_height = image_count / cols * per_image_height
if(image_count / cols * per_image_height > total_image_height): if image_count / cols * per_image_height > total_image_height:
total_image_height += per_image_height total_image_height += per_image_height
total_image_width = image_count / cols * per_image_width total_image_width = image_count / cols * per_image_width
@ -21,9 +21,13 @@ resized_images = []
for path in images: for path in images:
image = Image.open(path) image = Image.open(path)
image = image.resize((per_image_width, per_image_height)) image = image.resize((per_image_width, per_image_height))
resized_images.append((path,image)) resized_images.append((path, image))
new_image = Image.new("RGB",(per_image_width * cols, int(per_image_height * image_count / cols)), (250,250,250)) new_image = Image.new(
"RGB",
(per_image_width * cols, int(per_image_height * image_count / cols)),
(250, 250, 250),
)
current_col = 0 current_col = 0
current_row = 0 current_row = 0
@ -32,8 +36,8 @@ for path, image in resized_images:
printr("Merging image {}".format(path)) printr("Merging image {}".format(path))
current_row = int(current_image_number / cols) current_row = int(current_image_number / cols)
left = int((current_col) * per_image_width) left = int((current_col) * per_image_width)
top = int(per_image_height * current_row ) top = int(per_image_height * current_row)
new_image.paste(image,(left,top)) new_image.paste(image, (left, top))
new_image.save("export/1_graphs_compliation.png") new_image.save("export/1_graphs_compliation.png")
current_col += 1 current_col += 1

View File

@ -2,7 +2,8 @@ from drstats import db
import functools import functools
import sys import sys
printr = functools.partial(print,file=sys.stderr) printr = functools.partial(print, file=sys.stderr)
def dump(): def dump():
statistics_text = [ statistics_text = [
@ -17,19 +18,29 @@ def dump():
) )
printr(statistics_text[-1]) printr(statistics_text[-1])
print("\n".join(statistics_text)) print("\n".join(statistics_text))
all_content = '' all_content = ""
for user in db.get_users(): for user in db.get_users():
text = db.get_all_rants_of_user(user).replace("\n"," ").replace(" "," ").strip() text = (
db.get_all_rants_of_user(user).replace("\n", " ").replace(" ", " ").strip()
)
total_text = "" total_text = ""
if text: if text:
total_text += text total_text += text
print("```",f"All rants written by user(ranter) `{user}` on devRant(developer community)```.") print(
print(text,"```") "```",
text = db.get_all_posts_of_user(user).replace("\n", " ").replace(" "," ").strip() f"All rants written by user(ranter) `{user}` on devRant(developer community)```.",
)
print(text, "```")
text = (
db.get_all_posts_of_user(user).replace("\n", " ").replace(" ", " ").strip()
)
if text: if text:
total_text += text total_text += text
print("```",f"All posts written by user(ranter) `{user}` on devRant(developer community): ```.") print(
print(text,"```") "```",
f"All posts written by user(ranter) `{user}` on devRant(developer community): ```.",
)
print(text, "```")
all_content += total_text all_content += total_text
for user in db.get_users(): for user in db.get_users():
@ -37,6 +48,3 @@ def dump():
line = f"{user} is {all_content.count(mention_text)} times mentioned on devRant(developer comminity)." line = f"{user} is {all_content.count(mention_text)} times mentioned on devRant(developer comminity)."
printr(line) printr(line)
print(line) print(line)

View File

@ -33,7 +33,7 @@ class Devrant:
url = self.API + "devrant/search" url = self.API + "devrant/search"
params = {"app": 3, "term": term} params = {"app": 3, "term": term}
r = requests.get(url, params,timeout=5) r = requests.get(url, params, timeout=5)
obj = json.loads(r.text) obj = json.loads(r.text)
return obj return obj
@ -52,7 +52,7 @@ class Devrant:
params = { params = {
"app": 3, "app": 3,
} }
r = requests.get(url, params,timeout=5) r = requests.get(url, params, timeout=5)
obj = json.loads(r.text) obj = json.loads(r.text)
return obj return obj
@ -65,7 +65,7 @@ class Devrant:
url = self.API + "devrant/rants" url = self.API + "devrant/rants"
params = {"app": 3, "sort": sort, "limit": limit, "skip": skip} params = {"app": 3, "sort": sort, "limit": limit, "skip": skip}
r = requests.get(url, params,timeout=5) r = requests.get(url, params, timeout=5)
obj = json.loads(r.text) obj = json.loads(r.text)
return obj return obj

View File

@ -1,6 +1,7 @@
import time import time
import sys import sys
class Duration: class Duration:
def __init__(self, description): def __init__(self, description):
@ -13,5 +14,5 @@ class Duration:
def __exit__(self, exc_type, exc_val, exc_tb): def __exit__(self, exc_type, exc_val, exc_tb):
self.end = time.time() self.end = time.time()
self.duration = self.end - self.start self.duration = self.end - self.start
print(self.description,end=" ",file=sys.stderr) print(self.description, end=" ", file=sys.stderr)
print("took {} seconds.".format(self.duration),file=sys.stderr) print("took {} seconds.".format(self.duration), file=sys.stderr)

View File

@ -1,4 +1,4 @@
from drstats.db import get_db, Db,get_users from drstats.db import get_db, Db, get_users
from drstats import sync from drstats import sync
import asyncio import asyncio
from drstats.duration import Duration from drstats.duration import Duration
@ -188,7 +188,9 @@ async def score_most_ignored_last_7_days():
x = [] x = []
y = [] y = []
for record in db.query("SELECT * FROM score_ignored_most_last_7_days LIMIT 15"): for record in db.query(
"SELECT * FROM score_ignored_most_last_7_days LIMIT 15"
):
x.append(record["username"]) x.append(record["username"])
y.append(record["userscore"]) y.append(record["userscore"])
@ -199,7 +201,9 @@ async def score_most_ignored_last_7_days():
plt.ylabel("Times ignored") plt.ylabel("Times ignored")
plt.title("Most ignored based on score regarding last 7 days") plt.title("Most ignored based on score regarding last 7 days")
plt.legend() plt.legend()
plt.savefig(f"export/score_ignored_most_last_7_days_{get_date_range_str()}.png") plt.savefig(
f"export/score_ignored_most_last_7_days_{get_date_range_str()}.png"
)
plt_reset() plt_reset()
# plt.show() # plt.show()
@ -226,6 +230,7 @@ async def score_last_7_days():
plt_reset() plt_reset()
# plt.show() # plt.show()
async def user_score_per_day(username): async def user_score_per_day(username):
with Duration("User {} score per day".format(username)): with Duration("User {} score per day".format(username)):
plt = figure_inc() plt = figure_inc()
@ -239,28 +244,36 @@ async def user_score_per_day(username):
x = [] x = []
y = [] y = []
for record in db.query("SELECT * FROM user_stats WHERE username = '{}'".format(username)): for record in db.query(
"SELECT * FROM user_stats WHERE username = '{}'".format(username)
):
x.append(record["date"]) x.append(record["date"])
y.append(record["post_count"]) y.append(record["post_count"])
plt.plot(x, y, label="Posts") plt.plot(x, y, label="Posts")
x = [] x = []
y = [] y = []
for record in db.query("SELECT * FROM user_stats WHERE username = '{}'".format(username)): for record in db.query(
"SELECT * FROM user_stats WHERE username = '{}'".format(username)
):
x.append(record["date"]) x.append(record["date"])
y.append(record["ignore_count"]) y.append(record["ignore_count"])
plt.plot(x, y, label="Times ignored") plt.plot(x, y, label="Times ignored")
x = [] x = []
y = [] y = []
for record in db.query("SELECT * FROM user_stats WHERE username = '{}'".format(username)): for record in db.query(
"SELECT * FROM user_stats WHERE username = '{}'".format(username)
):
x.append(record["date"]) x.append(record["date"])
y.append(record["upvote_times"]) y.append(record["upvote_times"])
plt.plot(x, y, label="Times upvoted") plt.plot(x, y, label="Times upvoted")
x = [] x = []
y = [] y = []
for record in db.query("SELECT * FROM user_stats WHERE username = '{}'".format(username)): for record in db.query(
"SELECT * FROM user_stats WHERE username = '{}'".format(username)
):
x.append(record["date"]) x.append(record["date"])
y.append(record["upvote_total"]) y.append(record["upvote_total"])
plt.plot(x, y, label="Sum upvotes") plt.plot(x, y, label="Sum upvotes")
@ -284,7 +297,3 @@ def rant_stats_all():
asyncio.run(score_last_7_days()) asyncio.run(score_last_7_days())
for user in get_users(): for user in get_users():
asyncio.run(user_score_per_day(user)) asyncio.run(user_score_per_day(user))

View File

@ -4,6 +4,7 @@ import json
import asyncio import asyncio
from pprint import pprint as pp from pprint import pprint as pp
import requests import requests
dr = Devrant() dr = Devrant()
db = get_db() db = get_db()
@ -38,6 +39,7 @@ async def get_recent_rants(start_from=1, page_size=10):
yield rant yield rant
start_from += page_size start_from += page_size
async def sync_rants(): async def sync_rants():
count = 0 count = 0
start_from = 0 start_from = 0
@ -54,6 +56,7 @@ async def sync_rants():
except: except:
print("Rate limit of server exceeded. That's normal.s") print("Rate limit of server exceeded. That's normal.s")
async def sync_comments(): async def sync_comments():
comments_synced = 0 comments_synced = 0
rants_synced = 0 rants_synced = 0