# Bürgeramt appointment finder
This server looks for Bürgeramt appointment every few seconds. You can make it look for any kind of appointment.
This is the code behind All About Berlin's [Bürgeramt appointment finder](https://allaboutberlin.com/tools/appointment-finder).
If this tool helped you, [make a donation](https://allaboutberlin.com/donate). Building things for Berliners is my full time job.
## What this tool does
This tool looks for appointments on service.berlin.de every 3 minutes. When it finds an appointment, it makes a sound. It can be used as a command line tool, or as the backend for a [web-based tool](https://allaboutberlin.com/tools/appointment-finder).
This tool can't book the appointment for you. It can't look for Ausländerbehörde appointments. These features will not be implemented.
## Setup
### 1. Install the script
Run this command in your terminal:
```bash
# It might be called 'pip3' on your computer
pip install berlin-appointment-finder
```
You need Python 3 on your computer. If you have macOS or Linux, you already have it. If you have Windows, you're on your own.
If you get a `error: legacy-install-feature`, try some of the [solutions listed here](https://sebhastian.com/python-error-legacy-install-failure/). Do not open an issue; the problem is not related to this project.
### 2. Find the appointment type you need
Pick a service from the [list of services on Berlin.de](https://service.berlin.de/dienstleistungen/), and copy the URL. For example, `https://service.berlin.de/dienstleistung/120686/` for the *[Anmeldung](https://allaboutberlin.com/glossary/Anmeldung)*.
### 3. Run the script
Run this command and follow the instructions on your screen:
```bash
appointments
```
The script will check Berlin.de every 3 minutes. When it finds appointments, it lists them. Just keep an eye on the terminal. It will also emit a sound.
### Updating the script
If you have an older version of the script, update it with this command:
```
pip install --upgrade berlin-appointment-finder
```
## Instructions for nerds
This script can be configured with command line arguments or environment variables.
Type `appointments --help` to see available command line arguments.
These are the available environment variables:
```bash
BOOKING_TOOL_EMAIL=your@email.com
BOOKING_TOOL_ID=johnsmith-dev
BOOKING_TOOL_URL=https://service.berlin.de/dienstleistung/120686/
```
The script broadcasts broadcasts the appointments it finds with websockets. By default, it broadcasts them on port 80.
A Dockerfile is supplied in this repo. It's the same one I use on All About Berlin.
The polling rate is limited to 180 seconds (3 minutes), as required by the Berlin.de IKT-ZMS team (ikt-zms@seninnds.berlin.de).
### Local development
To work on this script, install it with `pip install -e /path/to/this/repo`. When you run `appointments`, it will run your local version with any changes you have made to it. You only need to run this command once.
## FAQ
### Can you make it work with Ausländerbehörde appointments?
No. It's not possible due to rate-limiting by Berlin.de. [You probably don't need an Ausländerbehörde appointment](https://allaboutberlin.com/guides/berlin-auslanderbehorde-appointment) anyway.
### I get an HTTP 418 response
This means that Berlin.de is blocking you as a bot. There is nothing I can do to fix this problem.
Raw data
{
"_id": null,
"home_page": "https://github.com/nicbou/burgeramt-appointments-websockets",
"name": "berlin-appointment-finder",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "",
"keywords": "",
"author": "Nicolas Bouliane",
"author_email": "contact@nicolasbouliane.com",
"download_url": "https://files.pythonhosted.org/packages/41/01/ad04fe90363de73f2fee5d5c4d2019d9029ffd6ef8eaee49de124c260b81/berlin-appointment-finder-1.1.0.tar.gz",
"platform": null,
"description": "# B\u00fcrgeramt appointment finder\n\nThis server looks for B\u00fcrgeramt appointment every few seconds. You can make it look for any kind of appointment.\n\nThis is the code behind All About Berlin's [B\u00fcrgeramt appointment finder](https://allaboutberlin.com/tools/appointment-finder).\n\nIf this tool helped you, [make a donation](https://allaboutberlin.com/donate). Building things for Berliners is my full time job.\n\n## What this tool does\n\nThis tool looks for appointments on service.berlin.de every 3 minutes. When it finds an appointment, it makes a sound. It can be used as a command line tool, or as the backend for a [web-based tool](https://allaboutberlin.com/tools/appointment-finder).\n\nThis tool can't book the appointment for you. It can't look for Ausl\u00e4nderbeh\u00f6rde appointments. These features will not be implemented.\n\n## Setup\n\n### 1. Install the script\n\nRun this command in your terminal:\n\n```bash\n# It might be called 'pip3' on your computer\npip install berlin-appointment-finder\n```\n\nYou need Python 3 on your computer. If you have macOS or Linux, you already have it. If you have Windows, you're on your own.\n\nIf you get a `error: legacy-install-feature`, try some of the [solutions listed here](https://sebhastian.com/python-error-legacy-install-failure/). Do not open an issue; the problem is not related to this project.\n\n### 2. Find the appointment type you need\n\nPick a service from the [list of services on Berlin.de](https://service.berlin.de/dienstleistungen/), and copy the URL. For example, `https://service.berlin.de/dienstleistung/120686/` for the *[Anmeldung](https://allaboutberlin.com/glossary/Anmeldung)*.\n\n### 3. Run the script\n\nRun this command and follow the instructions on your screen:\n\n```bash\nappointments\n```\n\nThe script will check Berlin.de every 3 minutes. When it finds appointments, it lists them. Just keep an eye on the terminal. It will also emit a sound.\n\n### Updating the script\n\nIf you have an older version of the script, update it with this command:\n\n```\npip install --upgrade berlin-appointment-finder\n```\n\n## Instructions for nerds\n\nThis script can be configured with command line arguments or environment variables.\n\nType `appointments --help` to see available command line arguments.\n\nThese are the available environment variables:\n\n```bash\nBOOKING_TOOL_EMAIL=your@email.com\nBOOKING_TOOL_ID=johnsmith-dev\nBOOKING_TOOL_URL=https://service.berlin.de/dienstleistung/120686/\n```\n\nThe script broadcasts broadcasts the appointments it finds with websockets. By default, it broadcasts them on port 80.\n\nA Dockerfile is supplied in this repo. It's the same one I use on All About Berlin.\n\nThe polling rate is limited to 180 seconds (3 minutes), as required by the Berlin.de IKT-ZMS team (ikt-zms@seninnds.berlin.de).\n\n### Local development\n\nTo work on this script, install it with `pip install -e /path/to/this/repo`. When you run `appointments`, it will run your local version with any changes you have made to it. You only need to run this command once.\n\n## FAQ\n\n### Can you make it work with Ausl\u00e4nderbeh\u00f6rde appointments?\n\nNo. It's not possible due to rate-limiting by Berlin.de. [You probably don't need an Ausl\u00e4nderbeh\u00f6rde appointment](https://allaboutberlin.com/guides/berlin-auslanderbehorde-appointment) anyway.\n\n### I get an HTTP 418 response\n\nThis means that Berlin.de is blocking you as a bot. There is nothing I can do to fix this problem.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Finds appointments at the Berlin B\u00fcrgeramt, broadcasts them via websockets",
"version": "1.1.0",
"project_urls": {
"Homepage": "https://github.com/nicbou/burgeramt-appointments-websockets"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "38c9ef48d384866775e34f95fb77671e75980af42f3e244348aa3616f3fd5328",
"md5": "aa805e4c3108447b9ff888ecdb7bfdbb",
"sha256": "70fe664624ea4874f4a0736086d2dd21012b8fff81a6300503eb985306e0feaa"
},
"downloads": -1,
"filename": "berlin_appointment_finder-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "aa805e4c3108447b9ff888ecdb7bfdbb",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 7142,
"upload_time": "2024-02-09T08:26:33",
"upload_time_iso_8601": "2024-02-09T08:26:33.793997Z",
"url": "https://files.pythonhosted.org/packages/38/c9/ef48d384866775e34f95fb77671e75980af42f3e244348aa3616f3fd5328/berlin_appointment_finder-1.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4101ad04fe90363de73f2fee5d5c4d2019d9029ffd6ef8eaee49de124c260b81",
"md5": "fc3e40d2ac7c0b2c9f30d89ff48e39cd",
"sha256": "dcd8ccd0a691a30b33beabcda33c64e4d4f2d223deff375ef81069b787aa6c32"
},
"downloads": -1,
"filename": "berlin-appointment-finder-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "fc3e40d2ac7c0b2c9f30d89ff48e39cd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 6501,
"upload_time": "2024-02-09T08:26:35",
"upload_time_iso_8601": "2024-02-09T08:26:35.180896Z",
"url": "https://files.pythonhosted.org/packages/41/01/ad04fe90363de73f2fee5d5c4d2019d9029ffd6ef8eaee49de124c260b81/berlin-appointment-finder-1.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-02-09 08:26:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nicbou",
"github_project": "burgeramt-appointments-websockets",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "berlin-appointment-finder"
}