handelsregister

command line interface for handelsregister.de
git clone https://git.ce9e.org/handelsregister.git

commit
ef1a14c5cabeb7943497bbbb1cd4f4e6b3164f32
parent
8b1b0892d447ddceb61ebc78db767bd27a01196f
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2025-12-07 20:57
cli: add list command

Diffstat

M handelsregister.py 28 +++++++++++++++++++++++++++-

1 files changed, 27 insertions, 1 deletions


diff --git a/handelsregister.py b/handelsregister.py

@@ -72,11 +72,21 @@ def get_context(session):
   72    72 
   73    73     return {
   74    74         'view_state': soup.select_one('input[name="javax.faces.ViewState"]')['value'],
   -1    75         'courts': {
   -1    76             option['value']: option.text.strip()
   -1    77             for option in soup.select(r'#form\:registergericht_input option')
   -1    78             if option['value']
   -1    79         },
   75    80         'rev_courts': {
   76    81             option.text.strip(): option['value']
   77    82             for option in soup.select(r'#form\:registergericht_input option')
   78    83             if option['value']
   79    84         },
   -1    85         'types': {
   -1    86             option['value']: option.text.strip()
   -1    87             for option in soup.select(r'#form\:rechtsform_input option')
   -1    88             if option['value']
   -1    89         },
   80    90     }
   81    91 
   82    92 
@@ -133,6 +143,15 @@ def get_xml(register, id):
  133   143         return r.text
  134   144 
  135   145 
   -1   146 def get_list(key):
   -1   147     if key == 'registers':
   -1   148         return REGISTERS
   -1   149     else:
   -1   150         with Session() as session:
   -1   151             ctx = get_context(session)
   -1   152         return ctx[key]
   -1   153 
   -1   154 
  136   155 def get_parser():
  137   156     parser = argparse.ArgumentParser()
  138   157     subparsers = parser.add_subparsers(required=True)
@@ -146,6 +165,10 @@ def get_parser():
  146   165     parser_xml.add_argument('id')
  147   166     parser_xml.set_defaults(action='xml')
  148   167 
   -1   168     parser_list = subparsers.add_parser('list', help='get data for a specific ID')
   -1   169     parser_list.add_argument('key', choices=['registers', 'courts', 'types'])
   -1   170     parser_list.set_defaults(action='list')
   -1   171 
  149   172     return parser
  150   173 
  151   174 
@@ -155,5 +178,8 @@ if __name__ == '__main__':
  155   178         for item in search(args.terms):
  156   179             print(item['title'])
  157   180             print('\t', item['court'], item['reg'], item['id'])
  158    -1     else:
   -1   181     elif args.action == 'xml':
  159   182         print(get_xml(args.register, args.id))
   -1   183     else:
   -1   184         for key, value in get_list(args.key).items():
   -1   185             print(f'{key}\t{value}')