Skip to content

okainov/munich-scripts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b73deff · Oct 13, 2023

History

90 Commits
Jul 24, 2022
Dec 8, 2019
Jan 25, 2020
Aug 20, 2023
Jul 24, 2022
Nov 15, 2017
Jan 15, 2020
Aug 20, 2023
Jan 25, 2020
Jul 24, 2022
Jul 24, 2022
Dec 8, 2019
Dec 8, 2019
Jul 24, 2022
Aug 20, 2023
Jul 24, 2022
Aug 20, 2023
Oct 13, 2023
Jul 24, 2022
Jul 24, 2022

Repository files navigation

General

Some useful scripts simplifying bureaucracy, especially when living in Munich, Germany.

termin_api.py

Small tool to show availability of appointments in different Departments of Munich.

Available departments are:

Please note the script does not perform appointment booking (see #4), it just tells you current status and allows you to subscribe to a notifier for one week.

Telegram bot

There is a Telegram bot at @MunichTerminBot using termin_api.py functionality. The bot is written using python-telegram-bot library. Source code is also in this repo, tg_bot.py.

Development

By default bot runs as webhook configured for personal web server. For local development it's easier to use polling. In order to get it, just set DEBUG = True in one of first lines of the script.

Bot deployment

Bot is hosted on personal web server, running in Docker and automatic deploy from master branch of this repo is set, no action should be required.

Manual deployment

Pre-requisites:

  • TG_TOKEN environment variable is set in .env file

If you want to enable Elastic statistics, then additionally set following variables to non-empty value:

  • ELASTIC_HOST - hostname where ELK stack is deployed
  • ELASTIC_USER - ElasticSearch username
  • ELASTIC_PASS - ElasticSearch password

Commands for manual deploy

git pull
docker-compose build
docker-compose up -d

Shortly after deploy make sure everything is running

docker-compose logs -f

Script usage

Edit script content and select what type of appointments you actually need:

appointments = get_termins(DMV, 'FS Umschreibung Ausländischer FS')
# appointments = get_termins(CityHall, 'An- oder Ummeldung - Einzelperson')
# appointments = get_termins(ForeignLabor, 'Niederlassungserlaubnis Blaue Karte EU')

Run the script

python3 termin_api.py

Output will be printed in the console