121 lines
3.7 KiB
Markdown
121 lines
3.7 KiB
Markdown
# wohn-bot
|
|
|
|
A Python bot that monitors Berlin's public housing portal (inberlinwohnen.de) and WG rooms (wgcompany.de). Sends Telegram notifications when new listings appear and can automatically apply to some listings.
|
|
|
|
## What it does
|
|
|
|
- Monitors inberlinwohnen.de for new apartment listings from 6 housing companies (HOWOGE, Gewobag, Degewo, Gesobau, Stadt und Land, WBM)
|
|
- Monitors wgcompany.de for WG room listings with configurable filters
|
|
- Sends Telegram notifications with listing details
|
|
- Logs listing times to CSV for pattern analysis
|
|
- Auto-apply feature for supported housing companies
|
|
|
|
## Auto-Apply Support
|
|
|
|
All six housing companies monitored by this bot now support the autopilot (automatic application) feature. Use autopilot with care — automatic form submission is destructive and may send many requests if configured incorrectly.
|
|
|
|
| Company | Status | Notes |
|
|
|---------|--------|-------|
|
|
| HOWOGE | Working | Fully automated and tested |
|
|
| Degewo | Working | Uses Wohnungshelden portal; automated |
|
|
| Stadt und Land | Working | Embedded form handled automatically |
|
|
| Gewobag | Working | Wohnungshelden iframe handled automatically |
|
|
| Gesobau | Working | Automated form submission implemented |
|
|
| WBM | Working | Automated form submission implemented |
|
|
| WGcompany | Monitoring only | WGcompany monitoring only (no autopilot) |
|
|
|
|
Recommended precautions:
|
|
|
|
- Run with `/autopilot off` while testing new selectors or after changing config.
|
|
- Inspect `data/applications.json` and saved screenshots in `data/` after enabling autopilot.
|
|
- Respect site terms of use and rate limits; set `CHECK_INTERVAL` appropriately.
|
|
|
|
## Setup
|
|
|
|
### Docker (recommended)
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
# Edit .env with your credentials
|
|
docker compose up -d
|
|
```
|
|
|
|
### Local development
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
playwright install chromium
|
|
|
|
export TELEGRAM_BOT_TOKEN=your_token
|
|
export TELEGRAM_CHAT_ID=your_chat_id
|
|
# ... other env vars
|
|
|
|
python monitor.py
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Required environment variables
|
|
|
|
- `TELEGRAM_BOT_TOKEN` - Bot token from @BotFather
|
|
- `TELEGRAM_CHAT_ID` - Your Telegram chat ID
|
|
|
|
### InBerlin login (required for auto-apply)
|
|
|
|
- `INBERLIN_EMAIL` - Your inberlinwohnen.de email
|
|
- `INBERLIN_PASSWORD` - Your inberlinwohnen.de password
|
|
|
|
### Form data (for auto-apply)
|
|
|
|
- `FORM_ANREDE` - Salutation (Herr/Frau)
|
|
- `FORM_VORNAME` - First name
|
|
- `FORM_NACHNAME` - Last name
|
|
- `FORM_EMAIL` - Email address
|
|
- `FORM_PHONE` - Phone number
|
|
- `FORM_STRASSE` - Street name
|
|
- `FORM_HAUSNUMMER` - House number
|
|
- `FORM_PLZ` - Postal code
|
|
- `FORM_ORT` - City
|
|
- `FORM_PERSONS` - Number of persons in household
|
|
- `FORM_CHILDREN` - Number of children
|
|
- `FORM_INCOME` - Monthly net income
|
|
|
|
### WGcompany filters
|
|
|
|
- `WGCOMPANY_ENABLED` - Enable WGcompany monitoring (true/false)
|
|
- `WGCOMPANY_MIN_SIZE` - Minimum room size in sqm
|
|
- `WGCOMPANY_MAX_SIZE` - Maximum room size in sqm
|
|
- `WGCOMPANY_MIN_PRICE` - Minimum price in EUR
|
|
- `WGCOMPANY_MAX_PRICE` - Maximum price in EUR
|
|
- `WGCOMPANY_BEZIRK` - District filter (optional)
|
|
|
|
## Telegram Commands
|
|
|
|
- `/status` - Show current status and recent listings
|
|
- `/autopilot` - Toggle auto-apply on/off
|
|
- `/listings` - Show current listings
|
|
- `/help` - Show available commands
|
|
|
|
## Data files
|
|
|
|
All data is stored in the `data/` directory:
|
|
|
|
- `listings.json` - Previously seen inberlinwohnen listings
|
|
- `wgcompany_listings.json` - Previously seen WGcompany listings
|
|
- `applications.json` - Application history
|
|
- `listing_times.csv` - Time series data for listings
|
|
- `state.json` - Runtime state (autopilot toggle)
|
|
- `monitor.log` - Application logs
|
|
|
|
## Debugging
|
|
|
|
When applications fail, the bot saves:
|
|
|
|
- Screenshots to `data/*.png`
|
|
- Page HTML to `data/debug_page.html`
|
|
|
|
Check these files to understand why an application failed.
|
|
|
|
## License
|
|
|
|
MIT
|