108 lines
3.2 KiB
Markdown
108 lines
3.2 KiB
Markdown
|
|
# 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.
|
||
|
|
|
||
|
|
## Features
|
||
|
|
|
||
|
|
- 🔐 Logs in to your personal Wohnungsfinder for filtered results
|
||
|
|
- ⏰ Checks every 5 minutes (configurable)
|
||
|
|
- 📱 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
|
||
|
|
- 💾 Persists state to detect only truly new listings
|
||
|
|
- 📈 Logs listing times for pattern analysis
|
||
|
|
|
||
|
|
## Setup
|
||
|
|
|
||
|
|
### 1. Create Telegram Bot
|
||
|
|
|
||
|
|
1. Message [@BotFather](https://t.me/botfather) on Telegram
|
||
|
|
2. Send `/newbot` and follow the prompts
|
||
|
|
3. Copy the bot token
|
||
|
|
|
||
|
|
### 2. Get Your Chat ID
|
||
|
|
|
||
|
|
1. Message your new bot (send anything)
|
||
|
|
2. Visit: `https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates`
|
||
|
|
3. Find `"chat":{"id":123456789}` - that's your chat ID
|
||
|
|
|
||
|
|
### 3. Configure
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cp .env.example .env
|
||
|
|
# Edit .env with your credentials
|
||
|
|
```
|
||
|
|
|
||
|
|
### 4. Run
|
||
|
|
|
||
|
|
```bash
|
||
|
|
docker compose up -d
|
||
|
|
```
|
||
|
|
|
||
|
|
### 5. Check Logs
|
||
|
|
|
||
|
|
```bash
|
||
|
|
docker compose logs -f
|
||
|
|
# or
|
||
|
|
cat data/monitor.log
|
||
|
|
```
|
||
|
|
|
||
|
|
## Telegram Commands
|
||
|
|
|
||
|
|
| Command | Description |
|
||
|
|
|---------|-------------|
|
||
|
|
| `/autopilot on` | Enable automatic applications |
|
||
|
|
| `/autopilot off` | Disable automatic applications |
|
||
|
|
| `/status` | Show current status and application stats |
|
||
|
|
| `/plot` | Generate weekly listing pattern visualization |
|
||
|
|
| `/help` | Show available commands |
|
||
|
|
|
||
|
|
## Configuration
|
||
|
|
|
||
|
|
### Required
|
||
|
|
|
||
|
|
| Variable | Description |
|
||
|
|
|----------|-------------|
|
||
|
|
| `TELEGRAM_BOT_TOKEN` | Telegram bot token from BotFather |
|
||
|
|
| `TELEGRAM_CHAT_ID` | Your Telegram chat ID |
|
||
|
|
|
||
|
|
### Optional - Login
|
||
|
|
|
||
|
|
| Variable | Description | Default |
|
||
|
|
|----------|-------------|---------|
|
||
|
|
| `INBERLIN_EMAIL` | inberlinwohnen.de login email | - |
|
||
|
|
| `INBERLIN_PASSWORD` | inberlinwohnen.de password | - |
|
||
|
|
| `CHECK_INTERVAL` | Seconds between checks | 300 |
|
||
|
|
|
||
|
|
### Optional - Form Data (for Autopilot)
|
||
|
|
|
||
|
|
| 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_PERSONS` | Number of persons moving in | 1 |
|
||
|
|
| `FORM_CHILDREN` | Number of children | 0 |
|
||
|
|
| `FORM_INCOME` | Monthly household net income (€) | 1600 |
|
||
|
|
|
||
|
|
## Without Login
|
||
|
|
|
||
|
|
If you don't provide login credentials, the monitor will use the public Wohnungsfinder (shows all listings instead of your personalized filtered results).
|
||
|
|
|
||
|
|
## Data Files
|
||
|
|
|
||
|
|
All data is stored in the `./data` directory:
|
||
|
|
|
||
|
|
| File | Description |
|
||
|
|
|------|-------------|
|
||
|
|
| `listings.json` | Known listings (for duplicate detection) |
|
||
|
|
| `state.json` | Monitor state (autopilot on/off) |
|
||
|
|
| `applications.json` | Record of submitted applications |
|
||
|
|
| `listing_times.csv` | Timing data for pattern analysis |
|
||
|
|
| `monitor.log` | Application logs |
|
||
|
|
| `weekly_plot.png` | Generated plot from /plot command |
|
||
|
|
| `*.png` | Screenshots from application attempts |
|