Watch It? Track It.

فایل base.json یک فیلم داده‌های مستقل از زبان و عوامل آن را در بر دارد؛ نام‌ها و توضیحاتش در فایل‌های زبان هستند.

فایل‌ها

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

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

base.json

فیلدنوعتوضیح
typestringنوع رکورد.
idnumberشناسه TheTVDB.
slugstringslug نشانی URL، یکتا در هر نوع.
popularitynumberامتیاز محبوبیت TheTVDB؛ امتیاز بالاتر یعنی محبوب‌تر. امتیازها فقط در یک نوع قابل مقایسه‌اند.
deletedbooleanاگر رکورد حذف شده باشد true است. فایل‌هایش همچنان منتشر می‌مانند.
releasedstringتاریخ اکران (YYYY-MM-DD).
runtimenumberمدت به دقیقه.
imageimageتصویر اصلی: پوستر برای آثار، عکس برای افراد.
images{ [kind]: image }بهترین تصویر از هر نوع: poster, background, banner, icon, clearart, clearlogo.
imagesByLang{ [kind]: image[] }برای هر نوع، بهترین تصویر در هر زبان، همراه با کد زبان، اندازه و امتیاز آن.
castcredit[]بازیگران، به ترتیب تیتراژ.
crewcredit[]سایر افراد دارای اعتبار، همراه با سمتشان.
topBilledIdsnumber[]شناسه افرادی که باید اول نمایش داده شوند.
genresstring[]slugهای ژانر، مطابق تعریف TheTVDB.
languagesstring[]زبان‌هایی که این رکورد برایشان فایل دارد.
remoteIds{ [site]: string }شناسه‌ها در سایت‌های دیگر (imdb, tmdb, wikidata, …)، به تفکیک سایت.

نمونه

{
  "type": "movie",
  "id": 16612,
  "slug": "barbie",
  "popularity": 1213687,
  "deleted": false,
  "released": "2023-07-18",
  "runtime": 114,
  "images": {
    "poster": { "full": "/images/movie/16612/poster/64ba61bb1dc73.jpg", "thumb": "/images/movie/16612/poster/64ba61bb1dc73.t.jpg" }
  },
  "imagesByLang": {
    "poster": [{ "full": "/images/movie/16612/poster/64ba61bb1dc73.jpg", "thumb": "…", "lang": "eng", "width": 680, "height": 1000, "score": 100007 }]
  },
  "cast": [
    { "id": 327479, "activityId": 44, "role": "Barbie", "slug": "margot-robbie", "topBilled": true, "deleted": false }
  ],
  "crew": [
    { "id": 569546, "activityId": 93, "job": "producer", "slug": "walter-f-parkes", "topBilled": false, "deleted": false }
  ],
  "topBilledIds": [327479],
  "genres": ["adventure", "comedy", "fantasy"],
  "languages": ["de", "en", "fr"],
  "remoteIds": { "imdb": "tt1517268", "tmdb": "346698" }
}

عوامل

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

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

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

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

نمونه

{
  "type": "movie",
  "id": 16612,
  "lang": "en",
  "name": "Barbie",
  "overview": "Barbie and Ken are having the time of their lives…",
  "credits": { "327479": { "name": "Margot Robbie", "role": "Barbie" } }
}

یافتن یک اثر با slug آن

نشانی‌های URL سریال‌ها و فیلم‌ها از slug استفاده می‌کنند (breaking-bad). فهرست slug هر slug را به شناسه‌اش نگاشت می‌کند و به 256 فایل کوچک تقسیم شده است: نام فایل هر slug دو نویسه اول هگزادسیمال SHA-1 آن slug است.

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

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