Fix Degewo auto-apply (Wohnungshelden iframe), update dependencies, cleanup for production

- Fix Degewo handler to work with Wohnungshelden iframe portal
- Update playwright to >=1.57.0
- Add proper form field selectors for Wohnungshelden
- Fix success status bug (was marking failed submissions as success)
- Clean up .env.example (remove real credentials)
- Update README with housing company support table
- Add BOTFATHER_COMMANDS.txt for easy bot setup
- Add copilot-instructions.md for development context
This commit is contained in:
Aron Petau 2025-12-09 11:30:17 +01:00
parent bf9d7f1371
commit ce66fc1933
12 changed files with 854 additions and 3599 deletions

View file

@ -1,6 +1,6 @@
# inberlin-monitor
Monitors [inberlinwohnen.de](https://www.inberlinwohnen.de/wohnungsfinder/) for new apartment listings and sends Telegram notifications. Supports automatic application submission via autopilot mode.
Monitors [inberlinwohnen.de](https://www.inberlinwohnen.de/wohnungsfinder/) and [wgcompany.de](http://www.wgcompany.de) for new apartment/WG listings and sends Telegram notifications. Supports automatic application submission via autopilot mode.
## Features
@ -9,10 +9,22 @@ Monitors [inberlinwohnen.de](https://www.inberlinwohnen.de/wohnungsfinder/) for
- 📱 Sends Telegram notifications for new listings with clickable links
- 🤖 **Autopilot mode**: Automatically applies to new listings
- 📊 **/plot command**: Visualize when listings appear throughout the week
- 🏢 Supports multiple housing companies: HOWOGE, Gewobag, Degewo, Gesobau, Stadt und Land, WBM
- 🏢 Supports 6 housing companies: HOWOGE, Gewobag, Degewo, Gesobau, Stadt und Land, WBM
- 🏠 **WGcompany.de**: Also monitors WG room listings with configurable search filters
- 💾 Persists state to detect only truly new listings
- 📈 Logs listing times for pattern analysis
## Supported Housing Companies
| Company | Auto-Apply | Notes |
|---------|------------|-------|
| HOWOGE | ✅ | Direct form submission |
| Gewobag | ✅ | Direct form submission |
| Degewo | ✅ | Via Wohnungshelden portal |
| Gesobau | ✅ | Direct form submission |
| Stadt und Land | ✅ | Direct form submission |
| WBM | ✅ | Direct form submission |
## Setup
### 1. Create Telegram Bot
@ -80,13 +92,28 @@ cat data/monitor.log
| Variable | Description | Default |
|----------|-------------|---------|
| `FORM_ANREDE` | Salutation (Herr/Frau) | Herr |
| `FORM_VORNAME` | First name | Aron |
| `FORM_NACHNAME` | Last name | Petau |
| `FORM_EMAIL` | Contact email | `aron@petau.net` |
| `FORM_PHONE` | Phone number | 017695773688 |
| `FORM_VORNAME` | First name | - |
| `FORM_NACHNAME` | Last name | - |
| `FORM_EMAIL` | Contact email | - |
| `FORM_PHONE` | Phone number | - |
| `FORM_STRASSE` | Street name | - |
| `FORM_HAUSNUMMER` | House number | - |
| `FORM_PLZ` | Postal code | - |
| `FORM_ORT` | City | Berlin |
| `FORM_PERSONS` | Number of persons moving in | 1 |
| `FORM_CHILDREN` | Number of children | 0 |
| `FORM_INCOME` | Monthly household net income (€) | 1600 |
| `FORM_INCOME` | Monthly household net income (€) | - |
### Optional - WGcompany.de Search Filters
| Variable | Description | Default |
|----------|-------------|---------|
| `WGCOMPANY_ENABLED` | Enable WGcompany monitoring | true |
| `WGCOMPANY_MIN_SIZE` | Minimum room size (m²) | - |
| `WGCOMPANY_MAX_SIZE` | Maximum room size (m²) | - |
| `WGCOMPANY_MIN_PRICE` | Minimum rent (€) | - |
| `WGCOMPANY_MAX_PRICE` | Maximum rent (€) | - |
| `WGCOMPANY_BEZIRK` | District code (0=all) | 0 |
## Without Login
@ -98,10 +125,13 @@ All data is stored in the `./data` directory:
| File | Description |
|------|-------------|
| `listings.json` | Known listings (for duplicate detection) |
| `listings.json` | Known inberlinwohnen listings |
| `wgcompany_listings.json` | Known WGcompany listings |
| `state.json` | Monitor state (autopilot on/off) |
| `applications.json` | Record of submitted applications |
| `listing_times.csv` | Timing data for pattern analysis |
| `listing_times.csv` | InBerlin timing data for pattern analysis |
| `wgcompany_times.csv` | WGcompany timing data |
| `monitor.log` | Application logs |
| `weekly_plot.png` | Generated plot from /plot command |
| `wgcompany_debug.html` | Debug HTML from WGcompany |
| `*.png` | Screenshots from application attempts |