Files
kantinen-wrapper/README.md

90 lines
1.8 KiB
Markdown
Executable File

# Bessa Knapp-Kantine Menu Scraper
Automatischer Menü-Scraper für die Knapp-Kantine basierend auf https://web.bessa.app/knapp-kantine.
## Setup
1. **Dependencies installieren**:
```bash
npm install
```
2. **Credentials konfigurieren**:
```bash
cp .env.example .env
# Dann .env bearbeiten und echte Zugangsdaten eintragen
```
3. **TypeScript kompilieren**:
```bash
npm run build
```
## Usage
### Menüs scrapen
```bash
# Development mode (mit TypeScript direkt)
npm run dev
# Production mode (kompiliertes JavaScript)
npm run build
npm run scrape
```
### Scraper-Ablauf
1. Öffnet Browser (Puppeteer)
2. Akzeptiert Cookies
3. Klickt "Pre-order menu"
4. Loggt sich ein (mit Credentials aus `.env`)
5. Navigiert durch Kalenderwochenansicht
6. Extrahiert Menüdaten für jeden Tag
7. Speichert alles in `data/menus.json`
## Output
Die gescrapten Daten werden in `data/menus.json` gespeichert:
```json
{
"lastUpdated": "2026-02-02T10:00:00.000Z",
"weeks": [
{
"year": 2026,
"weekNumber": 6,
"days": [
{
"date": "2026-02-03",
"weekday": "Monday",
"items": [
{
"id": "2026-02-03_M1_Herzhaftes",
"name": "M1 Herzhaftes",
"description": "Rindsuppe mit Backerbsen / Puten Tikka Masala...",
"price": 5.5,
"available": true
}
]
}
]
}
]
}
```
## Development
- `npm run dev` - Run scraper in development mode with tsx
- `npm run build` - Compile TypeScript to JavaScript
- `npm run type-check` - Check TypeScript types without building
## Debugging
Setze `PUPPETEER_HEADLESS=false` in `.env` um den Browser sichtbar zu machen.
## Sicherheit
⚠️ **WICHTIG**: Die `.env`-Datei enthält Zugangsdaten und darf niemals ins Git committed werden!