annotate main.py @ 0:556768c7d3d7

first attempt
author Dennis C. M. <dennis@denniscm.com>
date Tue, 30 May 2023 20:08:35 +0100
parents
children e23b7617bbc4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 import json
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
2 from datetime import datetime
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 def main():
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 with open('santander.json') as f:
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7 doc = json.load(f)
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9 if doc['JobStatus'] != 'SUCCEEDED':
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10 print(f"JOB STATUS: {doc['JobStatus']}")
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
11
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
12 return
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
13
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
14 blocks = doc['Blocks']
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
15 table = extract_block(blocks, 'BlockType', 'TABLE')
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
16 table_child_ids = extract_child_ids(table)
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
17
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
18 for table_child_id in table_child_ids:
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
19 cell = extract_block(blocks, 'Id', table_child_id)
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
20 cell_child_ids = extract_child_ids(cell)
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
21
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
22 cell_value = ''
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
23 for index, cell_child_id in enumerate(cell_child_ids):
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
24 word_block = extract_block(blocks, 'Id', cell_child_id)
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
25 cell_value += word_block['Text'].lower()
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
26
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
27 if index < len(cell_child_ids) - 1:
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
28 cell_value += '_'
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
29
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
30 print(cell_value)
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
31 print(is_date(cell_value))
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
32
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
33
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
34
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
35 def extract_child_ids(block):
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
36 if not 'Relationships' in block:
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
37 return []
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
38
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
39 return [r['Ids'] for r in block['Relationships'] if r['Type'] == 'CHILD'][0]
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
40
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
41
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
42 def extract_block(blocks, block_key, block_value):
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
43 return [block for block in blocks if block[block_key] == block_value][0]
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
44
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
45
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
46 def is_date(string_date):
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
47 formats_allowed = ['%d-%m-%Y', '%d/%m/%Y', '%d.%m.%Y', '%Y']
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
48
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
49 for format_allowed in formats_allowed:
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
50 try:
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
51 datetime.strptime(string_date, format_allowed)
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
52
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
53 return True
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
54 except ValueError:
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
55
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
56 # Try removing characters from the beginning and end
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
57 options = [string_date[:-1], string_date[1:], string_date[1:-1]]
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
58 for option in options:
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
59 try:
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
60 datetime.strptime(option, format_allowed)
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
61
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
62 return True
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
63 except ValueError:
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
64 continue
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
65
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
66 return False
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
67
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
68
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
69 if __name__ == '__main__':
556768c7d3d7 first attempt
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
70 main()