Added new graph, users and mau by weeks

This commit is contained in:
spla 2023-04-12 20:25:10 +02:00
pare 2e15307ce1
commit 19fb2a8185
S'han modificat 3 arxius amb 80 adicions i 4 eliminacions

Veure arxiu

@ -853,6 +853,12 @@ class Database():
global_mau = [] global_mau = []
global_week = []
global_week_users = []
global_week_mau = []
conn = None conn = None
try: try:
@ -887,6 +893,18 @@ class Database():
global_mau.append(row[3]) global_mau.append(row[3])
cur.execute("select distinct on (date_trunc('week', datetime)) datetime::TIMESTAMP::DATE, total_users, total_mau from totals group by date_trunc('week', datetime), datetime")
rows = cur.fetchall()
for row in rows:
global_week.append(row[0])
global_week_users.append(row[1])
global_week_mau.append(row[2])
cur.close() cur.close()
except (Exception, psycopg2.DatabaseError) as error: except (Exception, psycopg2.DatabaseError) as error:
@ -899,7 +917,7 @@ class Database():
conn.close() conn.close()
return (servers_plots, users_plots, mau_plots, global_day, global_servers, global_users, global_mau) return (servers_plots, users_plots, mau_plots, global_day, global_servers, global_users, global_mau, global_week, global_week_users, global_week_mau)
def get_server_data(self, server): def get_server_data(self, server):

Veure arxiu

@ -24,7 +24,21 @@ class Graphit():
name = 'fediverse data graph library' name = 'fediverse data graph library'
def __init__(self, servers=None, servers_max=None, users=None, users_max=None, mau=None, mau_max=None, global_day=None, global_servers=None, global_users=None, global_mau=None): def __init__(self,
servers=None,
servers_max=None,
users=None,
users_max=None,
mau=None,
mau_max=None,
global_day=None,
global_servers=None,
global_users=None,
global_mau=None,
global_week=None,
global_week_users=None,
global_week_mau=None
):
self.servers = servers self.servers = servers
self.servers_max = servers_max self.servers_max = servers_max
@ -37,6 +51,10 @@ class Graphit():
self.global_users = global_users self.global_users = global_users
self.global_mau = global_mau self.global_mau = global_mau
self.global_week = global_week
self.global_week_users = global_week_users
self.global_week_mau = global_week_mau
def graph(self): def graph(self):
# generate graphs # generate graphs
@ -172,3 +190,39 @@ class Graphit():
plt.savefig('app/graphs/global_mau.png') plt.savefig('app/graphs/global_mau.png')
plt.close() plt.close()
def generate_weeks(self):
df = pd.DataFrame(
{'week': np.array(self.global_week),
'week_users': np.array(self.global_week_users),
'week_mau': np.array(self.global_week_mau)})
df['week'] = pd.to_datetime(df['week'])
# weeks
fig, ax = plt.subplots()
ax.plot(df.week, df.week_users, label='users', color='green')
ax.plot(df.week, df.week_mau, label='users', color='blue')
ax.yaxis.set_major_formatter(StrMethodFormatter('{x:,.0f}'))
plt.tick_params(rotation=45)
ax.set_title("fediverse's weekly users & MAU")
ax.set_xlabel('week')
ax.set_ylabel('users')
ax.grid(visible=True)
plt.savefig('app/graphs/global_weeks.png')
plt.close()

Veure arxiu

@ -73,10 +73,12 @@ if __name__ == '__main__':
# get plots # get plots
graph.servers, graph.users, graph.mau, graph.global_day, graph.global_servers, graph.global_users, graph.global_mau = db.get_plots() graph.servers, graph.users, graph.mau, graph.global_day, graph.global_servers, graph.global_users, graph.global_mau, graph.global_week, graph.global_week_users, graph.global_week_mau = db.get_plots()
graph.generate() graph.generate()
graph.generate_weeks()
############################################################################### ###############################################################################
# P O S T ! # P O S T !
@ -142,4 +144,6 @@ if __name__ == '__main__':
mau_image_id = mastodon.media_post('app/graphs/global_mau.png', "image/png", description='mau graph').id mau_image_id = mastodon.media_post('app/graphs/global_mau.png', "image/png", description='mau graph').id
mastodon.status_post(post_text, in_reply_to_id=None, media_ids={servers_image_id, users_image_id, mau_image_id}) weeks_image_id = mastodon.media_post('app/graphs/global_weeks.png', "image/png", description='weeks graph').id
mastodon.status_post(post_text, in_reply_to_id=None, media_ids={servers_image_id, users_image_id, mau_image_id, weeks_image_id})