master
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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
bun install
Konfigurace
Vytvoř soubor config/local.ts (je gitignored):
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í
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:
*/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ů:
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)
Description
Languages
TypeScript
100%