summaryrefslogtreecommitdiff
path: root/admin/stats.py
diff options
context:
space:
mode:
authorKévin Le Gouguec <kevin.legouguec@gmail.com>2021-03-20 23:51:30 +0100
committerKévin Le Gouguec <kevin.legouguec@gmail.com>2021-03-20 23:51:45 +0100
commit1b06fb56aa47384c4fb19c78958aafd6923fd71e (patch)
treead88911c19c551455636f12e738abbb93edeeffa /admin/stats.py
parentde768184fc9365cdf1480fb7c72f6192aeac5eeb (diff)
downloadquatuorbellefeuille.com-1b06fb56aa47384c4fb19c78958aafd6923fd71e.tar.xz
Draw more graphs
One per visit. Slightly more readable.
Diffstat (limited to 'admin/stats.py')
-rw-r--r--admin/stats.py39
1 files changed, 23 insertions, 16 deletions
diff --git a/admin/stats.py b/admin/stats.py
index 6dc234c..f69390b 100644
--- a/admin/stats.py
+++ b/admin/stats.py
@@ -99,10 +99,13 @@ def order(grouped_visits):
def normalizeref(referer):
if referer == '-':
return 'inconnu'
- return re.sub(
+ referer = re.sub(
r'https://(?:www\.)?quatuorbellefeuille\.(?:fr|com)(/[^?]*)(?:\?.+)?',
r'\1', referer
)
+ if referer == '/':
+ return '/index.html'
+ return referer
def analyze(logs_path):
accesses = parse(logs_path)
@@ -116,21 +119,25 @@ def analyze(logs_path):
for page, hits in pagehits.most_common():
print(hits, page)
- edges = Counter(
- (a.resource, normalizeref(a.referer)) for a in accesses
- )
- edge_statements = '\n'.join(
- f' "{ref}" -- "{res}";' for (res, ref) in edges.keys()
- )
- graph = f'''\
-graph trip {{
-{edge_statements}
-}}
-'''
- dot = run(('dot', '-Tpdf'), text=False, input=graph.encode(),
- capture_output=True, check=True)
- with open('graph.pdf', 'wb') as graph_file:
- graph_file.write(dot.stdout)
+ date = accesses[0].time.strftime('%F')
+
+ for i, visit in enumerate(visits_by_time.values()):
+ edges = (f' "{normalizeref(a.referer)}" -- "{a.resource}";'
+ for a in visit)
+ graph = '\n'.join(('graph trip {',
+ *edges,
+ '}'))
+ dot = run(
+ ('dot', '-Tpdf'), text=False, capture_output=True, check=True,
+ input=graph.encode()
+ )
+ with open(f'{date}-{i}.pdf', 'wb') as visitgraph:
+ visitgraph.write(dot.stdout)
+
+ pages = (f'{date}-{i}.pdf' for i in range(len(visits_by_time.values())))
+ run(('qpdf', '--empty', '--pages', *pages, '--', f'{date}.pdf'),
+ text=False, check=True)
+
if __name__ == '__main__':
analyze(argv[1])