#!/bin/sh
root=https://www.orte-in-deutschland.de

extract_orte() {
  htmlq 'a[href*="-gemeinde-"], a[href*="-ort-"]' --attribute href \
    | sed "s#^#$root/#"
}

curl -sSL "$root/alphabetisches-ortsverzeichnis.html" \
  | htmlq '#suchindex li a[href^="orte-in"]' --attribute href \
  | while read -r slug; do
      curl -sSL "$root/$slug" \
        | htmlq '#subsuchindex li a[href^="orte-in"]' --attribute href \
        | while read -r slug; do
            first_page="$(curl -sSL "$root/$slug")"
            echo "$first_page" | extract_orte
            echo "$first_page" \
              | htmlq 'a[href*="?seite="]' --attribute href \
              | sed 's/.*seite=//' \
              | sort -un \
              | sed -n '1p;$p' \
              | xargs seq 2>/dev/null | while read -r page; do
                  curl -sSL "$root/$slug?seite=$page" | extract_orte
                done
          done
    done
