- commit
- 878ca10c1a808b69a4247073a4b4419f1b51e38e
- parent
- 355fa4ca664c7402fa5f6915a1abba0e04fee9d3
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2025-12-07 21:00
search: add more parameters
Diffstat
| M | README.md | 2 | +- |
| M | handelsregister.py | 47 | +++++++++++++++++++++++++++++++++++++++++------ |
2 files changed, 42 insertions, 7 deletions
diff --git a/README.md b/README.md
@@ -19,6 +19,6 @@ Kurz: Die Webseite ich nicht benutzbar. 19 19 Deshalb habe ich dieses Skript gebaut. Benutzung: 20 20 21 21 ```22 -1 python3 handelsregister.py search 'atos' # search by keyword-1 22 python3 handelsregister.py search 'atos' --state Hessen # search by keyword 23 23 python3 handelsregister.py xml HRB 16686 M1202 # get structured data for a specific entry 24 24 ```
diff --git a/handelsregister.py b/handelsregister.py
@@ -14,6 +14,25 @@ REGISTERS = {
14 14 'GsR': 'Gesellschaftsregister',
15 15 }
16 16
-1 17 STATES = [
-1 18 'Baden-Württemberg',
-1 19 'Bayern',
-1 20 'Berlin',
-1 21 'Brandenburg',
-1 22 'Bremen',
-1 23 'Hamburg',
-1 24 'Hessen',
-1 25 'Mecklenburg-Vorpommern',
-1 26 'Niedersachsen',
-1 27 'Nordrhein-Westfalen',
-1 28 'Rheinland-Pfalz',
-1 29 'Saarland',
-1 30 'Sachsen',
-1 31 'Sachsen-Anhalt',
-1 32 'Schleswig-Holstein',
-1 33 'Thüringen',
-1 34 ]
-1 35
17 36
18 37 def parse_id(s, ctx):
19 38 parts = s.strip().split()
@@ -113,11 +132,16 @@ def _search(session, query):
113 132 }
114 133
115 134
116 -1 def search(terms, register=''):
-1 135 def search(*, terms=[], register='', id='', court='', type='', state=''):
117 136 query = {
118 -1 'form:schlagwoerter': terms,
-1 137 'form:schlagwoerter': ' '.join(terms),
119 138 'form:registerArt_input': register,
-1 139 'form:registerNummer': id,
-1 140 'form:registergericht_input': court,
-1 141 'form:rechtsform_input': type,
120 142 }
-1 143 if state:
-1 144 query[f'form:{state}_input'] = 'on',
121 145 with Session() as session:
122 146 data = _search(session, query)
123 147 return data['items']
@@ -158,7 +182,12 @@ def get_parser():
158 182 subparsers = parser.add_subparsers(required=True)
159 183
160 184 parser_search = subparsers.add_parser('search', help='find entries in the registers')
161 -1 parser_search.add_argument('terms')
-1 185 parser_search.add_argument('terms', nargs='*')
-1 186 parser_search.add_argument('--register', choices=REGISTERS)
-1 187 parser_search.add_argument('--id')
-1 188 parser_search.add_argument('--court')
-1 189 parser_search.add_argument('--type')
-1 190 parser_search.add_argument('--state', choices=STATES)
162 191 parser_search.set_defaults(action='search')
163 192
164 193 parser_xml = subparsers.add_parser('xml', help='get data for a specific ID')
@@ -177,9 +206,15 @@ def get_parser():
177 206 if __name__ == '__main__':
178 207 args = get_parser().parse_args()
179 208 if args.action == 'search':
180 -1 for item in search(args.terms):
181 -1 print(item['title'])
182 -1 print('\t', item['court'], item['reg'], item['id'])
-1 209 for item in search(
-1 210 terms=args.terms,
-1 211 register=args.register,
-1 212 id=args.id,
-1 213 court=args.court,
-1 214 type=args.type,
-1 215 state=args.state,
-1 216 ):
-1 217 print(f'{item["reg"]} {item["id"]} {item["court"]}\t{item["title"]}')
183 218 elif args.action == 'xml':
184 219 print(get_xml(args.register, args.id, args.court))
185 220 else: