חברות ורשתות שידור

נקודות הקצה של חברות ורשתות מחזירות את השם, מדינת המקור ונתיב הלוגו של אולפן או רשת טלוויזיה לפי מזהה, ב-GET /3/company/{company_id} וב-GET /3/network/{network_id}. הנתיבים וה-JSON זהים ל-TMDB v3. העבירו את המזהים אל with_companies ו-with_networks ב-discover כדי להציג את הכותרים שלהן.

עודכן צפייה כ-Markdown

קבלת פרטי חברה

GET /3/company/{company_id} מחזיר חברת הפקה אחת: שם, מדינת מקור ונתיב לוגו. הוא נושא גם description, headquarters, homepage ו-parent_company, אבל amodb משאיר אותם ריקים. המזהה הוא מזהה החברה של TMDB, ולכן מזהים ששמרתם קודם ממשיכים לעבוד.

הדוגמה שלמטה קוראת את חברת ההפקה הראשונה של סרט 550 ואז טוענת את החברה הזו.

bashjspyphpgo
COMPANY_ID=$(curl -sf "https://api.amodb.dev/3/movie/550" \
  -H "Authorization: Bearer $AMODB_KEY" | jq '.production_companies[0].id')
curl -sf "https://api.amodb.dev/3/company/$COMPANY_ID" \
  -H "Authorization: Bearer $AMODB_KEY"
const base = 'https://api.amodb.dev/3';
const headers = { Authorization: `Bearer ${process.env.AMODB_KEY}` };

async function get(path) {
  const res = await fetch(base + path, { headers });
  if (!res.ok) throw new Error(`amodb returned ${res.status} for ${path}`);
  return res.json();
}

const movie = await get('/movie/550');
const company = await get(`/company/${movie.production_companies[0].id}`);
console.log(company.name, company.origin_country, company.logo_path);
import os
import requests

BASE = "https://api.amodb.dev/3"
HEADERS = {"Authorization": f"Bearer {os.environ['AMODB_KEY']}"}


def get(path):
    r = requests.get(BASE + path, headers=HEADERS, timeout=10)
    r.raise_for_status()
    return r.json()


movie = get("/movie/550")
company = get(f"/company/{movie['production_companies'][0]['id']}")
print(company["name"], company["origin_country"], company["logo_path"])
<?php
function amodb_get(string $path): array {
    $ch = curl_init('https://api.amodb.dev/3' . $path);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('AMODB_KEY')],
    ]);
    $body = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($status !== 200) {
        throw new RuntimeException("amodb returned $status for $path");
    }
    return json_decode($body, true);
}

$movie = amodb_get('/movie/550');
$company = amodb_get('/company/' . $movie['production_companies'][0]['id']);
echo $company['name'], ' ', $company['origin_country'], PHP_EOL;
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"os"
	"time"
)

var client = &http.Client{Timeout: 10 * time.Second}

func get(path string, out any) error {
	req, err := http.NewRequest("GET", "https://api.amodb.dev/3"+path, nil)
	if err != nil {
		return err
	}
	req.Header.Set("Authorization", "Bearer "+os.Getenv("AMODB_KEY"))
	res, err := client.Do(req)
	if err != nil {
		return err
	}
	defer res.Body.Close()
	if res.StatusCode != http.StatusOK {
		return fmt.Errorf("amodb returned %s for %s", res.Status, path)
	}
	return json.NewDecoder(res.Body).Decode(out)
}

func main() {
	var movie struct {
		Companies []struct {
			ID int `json:"id"`
		} `json:"production_companies"`
	}
	if err := get("/movie/550", &movie); err != nil || len(movie.Companies) == 0 {
		panic("movie has no production companies")
	}
	var company struct {
		Name          string `json:"name"`
		OriginCountry string `json:"origin_country"`
	}
	if err := get(fmt.Sprintf("/company/%d", movie.Companies[0].ID), &company); err != nil {
		panic(err)
	}
	fmt.Println(company.Name, company.OriginCountry)
}

פרמטרים

  • company_idנתיבחובה
    מזהה חברה מספרי, למשל 25.
  • api_keyשאילתהאחד משניים
    המפתח שלכם. השתמשו בו או בכותרת Authorization: Bearer.

שדות התגובה

שדהסוגהערות
descriptionstringתמיד מחרוזת ריקה.
headquartersstringעיר או אזור. ריק ברוב החברות.
homepagestringכתובת אתר. ריק ברוב החברות.
idintegerמזהה החברה.
logo_pathstring או nullמצרפים ל-https://img.amodb.dev/t/p/{size}.
namestringשם החברה.
origin_countrystringקוד ISO 3166-1 כמו US. יכול להיות ריק.
parent_companynullתמיד null. amodb לא ממלא את חברת האם.

תגובה לדוגמה

JSON
{
  "description": "",
  "headquarters": "",
  "homepage": "",
  "id": 25,
  "logo_path": "/nM2MfoMqzJQRiSynsDabOtFKetD.png",
  "name": "20th Century Fox",
  "origin_country": "US",
  "parent_company": null
}

אותו מבנה חוזר לכל מזהה חברה, למשל /3/company/1 עבור Lucasfilm.

קבלת פרטי רשת

