Watch It? Track It.

فایل base.json یک سریال همه فصل‌ها و قسمت‌های آن را در بر دارد، پس با یک درخواست کل سریال را دریافت می‌کنید. نام‌ها و توضیحات سریال، فصل‌ها و قسمت‌ها در فایل‌های زبان هستند.

فایل‌ها

  • 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

هر تصویر یک شیء با مسیرهای full و thumb است.

base.json

فیلدنوعتوضیح
typestringنوع رکورد.
idnumberشناسه TheTVDB.
slugstringslug نشانی URL، یکتا در هر نوع.
popularitynumberامتیاز محبوبیت TheTVDB؛ امتیاز بالاتر یعنی محبوب‌تر. امتیازها فقط در یک نوع قابل مقایسه‌اند.
deletedbooleanاگر رکورد حذف شده باشد true است. فایل‌هایش همچنان منتشر می‌مانند.
firstAiredstringتاریخ نخستین قسمت (YYYY-MM-DD).
lastAiredstringتاریخ آخرین قسمت.
statusstringوضعیت پخش از TheTVDB، مانند Continuing or Ended.
networkstringشبکه.
originalLanguagestringکد زبان اصلی.
originalCountrystringکشور اصلی (کد سه‌حرفی).
imageimageتصویر اصلی: پوستر برای آثار، عکس برای افراد.
images{ [kind]: image }بهترین تصویر از هر نوع: poster, background, banner, icon, clearart, clearlogo.
imagesByLang{ [kind]: image[] }برای هر نوع، بهترین تصویر در هر زبان، همراه با کد زبان، اندازه و امتیاز آن.
castcredit[]بازیگران، به ترتیب تیتراژ.
crewcredit[]سایر افراد دارای اعتبار، همراه با سمتشان.
topBilledIdsnumber[]شناسه افرادی که باید اول نمایش داده شوند.
seasonsseason[]فصل‌ها به ترتیب پخش، هر کدام با قسمت‌هایش.
genresstring[]slugهای ژانر، مطابق تعریف TheTVDB.
languagesstring[]زبان‌هایی که این رکورد برایشان فایل دارد.
remoteIds{ [site]: string }شناسه‌ها در سایت‌های دیگر (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" }
}

فصل‌ها

فیلدنوعتوضیح
idnumberشناسه TheTVDB.
numbernumberشماره فصل؛ 0 برای قسمت‌های ویژه است.
deletedbooleanاگر رکورد حذف شده باشد true است. فایل‌هایش همچنان منتشر می‌مانند.
imageimageتصویر اصلی: پوستر برای آثار، عکس برای افراد.
images{ [kind]: image }بهترین تصویر از هر نوع: poster, background, banner, icon, clearart, clearlogo.
imagesByLang{ [kind]: image[] }برای هر نوع، بهترین تصویر در هر زبان، همراه با کد زبان، اندازه و امتیاز آن.
episodesepisode[]قسمت‌های فصل.

قسمت‌ها

فیلدنوعتوضیح
idnumberشناسه TheTVDB.
numbernumberشماره قسمت در فصل خود.
airedstringتاریخ پخش (YYYY-MM-DD).
runtimenumberمدت به دقیقه.
imageimageتصویر اصلی: پوستر برای آثار، عکس برای افراد.
criticalToStorybooleanبه‌عنوان قسمتی ضروری برای داستان علامت خورده است.
specialTypestringنوع قسمت ویژه (قسمت‌های فصل 0).
deletedbooleanاگر رکورد حذف شده باشد true است. فایل‌هایش همچنان منتشر می‌مانند.

عوامل

هر مورد در cast و crew:

فیلدنوعتوضیح
idnumberشناسه فرد.
activityIdnumberشناسه اعتبار، یکتا برای هر اعتبار.
rolestringنقش ایفاشده (بازیگران).
jobstringسمت (عوامل پشت صحنه): director, writer, producer, …
slugstringslug فرد.
imageimageعکس فرد.
topBilledbooleanاعتبار برجسته.
deletedbooleanاگر فرد حذف شده باشد true است.

فایل‌های زبان

فیلدنوعتوضیح
typestringنوع رکورد.
idnumberشناسه TheTVDB.
langstringزبان این فایل.
namestringنام به این زبان.
overviewstringتوضیح به این زبان.
credits{ [personId]: { name, role } }برای هر شناسه فرد: نام او به این زبان و نقشش.
seasons{ [seasonId]: { name, overview } }برای هر شناسه فصل: نام و توضیح آن.
episodes{ [episodeId]: { name, overview } }برای هر شناسه قسمت: نام و توضیح آن.

نمونه

{
  "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 را به شناسه‌اش نگاشت می‌کند و به 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())