handelsregister

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

commit
8b1b0892d447ddceb61ebc78db767bd27a01196f
parent
40434181556a588fe168cd74607d806889319d07
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2025-12-07 21:09
search: map court ID

Diffstat

M handelsregister.py 15 ++++++++++-----

1 files changed, 10 insertions, 5 deletions


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

@@ -15,7 +15,7 @@ REGISTERS = {
   15    15 }
   16    16 
   17    17 
   18    -1 def parse_id(s):
   -1    18 def parse_id(s, ctx):
   19    19     parts = s.strip().split()
   20    20     for i in range(len(parts) - 2, 0, -1):
   21    21         reg = parts[i]
@@ -24,7 +24,7 @@ def parse_id(s):
   24    24             if 'früher' in tail:
   25    25                 tail = tail[:tail.index('früher')]
   26    26             return {
   27    -1                 'court': ' '.join(parts[1:i]),
   -1    27                 'court': ctx['rev_courts'][' '.join(parts[1:i])],
   28    28                 'reg': reg,
   29    29                 'id': ' '.join(tail),
   30    30             }
@@ -42,11 +42,11 @@ def parse_si_field(item):
   42    42             return m[0]
   43    43 
   44    44 
   45    -1 def parse_item(item):
   -1    45 def parse_item(item, ctx):
   46    46     return {
   47    47         'title': item.select_one('.marginLeft20').text,
   48    48         'si_field': parse_si_field(item),
   49    -1         **parse_id(item.select_one('.fontWeightBold').text)
   -1    49         **parse_id(item.select_one('.fontWeightBold').text, ctx)
   50    50     }
   51    51 
   52    52 
@@ -72,6 +72,11 @@ def get_context(session):
   72    72 
   73    73     return {
   74    74         'view_state': soup.select_one('input[name="javax.faces.ViewState"]')['value'],
   -1    75         'rev_courts': {
   -1    76             option.text.strip(): option['value']
   -1    77             for option in soup.select(r'#form\:registergericht_input option')
   -1    78             if option['value']
   -1    79         },
   75    80     }
   76    81 
   77    82 
@@ -94,7 +99,7 @@ def _search(session, query):
   94    99         'action': soup.select_one('[action]')['action'],
   95   100         'view_state': soup.select_one('input[name="javax.faces.ViewState"]')['value'],
   96   101         'truncated': bool(soup.select_one(r'#ergebnissForm\:ergebnisseAnzahl_label')),
   97    -1         'items': [parse_item(item) for item in soup.select('[data-ri]')],
   -1   102         'items': [parse_item(item, ctx) for item in soup.select('[data-ri]')],
   98   103     }
   99   104 
  100   105