GET /3/network/{network_id} מחזיר רשת טלוויזיה: שם, מדינת מקור, נתיב לוגו, headquarters ו-homepage. אין לו description ואין parent_company. קראו מזהה רשת מהמערך networks של סדרה. הסדרה /3/tv/1399 מציגה את HBO עם מזהה 49.

JSON
{
  "headquarters": "",
  "homepage": "",
  "id": 49,
  "logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
  "name": "HBO",
  "origin_country": "US"
}
שדהסוגהערות
headquartersstringריק ברוב הרשתות.
homepagestringריק ברוב הרשתות.
idintegerמזהה הרשת.
logo_pathstring או nullנתיב קובץ הלוגו.
namestringשם הרשת.
origin_countrystringקוד ISO 3166-1. מחרוזת ריקה בשירותי סטרימינג גלובליים כמו Netflix.

נקודות הקצה בקבוצה הזו

כל הנתיבים חולקים את הבסיס https://api.amodb.dev/3 ואת אותו אימות כמו נקודות קצה אחרות.

שיטה ונתיבמה מוחזרפרמטרים
GET /company/{company_id}רשומת חברהcompany_id
GET /network/{network_id}רשומת רשתnetwork_id
GET /search/companyרשימה מדורגת של חברות עם id, name, logo_path, origin_countryquery, page

amodb לא מציע נתיבי alternative_names או images לחברות ולרשתות. הלוגו הוא ה-logo_path ברשומה עצמה.

לוגואים

בנו את כתובת הלוגו כ-https://img.amodb.dev/t/p/w185 ועוד logo_path. הקריאה GET /3/configuration מציגה את גדלי הלוגו: w92, w154, w185, w300, w500 ו-original. טבלת הגדלים המלאה נמצאת בעמוד תמונות. קבצי לוגו הם בעיקר PNG, וקבצי תמונה לא דורשים מפתח. לחברה בלי לוגו יש logo_path שהוא null.

סינון discover לפי חברה או רשת

מזהי חברות ורשתות שימושיים ביותר כמסננים. discover הופך מזהה לרשימה של כותרים.

מסנןפועל עלמשמעות
with_companies/discover/movie ו-/discover/tvכותרים שהחברות האלה הפיקו.
with_networks/discover/tvסדרות שהרשתות האלה שידרו. discover של סרטים מתעלם ממנו.

הפרידו כמה מזהים בפסיק כדי לדרוש את כולם, או בתו קו אנכי (מקודד כ-%7C) כדי לקבל כל אחד מהם. הקריאה הראשונה שלמטה מציגה סרטים של חברה אחת, ממוינים לפי פופולריות. הקריאה השנייה מציגה את הסדרות ש-HBO שידרה.

curl
curl -sf "https://api.amodb.dev/3/discover/movie?with_companies=$COMPANY_ID&sort_by=popularity.desc&page=1" \
  -H "Authorization: Bearer $AMODB_KEY"

curl -sf "https://api.amodb.dev/3/discover/tv?with_networks=49&sort_by=popularity.desc" \
  -H "Authorization: Bearer $AMODB_KEY"

תוצאות discover נשמרות בקצה במטמון 30 דקות ומגיעות 20 בעמוד. רשימת המסננים המלאה נמצאת בעמוד גילוי.

חיפוש חברה לפי שם

GET /3/search/company?query=lucasfilm מחזיר רשימה מדורגת. בכל שורה יש id, logo_path, name ו-origin_country. השורות אינן מדורגות לפי התאמה מדויקת: האולפן ששמו Lucasfilm Ltd. הוא עם מזהה 1 והוא השורה השלישית, אחרי שני שמות דומים. השוו name ו-origin_country לפני שלוקחים מזהה. כללי השאילתה בעמוד חיפוש. אין נתיב חיפוש רשתות.

שגיאות

חברה או רשת שלא קיימות מחזירות את גוף השגיאה של TMDB עם status_code 34. כשלים אחרים משתמשים באותו גוף.

HTTPstatus_codeמתי
4017המפתח חסר או שגוי.
40236תקופת המסלול הסתיימה.
40434אין חברה או רשת עם המזהה הזה, או שהמזהה אינו מספר.
40537שלחתם שיטת כתיבה.
42925מעל הבקשות שלכם לדקה. המתינו Retry-After שניות.

את הרשימה המלאה ראו בעמוד שגיאות, ואת הכותרות בעמוד מגבלות קצב.

הערות מעשיות

  • שמרו את ה-id של החברה ליד השם. שמות משתנים, מזהים לא.
  • בדקו אם logo_path הוא null לפני שמציגים אותו. אל תסתמכו על homepage, headquarters או description, כי הם ריקים.
  • פרטי חברות ורשתות נשמרים בקצה במטמון 6 שעות. קבצי לוגו ב-img.amodb.dev נשמרים 30 יום.
  • רשת היא מושג של טלוויזיה. כדי לקבל את הסדרות שלה, השתמשו ב-with_networks ב-/discover/tv, לא ב-discover של סרטים.
  • כדי למצוא חברה לפי שם, השתמשו בחיפוש החברות שלמעלה, ואז בחרו את השורה הנכונה לפי name ו-origin_country.