Ein lokaler Sync-Client für die Open Trivia Database (opentdb.com) API.
Dieses Tool lädt alle Quiz-Fragen aus der Open Trivia DB in eine lokale SQLite-Datenbank, sodass sie offline verfügbar sind — nützlich für Lehrer, die Quizze erstellen wollen, ohne bei jeder Anfrage auf die API angewiesen zu sein.
Ursprünglich ein Projekt aus dem Unterricht, das ich dann fertig geschrieben habe.
- Deno / TypeScript
- Prisma ORM (mit SQLite)
- Fetch API mit solidem Error Handling (die opentdb API hat interessante Constraints)
he– HTML-Entity-Dekodierung für API-Rückgaben
- Deno installiert
- Ein
.env-File (siehe Beispiel unten)
# Repository klonen
git clone https://github.com/georgernstgraf/opentdb.git
cd opentdb
# Prisma Client generieren
deno task prisma:generate
# Migration ausführen (SQLite-DB wird angelegt)
deno task prisma:migrate_dev
# Datenbank befüllen (Fragen aus der API abrufen)
deno task prisma:seed| Variable | Beschreibung | Beispiel |
|---|---|---|
DATABASE_URL |
Pfad zur SQLite-DB | file:./dev.db |
| Task | Beschreibung |
|---|---|
prisma:generate |
Prisma Client generieren |
prisma:migrate_dev |
Migration für Entwicklung ausführen |
prisma:deploy |
Migration für Produktion ausführen |
prisma:seed |
Datenbank mit Fragen befüllen |
prisma:studio |
Prisma Studio (DB-UI) starten |
prisma:validate |
Prisma Schema validieren |
Die Open Trivia DB verwendet numerische Response-Codes:
| Code | Bedeutung |
|---|---|
| 0 | Success — Ergebnisse erfolgreich zurückgegeben |
| 1 | No Results — Keine Fragen für die Anfrage gefunden |
| 2 | Invalid Parameter — Ungültige Parameter übergeben |
| 3 | Token Not Found — Session-Token existiert nicht |
| 4 | Token Empty — Alle Fragen für dieses Token bereits abgerufen |
| 5 | Rate Limit — Maximal 1 Anfrage pro 5 Sekunden pro IP |