-
-
Save janczizikow/203308b9cb5a378cdb65e4206d7857e8 to your computer and use it in GitHub Desktop.
Bürgerbot: Refreshes the Berlin Bürgeramt page until an appointment becomes available, then notifies you.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python3 | |
| import os, platform, time, webbrowser | |
| import requests | |
| from bs4 import BeautifulSoup | |
| URL = 'http://service.berlin.de/terminvereinbarung/termin/tag.php?termin=1&dienstleister%5B%5D=122210&dienstleister%5B%5D=122217&dienstleister%5B%5D=122219&dienstleister%5B%5D=122227&dienstleister%5B%5D=122231&dienstleister%5B%5D=122238&dienstleister%5B%5D=122243&dienstleister%5B%5D=122252&dienstleister%5B%5D=122260&dienstleister%5B%5D=122262&dienstleister%5B%5D=122254&dienstleister%5B%5D=122271&dienstleister%5B%5D=122273&dienstleister%5B%5D=122277&dienstleister%5B%5D=122280&dienstleister%5B%5D=122282&dienstleister%5B%5D=122284&dienstleister%5B%5D=122291&dienstleister%5B%5D=122285&dienstleister%5B%5D=122286&dienstleister%5B%5D=122296&dienstleister%5B%5D=150230&dienstleister%5B%5D=122301&dienstleister%5B%5D=122297&dienstleister%5B%5D=122294&dienstleister%5B%5D=122312&dienstleister%5B%5D=122314&dienstleister%5B%5D=122304&dienstleister%5B%5D=122311&dienstleister%5B%5D=122309&dienstleister%5B%5D=317869&dienstleister%5B%5D=324433&dienstleister%5B%5D=325341&dienstleister%5B%5D=324434&dienstleister%5B%5D=324435&dienstleister%5B%5D=122281&dienstleister%5B%5D=324414&dienstleister%5B%5D=122283&dienstleister%5B%5D=122279&dienstleister%5B%5D=122276&dienstleister%5B%5D=122274&dienstleister%5B%5D=122267&dienstleister%5B%5D=122246&dienstleister%5B%5D=122251&dienstleister%5B%5D=122257&dienstleister%5B%5D=122208&dienstleister%5B%5D=122226&anliegen%5B%5D=120686&herkunft=%2Fterminvereinbarung%2F' | |
| def notify(message): | |
| title = "Burgerbot" | |
| system = platform.system().lower() | |
| print(message.upper()) | |
| if system == "darwin": | |
| os.system(('osascript -e \'Display notification "{}" with title "{}"\'').format(title, message)) | |
| elif system == "linux": | |
| os.system('notify-send "{}" "{}"'.format(title, message)) | |
| def looking_for_appointment(): | |
| try: | |
| print('-' * 80) | |
| print('Trying again') | |
| r = requests.get(URL) | |
| r.raise_for_status() | |
| print('Page loaded') | |
| soup = BeautifulSoup(r.text, 'lxml') | |
| if soup.find(id="captcha_text"): | |
| notify('Got rate limited! Please enter captcha and restart!') | |
| webbrowser.open_new(URL) | |
| return False | |
| if len(soup.find_all('td', 'buchbar')) > 0: | |
| notify('An appointment is available.') | |
| webbrowser.open_new(URL) | |
| return input("Enter y to keep searching or anything else to quit.\n").lower() == 'y' | |
| print('No luck this time.') | |
| return True | |
| except requests.exceptions.RequestException as e: | |
| notify('Error encountered.') | |
| raise SystemExit(e) | |
| while looking_for_appointment(): | |
| print('Sleeping.') | |
| time.sleep(30) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| beautifulsoup4==4.9.3 | |
| certifi==2021.5.30 | |
| charset-normalizer==2.0.4 | |
| idna==3.2 | |
| lxml==4.6.3 | |
| requests==2.26.0 | |
| soupsieve==2.2.1 | |
| urllib3==1.26.6 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment