diff options
| author | Kévin Le Gouguec <kevin.legouguec@gmail.com> | 2021-03-20 23:51:30 +0100 |
|---|---|---|
| committer | Kévin Le Gouguec <kevin.legouguec@gmail.com> | 2021-03-20 23:51:45 +0100 |
| commit | 1b06fb56aa47384c4fb19c78958aafd6923fd71e (patch) | |
| tree | ad88911c19c551455636f12e738abbb93edeeffa | |
| parent | de768184fc9365cdf1480fb7c72f6192aeac5eeb (diff) | |
| download | quatuorbellefeuille.com-1b06fb56aa47384c4fb19c78958aafd6923fd71e.tar.xz | |
Draw more graphs
One per visit. Slightly more readable.
| -rw-r--r-- | admin/stats.py | 39 |
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]) |
