afd1ec1709
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
83 lines
2.4 KiB
Markdown
83 lines
2.4 KiB
Markdown
# ogaraCheck
|
|
|
|
Automatické sledování denního menu restaurace Ogarova pizza (Otrokovice) s notifikacemi přes Telegram.
|
|
|
|
## Co dělá
|
|
|
|
- Každých 15 minut od 8:00 do 14:00 (pracovní dny) načte dnešní menu
|
|
- V 10:00 pošle aktuální menu na Telegram (nebo oznámení "dnes menu není")
|
|
- Před 10:00 loguje změny v menu do souboru
|
|
- Po 10:00 posílá na Telegram textové změny i informace o vyprodaných položkách
|
|
|
|
## Instalace
|
|
|
|
```bash
|
|
bun install
|
|
```
|
|
|
|
## Konfigurace
|
|
|
|
Vytvoř soubor `config/local.ts` (je gitignored):
|
|
|
|
```ts
|
|
import type { Config } from "./default"
|
|
|
|
const localConfig: Partial<Config> = {
|
|
days: {
|
|
monday: "https://otrokovice-ogarova-pizza.cz/produkty/118_pondeli",
|
|
tuesday: "https://otrokovice-ogarova-pizza.cz/produkty/119_utery",
|
|
wednesday: "https://otrokovice-ogarova-pizza.cz/produkty/120_streda",
|
|
thursday: "https://otrokovice-ogarova-pizza.cz/produkty/121_-ctvrtek",
|
|
friday: "https://otrokovice-ogarova-pizza.cz/produkty/122_patek",
|
|
},
|
|
telegram: {
|
|
botToken: "váš-bot-token",
|
|
chatId: "váš-chat-id",
|
|
},
|
|
// devMode: true, // ukládá HTTP debug logy do debug/
|
|
// silent: true, // potlačí výstup na stdout
|
|
// overrideTime: "10:00", // simuluje čas pro testování
|
|
}
|
|
|
|
export default localConfig
|
|
```
|
|
|
|
## Manuální spuštění
|
|
|
|
```bash
|
|
bun run src/index.ts
|
|
```
|
|
|
|
## Cron
|
|
|
|
Přidej do `crontab -e` — každých 15 minut od 8:00 do 13:45 v pracovní dny:
|
|
|
|
```cron
|
|
*/15 8-13 * * 1-5 cd /home/lister/workspace/ogaraCheck && /home/lister/.bun/bin/bun run src/index.ts 2>&1 | systemd-cat -t ogaraCheck
|
|
```
|
|
|
|
Sledování logů:
|
|
|
|
```bash
|
|
journalctl -t ogaraCheck -f
|
|
journalctl -t ogaraCheck --since today
|
|
```
|
|
|
|
## Struktura projektu
|
|
|
|
```
|
|
config/
|
|
default.ts # výchozí konfigurace (commitováno)
|
|
local.ts # lokální přepisy — token, URL (gitignored)
|
|
src/
|
|
index.ts # vstupní bod, časová logika
|
|
fetcher.ts # HTTP klient s cookie jar a dev logováním
|
|
parser.ts # cheerio parser + detekce dostupnosti menu
|
|
differ.ts # porovnání stavu menu mezi spuštěními
|
|
logger.ts # zápis změn do logs/YYYY-MM-DD.log
|
|
telegram.ts # odesílání zpráv přes Telegram Bot API
|
|
logs/ # denní logy textových změn (gitignored)
|
|
state/ # stav mezi spuštěními — reference, lastKnown (gitignored)
|
|
debug/ # HTTP debug logy při devMode: true (gitignored)
|
|
```
|