Back to project.

Raw source file available here .

from drstats import db
import functools
import sys
import pathlib
import json

printr = functools.partial(print, file=sys.stderr)


def dump():
global db
statistics_text = [
f"===devRant(developer community) has {db.get_user_count()} active users(ranters)."
f"===All users(ranters) of devRant together did contribute {db.get_contribution_count()} times in total."
f"===The average user(ranter) of devrant(developer community) contributed {db.get_contribution_average_per_user()} times on devrant(developer community)."
]
printr("\n".join(statistics_text))
for contribution in db.get_contributions():
statistics_text.append(
f"===Statistics: User(ranter) {contribution['username']} is appreciation ranked {contribution['rank_by_appreciation_based_on_upvotes_per_message']} and made {contribution['contributions']} contributions to devRant(developer community) what means {contribution['username']} owns {contribution['ownership']} percent of contributions on devRant(developer community). The avarage post length of {contribution['username']} is {contribution['post_length_average']} and total post length is {contribution['post_length_total']}. {contribution['username']} owns {contribution['ownership_content']} percent of content on devRant(developer community)."
)
printr(statistics_text[-1])
print("\n".join(statistics_text))
all_content = ""
for user in list(db.get_users()):
text = db.get_all_rants_of_user(user)
total_text = ""
if text:
total_text += text
print(
"===",
f"All rants written by user(ranter) `{user}` on devRant(developer community).",
"```",
text,
"```",
)
printr(text)
with pathlib.Path("export/rants-" + user + ".txt").open("w+") as f:
f.write(user)
f.write(" said ")
f.write(text)
f.write("```")
text = db.get_all_posts_of_user(user)
if text:
total_text += text
print(
"===",
"```",
f"All posts written by user(ranter) `{user}` on devRant(developer community): ```.",
text,
"```",
)
printr(text)
with pathlib.Path("export/posts-" + user + ".txt").open("w+") as f:
f.write(user)
f.write(" said ")
f.write(text)
f.write("```")
all_content += total_text
print("===Mentions of users:", "```")

users = db.get_users()
users.sort()
for user in users:
mention_text = f"@{user}"
line = f"{user} is {all_content.count(mention_text)} times mentioned on devRant(developer community)."
printr(line)
print(line)
print("```")

for view in db.get_views():
printr(f"export/view-{view['name']}.json")
with pathlib.Path(f"export/view-{view['name']}.json").open("w+") as f:
with db.Db() as _db:
json.dump(
[
dict(record)
for record in _db.query("SELECT * FROM {}".format(view["name"]))
],
f,
)
json.dump(
[
dict(record)
for record in _db.query("SELECT * FROM {}".format(view["name"]))
],
sys.stderr,
)