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)
S
Description
No description provided
Readme 57 KiB
Languages
TypeScript 100%