API
Το base.json μιας σειράς περιέχει όλες τις σεζόν και τα επεισόδιά της, οπότε ένα αίτημα φέρνει ολόκληρη τη σειρά. Τα ονόματα και οι περιγραφές της σειράς, των σεζόν και των επεισοδίων της βρίσκονται στα αρχεία γλώσσας.
Αρχεία
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
Μια εικόνα είναι αντικείμενο με διαδρομές full και thumb.
base.json
| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
| type | string | Τύπος εγγραφής. |
| id | number | Id του TheTVDB. |
| slug | string | Slug του URL, μοναδικό εντός του τύπου. |
| popularity | number | Βαθμολογία δημοφιλίας του TheTVDB· όσο υψηλότερη, τόσο πιο δημοφιλές. Οι βαθμολογίες συγκρίνονται μόνο εντός του ίδιου τύπου. |
| deleted | boolean | True αν η εγγραφή αφαιρέθηκε. Τα αρχεία της παραμένουν δημοσιευμένα. |
| firstAired | string | Ημερομηνία του πρώτου επεισοδίου (YYYY-MM-DD). |
| lastAired | string | Ημερομηνία του πιο πρόσφατου επεισοδίου. |
| status | string | Κατάσταση προβολής από το TheTVDB, π.χ. Continuing ή Ended. |
| network | string | Δίκτυο. |
| originalLanguage | string | Κωδικός αρχικής γλώσσας. |
| originalCountry | string | Χώρα προέλευσης (κωδικός τριών γραμμάτων). |
| image | image | Κύρια εικόνα: αφίσα για τους τίτλους, φωτογραφία για τα πρόσωπα. |
| images | { [kind]: image } | Η καλύτερη εικόνα κάθε είδους: poster, background, banner, icon, clearart, clearlogo. |
| imagesByLang | { [kind]: image[] } | Ανά είδος, η καλύτερη εικόνα σε κάθε γλώσσα, με τον κωδικό γλώσσας, το μέγεθος και τη βαθμολογία της. |
| cast | credit[] | Ηθοποιοί, με τη σειρά των τίτλων. |
| crew | credit[] | Όλοι οι υπόλοιποι συντελεστές, με τη θέση τους. |
| topBilledIds | number[] | Id των προσώπων που προβάλλονται πρώτα. |
| seasons | season[] | Σεζόν με τη σειρά προβολής, η καθεμία με τα επεισόδιά της. |
| genres | string[] | Slug ειδών, όπως τα ορίζει το TheTVDB. |
| languages | string[] | Γλώσσες για τις οποίες η εγγραφή έχει αρχεία. |
| remoteIds | { [site]: string } | Id σε άλλους ιστότοπους (imdb, tmdb, wikidata, …), με κλειδί τον ιστότοπο. |
Παράδειγμα
{
"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" }
}Σεζόν
| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
| id | number | Id του TheTVDB. |
| number | number | Αριθμός σεζόν· το 0 είναι τα ειδικά επεισόδια. |
| deleted | boolean | True αν η εγγραφή αφαιρέθηκε. Τα αρχεία της παραμένουν δημοσιευμένα. |
| image | image | Κύρια εικόνα: αφίσα για τους τίτλους, φωτογραφία για τα πρόσωπα. |
| images | { [kind]: image } | Η καλύτερη εικόνα κάθε είδους: poster, background, banner, icon, clearart, clearlogo. |
| imagesByLang | { [kind]: image[] } | Ανά είδος, η καλύτερη εικόνα σε κάθε γλώσσα, με τον κωδικό γλώσσας, το μέγεθος και τη βαθμολογία της. |
| episodes | episode[] | Τα επεισόδια της σεζόν. |
Επεισόδια
| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
| id | number | Id του TheTVDB. |
| number | number | Αριθμός επεισοδίου μέσα στη σεζόν του. |
| aired | string | Ημερομηνία προβολής (YYYY-MM-DD). |
| runtime | number | Διάρκεια σε λεπτά. |
| image | image | Κύρια εικόνα: αφίσα για τους τίτλους, φωτογραφία για τα πρόσωπα. |
| criticalToStory | boolean | Σημειωμένο ως ουσιώδες για την πλοκή. |
| specialType | string | Τι είδους ειδικό επεισόδιο είναι (επεισόδια της σεζόν 0). |
| deleted | boolean | True αν η εγγραφή αφαιρέθηκε. Τα αρχεία της παραμένουν δημοσιευμένα. |
Συντελεστές
Κάθε στοιχείο στα cast και crew:
| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
| id | number | Id του προσώπου. |
| activityId | number | Id της συμμετοχής, μοναδικό για κάθε συμμετοχή. |
| role | string | Ρόλος που υποδύεται (ηθοποιοί). |
| job | string | Θέση (συντελεστές): director, writer, producer, … |
| slug | string | Το slug του προσώπου. |
| image | image | Η φωτογραφία του προσώπου. |
| topBilled | boolean | Προβεβλημένη συμμετοχή. |
| deleted | boolean | True αν το πρόσωπο αφαιρέθηκε. |
Αρχεία γλώσσας
| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
| type | string | Τύπος εγγραφής. |
| id | number | Id του TheTVDB. |
| lang | string | Γλώσσα αυτού του αρχείου. |
| name | string | Όνομα σε αυτή τη γλώσσα. |
| overview | string | Περιγραφή σε αυτή τη γλώσσα. |
| credits | { [personId]: { name, role } } | Ανά id προσώπου: το όνομά του σε αυτή τη γλώσσα και ο ρόλος του. |
| seasons | { [seasonId]: { name, overview } } | Ανά id σεζόν: το όνομα και η περιγραφή της. |
| episodes | { [episodeId]: { name, overview } } | Ανά id επεισοδίου: το όνομα και η περιγραφή του. |
Παράδειγμα
{
"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…" } }
}Εύρεση τίτλου από το slug του
Τα URL σειρών και ταινιών χρησιμοποιούν slug (breaking-bad). Το ευρετήριο slug αντιστοιχίζει κάθε slug στο id του και είναι χωρισμένο σε 256 μικρά αρχεία: το αρχείο ενός slug ονομάζεται από τους δύο πρώτους δεκαεξαδικούς χαρακτήρες του SHA-1 του 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())