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.
slugstringالمعرّف النصي في عنوان URL، فريد ضمن النوع.
popularitynumberدرجة الشعبية في TheTVDB؛ كلما ارتفعت زادت الشعبية. لا تصلح المقارنة بين الدرجات إلا ضمن النوع نفسه.
deletedbooleantrue إذا حُذف السجل. تبقى ملفاته منشورة.
releasedstringتاريخ الإصدار (YYYY-MM-DD).
runtimenumberالمدة بالدقائق.
imageimageالصورة الرئيسية: ملصق للأعمال، وصورة شخصية للأشخاص.
images{ [kind]: image }أفضل صورة من كل نوع: poster, background, banner, icon, clearart, clearlogo.
imagesByLang{ [kind]: image[] }لكل نوع، أفضل صورة في كل لغة، مع رمز لغتها وحجمها ودرجتها.
castcredit[]الممثلون، بترتيب ظهور أسمائهم.
crewcredit[]كل المشاركين الآخرين، مع وظائفهم.
topBilledIdsnumber[]معرّفات الأشخاص الذين يُعرضون أولًا.
genresstring[]المعرّفات النصية للتصنيفات كما يعرّفها 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, …
slugstringالمعرّف النصي للشخص.
imageimageصورة الشخص.
topBilledbooleanمشاركة بارزة.
deletedbooleantrue إذا حُذف الشخص.

ملفات اللغات

الحقلالنوعالوصف
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" } }
}

العثور على عمل عبر معرّفه النصي

تستخدم عناوين URL للمسلسلات والأفلام معرّفات نصية (breaking-bad). يربط فهرس المعرّفات النصية كل معرّف نصي بمعرّفه الرقمي، وهو مقسّم إلى 256 ملفًا صغيرًا: يُسمّى ملف المعرّف النصي بأول حرفين ست عشريين من قيمة SHA-1 للمعرّف النصي.

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