API
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.jsonhttps://api.watchittrackit.com/v1/tv/{id}/{lang}.jsonhttps://api.watchittrackit.com/v1/tv/slugs/{shard}.json
Een afbeelding is een object met de paden full en thumb.
base.json
| Veld | Type | Beschrijving |
|---|---|---|
| type | string | Recordtype. |
| id | number | TheTVDB-id. |
| slug | string | URL-slug, uniek binnen het type. |
| popularity | number | Populariteitsscore van TheTVDB; hoger is populairder. Scores zijn alleen binnen hetzelfde type vergelijkbaar. |
| deleted | boolean | True als het record is verwijderd. De bestanden blijven gepubliceerd. |
| firstAired | string | Datum van de eerste aflevering (YYYY-MM-DD). |
| lastAired | string | Datum van de meest recente aflevering. |
| status | string | Uitzendstatus volgens TheTVDB, zoals Continuing of Ended. |
| network | string | Zender. |
| originalLanguage | string | Code van de oorspronkelijke taal. |
| originalCountry | string | Land van herkomst (code van drie letters). |
| image | image | Hoofdafbeelding: 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. |
| cast | credit[] | Acteurs, in volgorde van vermelding. |
| crew | credit[] | Alle andere vermelde personen, met hun functie. |
| topBilledIds | number[] | Id's van personen die als eerste worden uitgelicht. |
| seasons | season[] | Seizoenen in uitzendvolgorde, elk met de bijbehorende afleveringen. |
| genres | string[] | Genreslugs, zoals TheTVDB ze definieert. |
| languages | string[] | 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
| Veld | Type | Beschrijving |
|---|---|---|
| id | number | TheTVDB-id. |
| number | number | Seizoensnummer; 0 staat voor specials. |
| deleted | boolean | True als het record is verwijderd. De bestanden blijven gepubliceerd. |
| image | image | Hoofdafbeelding: 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. |
| episodes | episode[] | De afleveringen van het seizoen. |
Afleveringen
| Veld | Type | Beschrijving |
|---|---|---|
| id | number | TheTVDB-id. |
| number | number | Afleveringsnummer binnen het seizoen. |
| aired | string | Uitzenddatum (YYYY-MM-DD). |
| runtime | number | Duur in minuten. |
| image | image | Hoofdafbeelding: een poster voor titels, een foto voor personen. |
| criticalToStory | boolean | Gemarkeerd als essentieel voor het verhaal. |
| specialType | string | Wat voor special het is (afleveringen van seizoen 0). |
| deleted | boolean | True als het record is verwijderd. De bestanden blijven gepubliceerd. |
Credits
Elk item in cast en crew:
| Veld | Type | Beschrijving |
|---|---|---|
| id | number | Id van de persoon. |
| activityId | number | Credit-id, uniek per credit. |
| role | string | Gespeeld personage (cast). |
| job | string | Functie (crew): director, writer, producer, … |
| slug | string | De slug van de persoon. |
| image | image | De foto van de persoon. |
| topBilled | boolean | Een uitgelichte credit. |
| deleted | boolean | True als de persoon is verwijderd. |
Taalbestanden
| Veld | Type | Beschrijving |
|---|---|---|
| type | string | Recordtype. |
| id | number | TheTVDB-id. |
| lang | string | Taal van dit bestand. |
| name | string | Naam in deze taal. |
| overview | string | Beschrijving 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())