Watch It? Track It.

Die base.json einer Serie enthält all ihre Staffeln und Folgen, sodass eine einzige Anfrage die ganze Serie liefert. Namen und Beschreibungen der Serie, ihrer Staffeln und Folgen stehen in den Sprachdateien.

Dateien

  • https://api.watchittrackit.com/v1/tv/{id}/base.json
  • https://api.watchittrackit.com/v1/tv/{id}/{lang}.json
  • https://api.watchittrackit.com/v1/tv/slugs/{shard}.json

Ein Bild ist ein Objekt mit den Pfaden full und thumb.

base.json

FeldTypBeschreibung
typestringDatensatztyp.
idnumberTheTVDB-ID.
slugstringURL-Slug, eindeutig innerhalb des Typs.
popularitynumberBeliebtheitswert von TheTVDB; höher bedeutet beliebter. Werte sind nur innerhalb eines Typs vergleichbar.
deletedbooleanTrue, wenn der Datensatz entfernt wurde. Seine Dateien bleiben veröffentlicht.
firstAiredstringDatum der ersten Folge (YYYY-MM-DD).
lastAiredstringDatum der neuesten Folge.
statusstringAusstrahlungsstatus von TheTVDB, etwa Continuing oder Ended.
networkstringSender.
originalLanguagestringCode der Originalsprache.
originalCountrystringUrsprungsland (dreistelliger Code).
imageimageHauptbild: ein Poster für Titel, ein Foto für Personen.
images{ [kind]: image }Das beste Bild jeder Art: poster, background, banner, icon, clearart, clearlogo.
imagesByLang{ [kind]: image[] }Pro Art das beste Bild in jeder Sprache, mit Sprachcode, Größe und Bewertung.
castcredit[]Schauspieler in der Reihenfolge der Nennung.
crewcredit[]Alle weiteren Mitwirkenden mit ihrer Tätigkeit.
topBilledIdsnumber[]IDs der Personen, die zuerst hervorgehoben werden.
seasonsseason[]Staffeln in Ausstrahlungsreihenfolge, jeweils mit ihren Folgen.
genresstring[]Genre-Slugs, wie TheTVDB sie definiert.
languagesstring[]Sprachen, für die dieser Datensatz Dateien hat.
remoteIds{ [site]: string }IDs auf anderen Websites (imdb, tmdb, wikidata, …), nach Website geordnet.

Beispiel

{
  "type": "tv",
  "id": 81189,
  "slug": "breaking-bad",
  "popularity": 3287090,
  "deleted": false,
  "firstAired": "2008-01-20",
  "lastAired": "2013-09-29",
  "status": "Ended",
  "images": {
    "poster": { "full": "/images/tv/81189/1340353429.jpg", "thumb": "/images/tv/81189/1340353429.t.jpg" }
  },
  "cast": [
    { "id": 255211, "activityId": 180, "role": "Walter White", "slug": "bryan-cranston", "topBilled": false, "deleted": false }
  ],
  "seasons": [
    {
      "id": 30272, "number": 1, "deleted": false,
      "episodes": [{ "id": 349232, "number": 1, "aired": "2008-01-20", "runtime": 58, "deleted": false }]
    }
  ],
  "genres": ["drama", "crime"],
  "languages": ["de", "en", "fr"],
  "remoteIds": { "imdb": "tt0903747" }
}

Staffeln

FeldTypBeschreibung
idnumberTheTVDB-ID.
numbernumberStaffelnummer; 0 steht für Specials.
deletedbooleanTrue, wenn der Datensatz entfernt wurde. Seine Dateien bleiben veröffentlicht.
imageimageHauptbild: ein Poster für Titel, ein Foto für Personen.
images{ [kind]: image }Das beste Bild jeder Art: poster, background, banner, icon, clearart, clearlogo.
imagesByLang{ [kind]: image[] }Pro Art das beste Bild in jeder Sprache, mit Sprachcode, Größe und Bewertung.
episodesepisode[]Die Folgen der Staffel.

Folgen

FeldTypBeschreibung
idnumberTheTVDB-ID.
numbernumberFolgennummer innerhalb der Staffel.
airedstringAusstrahlungsdatum (YYYY-MM-DD).
runtimenumberLänge in Minuten.
imageimageHauptbild: ein Poster für Titel, ein Foto für Personen.
criticalToStorybooleanAls wesentlich für die Handlung markiert.
specialTypestringArt des Specials (Folgen der Staffel 0).
deletedbooleanTrue, wenn der Datensatz entfernt wurde. Seine Dateien bleiben veröffentlicht.

Mitwirkende

Jeder Eintrag in cast und crew:

FeldTypBeschreibung
idnumberPersonen-ID.
activityIdnumberCredit-ID, eindeutig pro Credit.
rolestringGespielte Rolle (Besetzung).
jobstringTätigkeit (Crew): director, writer, producer, …
slugstringDer Slug der Person.
imageimageDas Foto der Person.
topBilledbooleanEin hervorgehobener Credit.
deletedbooleanTrue, wenn die Person entfernt wurde.

Sprachdateien

FeldTypBeschreibung
typestringDatensatztyp.
idnumberTheTVDB-ID.
langstringSprache dieser Datei.
namestringName in dieser Sprache.
overviewstringBeschreibung in dieser Sprache.
credits{ [personId]: { name, role } }Pro Personen-ID: der Name in dieser Sprache und die Rolle.
seasons{ [seasonId]: { name, overview } }Pro Staffel-ID: Name und Beschreibung.
episodes{ [episodeId]: { name, overview } }Pro Folgen-ID: Name und Beschreibung.

Beispiel

{
  "type": "tv",
  "id": 81189,
  "lang": "en",
  "name": "Breaking Bad",
  "overview": "When Walter White, a chemistry teacher, …",
  "credits": { "255211": { "name": "Bryan Cranston", "role": "Walter White" } },
  "seasons": { "30272": { "overview": "High school chemistry teacher Walter White…" } },
  "episodes": { "349232": { "name": "Pilot", "overview": "When an unassuming high school chemistry teacher…" } }
}

Einen Titel über seinen Slug finden

Serien- und Film-URLs verwenden Slugs (breaking-bad). Der Slug-Index ordnet jedem Slug seine ID zu und ist auf 256 kleine Dateien verteilt: Die Datei eines Slugs ist nach den ersten beiden Hex-Zeichen des SHA-1 des Slugs benannt.

// Node.js
import { createHash } from "node:crypto"

const slug = "breaking-bad"
const shard = createHash("sha1").update(slug, "utf8").digest("hex").slice(0, 2)
const index = await fetch(`https://api.watchittrackit.com/v1/tv/slugs/${shard}.json`).then((r) => r.json())
const id = index[slug]
const record = await fetch(`https://api.watchittrackit.com/v1/tv/${id}/base.json`).then((r) => r.json())