No description
- Rust 100%
| src | ||
| .env.example | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
brother-bot
Bot Telegram che stampa sticker e immagini su una stampante di etichette Brother QL
(testato con QL-500 e rotolo continuo da 62 mm), usando la libreria
ql-label (fork con supporto QL-500), con dithering Floyd–Steinberg.
Cosa fa
- Accetta foto, sticker statici (WebP) e immagini inviate come file. Gli sticker animati/video vengono rifiutati.
- Rende bianco lo sfondo trasparente, ritaglia i bordi vuoti e scala l'immagine sulla
larghezza del nastro (696 punti, ~59 mm), senza superare
MAX_LENGTH_MMin lunghezza (default 100 mm, margini inclusi). - Alle foto applica anche un aumento di contrasto (auto-levels) prima del dithering.
- Schiarisce i toni medi (default 50%) per compensare l'ingrossamento dei punti della stampa termica, lasciando invariati il nero e il bianco pieni.
- Stampa un lavoro alla volta: se la stampante è occupata, avvisa che si è in coda.
- A stampa finita conferma il successo e, se la stampante non ha la taglierina (es. QL-500), ricorda di tagliare l'adesivo con la levetta.
Configurazione
Copia .env.example in .env e compila:
| Variabile | Descrizione |
|---|---|
TELOXIDE_TOKEN |
Token del bot, da @BotFather |
PRINTER_MODEL |
QL-500, QL-720NW, QL-800, QL-820NWB |
PRINTER_SERIAL |
Numero di serie USB (lsusb -v -d 04f9: | grep iSerial) |
MAX_LENGTH_MM |
Lunghezza massima dell'etichetta in mm (default 100) |
LIGHTEN_PERCENT |
Schiarimento dei toni medi prima del dithering (default 50, 0 = off) |
HIGH_RESOLUTION |
Modalità 300×600 dpi, più fine lungo il nastro (default false; non supportata dalla QL-500, non testata) |
ALLOWED_USERS |
ID utente Telegram autorizzati, separati da virgola. Vuoto = tutti |
Per scoprire il proprio ID basta scrivere al bot con ALLOWED_USERS impostato a un
valore qualsiasi: il messaggio di rifiuto lo riporta.
Uso
cargo run --release # avvia il bot
cargo run --release -- render foto.jpg out.png --levels # anteprima, senza stampare
cargo run --release -- print sticker.webp # stampa un file locale
L'anteprima di render è esattamente il bitmap (con dithering) che verrebbe inviato alla
stampante.
L'utente che esegue il bot deve poter accedere al dispositivo USB (ad esempio essere nel
gruppo lp).