Watch It? Track It.

De base.json van een serie bevat al haar seizoenen en afleveringen, dus één verzoek levert de hele serie op. Namen en beschrijvingen van de serie, de seizoenen en de afleveringen staan in de taalbestanden.

Bestanden

  • 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

Een afbeelding is een object met de paden full en thumb.

base.json

VeldTypeBeschrijving
typestringRecordtype.
idnumberTheTVDB-id.
slugstringURL-slug, uniek binnen het type.
popularitynumberPopulariteitsscore van TheTVDB; hoger is populairder. Scores zijn alleen binnen hetzelfde type vergelijkbaar.
deletedbooleanTrue als het record is verwijderd. De bestanden blijven gepubliceerd.
firstAiredstringDatum van de eerste aflevering (YYYY-MM-DD).
lastAiredstringDatum van de meest recente aflevering.
statusstringUitzendstatus volgens TheTVDB, zoals Continuing of Ended.
networkstringZender.
originalLanguagestringCode van de oorspronkelijke taal.
originalCountrystringLand van herkomst (code van drie letters).
imageimageHoofdafbeelding: een poster voor titels, een foto voor personen.
images{ [kind]: image }De beste afbeelding van elk soort: poster, background, banner, icon, clearart, clearlogo.
imagesByLang{ [kind]: image[] }Per soort de beste afbeelding in elke taal, met taalcode, grootte en score.
castcredit[]Acteurs, in volgorde van vermelding.
crewcredit[]Alle andere vermelde personen, met hun functie.
topBilledIdsnumber[]Id's van personen die als eerste worden uitgelicht.
seasonsseason[]Seizoenen in uitzendvolgorde, elk met de bijbehorende afleveringen.
genresstring[]Genreslugs, zoals TheTVDB ze definieert.
languagesstring[]Talen waarvoor dit record bestanden heeft.
remoteIds{ [site]: string }Id's op andere sites (imdb, tmdb, wikidata, …), per site.

Voorbeeld

{
  "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" }
}

Seizoenen

VeldTypeBeschrijving
idnumberTheTVDB-id.
numbernumberSeizoensnummer; 0 staat voor specials.
deletedbooleanTrue als het record is verwijderd. De bestanden blijven gepubliceerd.
imageimageHoofdafbeelding: een poster voor titels, een foto voor personen.
images{ [kind]: image }De beste afbeelding van elk soort: poster, background, banner, icon, clearart, clearlogo.
imagesByLang{ [kind]: image[] }Per soort de beste afbeelding in elke taal, met taalcode, grootte en score.
episodesepisode[]De afleveringen van het seizoen.

Afleveringen

VeldTypeBeschrijving
idnumberTheTVDB-id.
numbernumberAfleveringsnummer binnen het seizoen.
airedstringUitzenddatum (YYYY-MM-DD).
runtimenumberDuur in minuten.
imageimageHoofdafbeelding: een poster voor titels, een foto voor personen.
criticalToStorybooleanGemarkeerd als essentieel voor het verhaal.
specialTypestringWat voor special het is (afleveringen van seizoen 0).
deletedbooleanTrue als het record is verwijderd. De bestanden blijven gepubliceerd.

Credits

Elk item in cast en crew:

VeldTypeBeschrijving
idnumberId van de persoon.
activityIdnumberCredit-id, uniek per credit.
rolestringGespeeld personage (cast).
jobstringFunctie (crew): director, writer, producer, …
slugstringDe slug van de persoon.
imageimageDe foto van de persoon.
topBilledbooleanEen uitgelichte credit.
deletedbooleanTrue als de persoon is verwijderd.

Taalbestanden

VeldTypeBeschrijving
typestringRecordtype.
idnumberTheTVDB-id.
langstringTaal van dit bestand.
namestringNaam in deze taal.
overviewstringBeschrijving in deze taal.
credits{ [personId]: { name, role } }Per persoons-id: de naam in deze taal en de rol.
seasons{ [seasonId]: { name, overview } }Per seizoens-id: de naam en beschrijving.
episodes{ [episodeId]: { name, overview } }Per afleverings-id: de naam en beschrijving.

Voorbeeld

{
  "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…" } }
}

Een titel vinden via de slug

Serie- en film-URL's gebruiken slugs (breaking-bad). De slugindex koppelt elke slug aan zijn id en is verdeeld over 256 kleine bestanden: het bestand van een slug is genoemd naar de eerste twee hexadecimale tekens van de SHA-1 van de slug.

// 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())