BiboWebBot ist eine .NET-10-Lösung zum Abrufen und Auswerten von VÖBB-Ausleihen. Die Lösung kombiniert eine Blazor-Server-Webanwendung für die interaktive Nutzung mit einer Console-Anwendung für lokale oder automatisierte Batch-Läufe.
Mit BiboWebBot lassen sich mehrere VÖBB-Konten zentral verwalten und in einem Durchlauf laden. Das früheste Rückgabedatum kann anschließend optional an Google Kalender und MQTT übertragen werden.
- Laden von Ausleihen für mehrere VÖBB-Konten
- HTTP-basierter Abruf ohne Browser-Automation
- Anzeige von Status- und Fehlerlogs in der Weboberfläche
- Verwaltung von Konten in der Blazor-App mit Speicherung im Browser
- Unterstützung zusätzlicher Konten aus
appsettings*.json - Optionaler Google-Login in der Web-App
- Auswahl des Zielkalenders
- frei konfigurierbarer Terminname mit
{Konto}und{Datum} - Übertragung des frühesten Rückgabedatums nach manuellem Laden
- Optionaler MQTT-Versand des frühesten Rückgabedatums
- Optionaler täglicher Hintergrundlauf (
DailySync) in der Web-App für Laden und MQTT - Optionale Console-Ausführung für Batch-Läufe mit MQTT und Google-Kalender-Eintrag
Projekt/BiboWebBot– Blazor-Server-WebanwendungProjekt/BiboWebBot.Console– Console-Anwendung für lokale und automatisierte LäufeProjekt/BiboWebBot.VoebbParsing– HTTP-basierte VÖBB-Login- und Parsing-LogikProjekt/BiboWebBot.GoogleCalendar– Google-Kalender-IntegrationProjekt/BiboWebBot.Mqtt– MQTT-PublishingProjekt/BiboWebBot.Tests– Tests
- .NET SDK 10
- optional: Google-OAuth-Client für Kalenderfunktionen
- optional: MQTT-Broker für MQTT-Ausgaben
dotnet restore
dotnet builddotnet run --project Projekt/BiboWebBot/BiboWebBot.csprojAnschließend die im Terminal ausgegebene URL im Browser öffnen.
dotnet run --project Projekt/BiboWebBot.Console/BiboWebBot.Console.csprojDie relevanten Einstellungen liegen in den lokalen appsettings.json-Dateien der jeweiligen Projekte. Als Vorlage sind versionierte appsettings.example.json-Dateien enthalten; diese sollten lokal nach appsettings.json kopiert und dort mit echten Werten befuellt werden.
"Voebb": {
"Accounts": [
{
"LoginName": "Name",
"CardId": "Ausweisnummer",
"Password": "Passwort",
"LoadForBatch": true
}
]
}Bedeutung der Felder:
LoginName– Anzeigename in UI, Logs und AusgabenCardId– BibliotheksausweisnummerPassword– VÖBB-PasswortLoadForBatch– aktiviert das Konto für Sammelläufe
Ausgangspunkt: Projekt/BiboWebBot/appsettings.example.json
Google:ClientId/Google:ClientSecret– Google-Login für die Web-AppGoogle:CalendarId– Standard-ZielkalenderGoogle:EventSummaryTemplate– Titelvorlage für KalendereinträgeMqtt:*– MQTT-KonfigurationDailySync:Enabled– aktiviert den täglichen HintergrundlaufDailySync:TimeOfDay– Uhrzeit im FormatHH:mm
Hinweis: Der aktuelle DailySync der Web-App veröffentlicht das früheste Rückgabedatum per MQTT. Ein automatischer Google-Kalender-Eintrag wird dort derzeit nicht ausgeführt.
Ausgangspunkt: Projekt/BiboWebBot.Console/appsettings.example.json
Google:Enabled– aktiviert die Google-Kalender-SynchronisationGoogle:ClientId/Google:ClientSecret– OAuth-Client für die Console-AppGoogle:TokenStorePath– lokaler Speicherort für OAuth-TokensGoogle:RedirectUri– Redirect-URI für den lokalen OAuth-FlowGoogle:CalendarId– ZielkalenderGoogle:EventSummaryTemplate– Titelvorlage für KalendereinträgeMqtt:*– MQTT-Konfiguration
/accountsöffnen.- VÖBB-Konten anlegen oder Konten aus
appsettings*.jsonverwenden. - Gewünschte Konten für Sammelläufe markieren.
- Optional per Google anmelden und den Zielkalender auswählen.
- Auf der Startseite die Ausleihen für konfigurierte Konten laden.
- Das früheste Rückgabedatum optional an Google Kalender und/oder MQTT übertragen.
Geeignet für die manuelle Nutzung im Browser mit sichtbaren Ladeprotokollen, Kontenverwaltung und Google-Kalender-Auswahl.
Geeignet für lokale Tasks, Scheduler oder andere Automatisierungen, wenn Ausleihen ohne Browseroberfläche geladen und weiterverarbeitet werden sollen.
- Zugangsdaten im Browser-Storage nur auf vertrauenswürdigen Geräten verwenden.
- Keine echten Zugangsdaten, MQTT-Passwörter oder Google-Secrets in ein öffentliches Repository committen.
- Echte Werte nur in lokalen, nicht versionierten
appsettings.json-Dateien pflegen; im Repository bleiben ausschließlich dieappsettings.example.json-Vorlagen.
Projekt/BiboWebBot/Components/Pages/Home.razor– Laden der Ausleihen und StatusanzeigeProjekt/BiboWebBot/Components/Pages/Accounts.razor– Konten- und KalenderkonfigurationProjekt/BiboWebBot/Services/DailyLoanSyncHostedService.cs– täglicher HintergrundlaufProjekt/BiboWebBot.VoebbParsing/VoebbAutomationService.cs– HTTP-Login und ParsingProjekt/BiboWebBot.GoogleCalendar/GoogleCalendarService.cs– Google-Kalender-FunktionenProjekt/BiboWebBot.Mqtt/MqttPublishService.cs– MQTT-Versand