]> us-delaporte.pagekite.me Git - dotfiles.git/blob - bin/clerk
Nicer file chooser
[dotfiles.git] / bin / clerk
1 #!/usr/bin/python
2
3 import csv
4 from datetime import datetime as dt
5 import os
6
7 DATA_DIR=os.path.expanduser('~/Journal/2026/Data')
8
9 data_files = {}
10 for root, _, files in os.walk(DATA_DIR):
11 for file in files:
12 name, ext = os.path.splitext(file)
13 if ext == '.csv':
14 data_files[name] = os.path.join(root, file)
15
16 print(data_files.keys())
17 for idx, file in enumerate(data_files.keys()):
18 print(f"{idx} - {file}")
19
20 user_input = input(f"Select a file:\n").strip() or default
21 key = list(data_files.keys())[int(user_input)]
22
23 file = data_files[key]
24
25 print(file)
26
27 with open(file, 'r') as f:
28 reader = csv.reader(f, delimiter=',', quotechar='"')
29 fields = next(reader) # require header row
30 first_example = next(reader)
31 for line in reader:
32 last_example = next(reader)
33
34 print(first_example)
35 print("...")
36 print(last_example)
37
38
39 DATE_FORMAT = '%Y-%m-%d'
40
41 def today():
42 return dt.now().strftime(DATE_FORMAT)
43
44 values = {}
45 for key in fields:
46 default = ''
47 if key == 'date':
48 default = today()
49 user_input = input(f"{key} [{default}]\n").strip() or default
50 if user_input == '?':
51 print(f"Example: {first_example[fields.index(key)]} ... {last_example[fields.index(key)]}")
52 user_input = input(f"{key} [{default}]\n").strip() or default
53
54 values[key] = user_input
55
56 print("Break with Ctrl+C if incorrect:")
57 print(values)
58 input() # Assume break with Ctrl+C if incorrect
59
60 with open(file, 'a') as f:
61 writer = csv.DictWriter(f, fields)
62 writer.writerow(values)
63 print(f"Updated {file}")
64
65