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.
slugstringالمعرّف النصي في عنوان URL، فريد ضمن النوع.
popularitynumberدرجة الشعبية في TheTVDB؛ كلما ارتفعت زادت الشعبية. لا تصلح المقارنة بين الدرجات إلا ضمن النوع نفسه.
deletedbooleantrue إذا حُذف السجل. تبقى ملفاته منشورة.
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[]المعرّفات النصية للتصنيفات كما يعرّفها 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 للحلقات الخاصة.
deletedbooleantrue إذا حُذف السجل. تبقى ملفاته منشورة.
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).
deletedbooleantrue إذا حُذف السجل. تبقى ملفاته منشورة.

طاقم العمل

كل عنصر في cast وcrew:

الحقلالنوعالوصف
idnumberمعرّف الشخص.
activityIdnumberمعرّف المشاركة، فريد لكل مشاركة.
rolestringالشخصية المؤدّاة (الممثلون).
jobstringالوظيفة (الطاقم الفني): director, writer, producer, …
slugstringالمعرّف النصي للشخص.
imageimageصورة الشخص.
topBilledbooleanمشاركة بارزة.
deletedbooleantrue إذا حُذف الشخص.

ملفات اللغات

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

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

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

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