# API לפוסטרים של סרטים ו-CDN לתמונות

> פוסטרים נטענים מ-https://img.amodb.dev/t/p/{size}/{file} בלי מפתח API. החלק file הוא poster_path מכל תגובה של סרט, חיפוש או רשימה. שמות הגדלים נעים מ-w92 עד original, ו-include_image_language בוחר פוסטרים לפי שפה. רק קריאות ה-JSON דורשות את המפתח שלכם. הקצה שומר תמונות במטמון 30 יום, ולכן אפשר לטעון אותן ישירות בתג img.

## פוסטרים של סרטים משרת תמונות שלא דורש מפתח

כתובת של פוסטר היא `https://img.amodb.dev/t/p/{size}/{file}`. החלק file הוא מחרוזת ה-`poster_path` מכל תגובה של סרט, חיפוש או רשימה, והיא מתחילה בלוכסן. החלק size הוא שם כמו `w342`. תמונות לא דורשות מפתח, ולכן דפדפנים ואפליקציות יכולים לטעון אותן ישירות. ה-JSON שאומר לכם מהו שם הקובץ עדיין דורש את המפתח שלכם, ו-amodb הוא API עצמאי שמדבר בפרוטוקול TMDB v3, ולכן קוד תמונות קיים ממשיך לעבוד אחרי החלפת מארח.

מה מקבלים:

- פוסטרים, תמונות רקע, לוגואים, תמונות פרופיל ותמונות סצנה של פרקים באותו מארח.
- עשרה שמות גדלים, מ-`w92` עד `original`.
- רשימות פוסטרים לכל כותר, עם שפה, רוחב וגובה בכל פריט.
- מטמון קצה של 30 יום לתמונות.

## אילו נתונים מקבלים

| תמונה                   | שם הקובץ מגיע מ-                               | גדלים נפוצים                                              |
| ----------------------- | ---------------------------------------------- | --------------------------------------------------------- |
| פוסטר של סרט            | `poster_path` ב-`/3/movie/{movie_id}` וברשימות | `w92`, `w154`, `w185`, `w342`, `w500`, `w780`, `original` |
| תמונת רקע               | `backdrop_path`                                | `w300`, `w780`, `w1280`, `original`                       |
| תמונת אדם               | `profile_path` ב-`/3/person/{person_id}`       | `w185`, `h632`, `original`                                |
| לוגו של חברה או רשת     | `logo_path`                                    | `w92`, `w154`, `w185`, `w300`, `w500`, `original`         |
| תמונת סצנה של פרק       | `still_path`                                   | `w92`, `w185`, `w300`, `original`                         |
| כל הפוסטרים של כותר אחד | `GET /3/movie/{movie_id}/images`               | המערך `posters`                                           |

גם לסדרות, לעונות ולאוספים יש `poster_path`. קראו את רשימות הגדלים המדויקות מבלוק `images` של `GET /3/configuration` פעם אחת בהפעלה במקום לקבוע אותן בקוד. הפניית התמונות נמצאת בעמוד [תמונות](https://amodb.dev/he/images-api/).

## מתחילים בשלושה שלבים

1. בחרו מסלול בעמוד [תמחור](https://amodb.dev/he/pricing/). הוא קובע את הקצב של קריאות ה-JSON: 20, 40 או 120 בקשות לדקה.
2. צרו מפתח בלוח הבקרה של החשבון.
3. קראו את `poster_path` מקריאת פרטים או רשימה, ואז הציבו אותו מאחורי מארח התמונות ושם גודל.

## בקשה לדוגמה

תוכנית ה-Go מציגה את הפוסטרים של The Matrix (מזהה סרט 603) באנגלית ובלי טקסט, בוחרת את הרחב ביותר, מדפיסה `srcset` מוכן ושומרת את קובץ `w342`. המפתח הולך רק לקריאת ה-JSON.

```bash
# the JSON call needs the key
curl -s "https://api.amodb.dev/3/movie/603/images?include_image_language=en,null" \
  -H "Authorization: Bearer $AMODB_KEY"

# the image call does not
curl -s -o poster.jpg "https://img.amodb.dev/t/p/w342/aOIuZAjPaRIE6CMzbazvcHuHXDc.jpg"
```

```go
package main

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

const imgBase = "https://img.amodb.dev/t/p/"

type poster struct {
	FilePath string  `json:"file_path"`
	Lang     *string `json:"iso_639_1"`
	Width    int     `json:"width"`
}

type images struct {
	Posters []poster `json:"posters"`
}

func srcset(file string) string {
	var parts []string
	for _, w := range []int{185, 342, 500, 780} {
		parts = append(parts, fmt.Sprintf("%sw%d%s %dw", imgBase, w, file, w))
	}
	return strings.Join(parts, ", ")
}

func main() {
	client := &http.Client{Timeout: 10 * time.Second}

	url := "https://api.amodb.dev/3/movie/603/images?include_image_language=en,null"
	req, _ := http.NewRequest("GET", url, nil)
	req.Header.Set("Authorization", "Bearer "+os.Getenv("AMODB_KEY"))
	res, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	if res.StatusCode != http.StatusOK {
		panic(res.Status)
	}

	var imgs images
	if err := json.NewDecoder(res.Body).Decode(&imgs); err != nil {
		panic(err)
	}
	if len(imgs.Posters) == 0 {
		fmt.Println("no posters")
		return
	}

	best := imgs.Posters[0]
	for _, p := range imgs.Posters {
		if p.Width > best.Width {
			best = p
		}
	}
	lang := "none"
	if best.Lang != nil {
		lang = *best.Lang
	}
	fmt.Println("best poster:", best.FilePath, "language:", lang, "width:", best.Width)
	fmt.Println("srcset:", srcset(best.FilePath))

	// Image requests carry no key.
	pic, err := client.Get(imgBase + "w342" + best.FilePath)
	if err != nil {
		panic(err)
	}
	defer pic.Body.Close()
	if pic.StatusCode != http.StatusOK {
		panic(pic.Status)
	}
	out, err := os.Create("poster.jpg")
	if err != nil {
		panic(err)
	}
	defer out.Close()
	io.Copy(out, pic.Body)
}
```

תגובת images מקוצרת עבור `include_image_language=en,null`: 3 מתוך 145 הפוסטרים, אחד באנגלית, האנגלי הרחב ביותר ואחד בלי טקסט. התגובה כוללת גם `backdrops` ו-`logos`, שהושמטו כאן.

```json
{
  "id": 603,
  "posters": [
    {
      "aspect_ratio": 0.667,
      "height": 2250,
      "iso_639_1": "en",
      "file_path": "/dXNAPwY7VrqMAo51EKhhCJfaGb5.jpg",
      "vote_average": 0,
      "vote_count": 0,
      "width": 1500
    },
    {
      "aspect_ratio": 0.667,
      "height": 3000,
      "iso_639_1": "en",
      "file_path": "/aOIuZAjPaRIE6CMzbazvcHuHXDc.jpg",
      "vote_average": 0,
      "vote_count": 0,
      "width": 2000
    },
    {
      "aspect_ratio": 0.701,
      "height": 1426,
      "iso_639_1": null,
      "file_path": "/iLWzJxatuwwMT76dtMuwh3FEp2X.jpg",
      "vote_average": 0,
      "vote_count": 0,
      "width": 1000
    }
  ]
}
```

## בחירת גודל

המספר בגודל מסוג `w` הוא רוחב התמונה בפיקסלים, ו-`h632` הוא גובה. שמות קטנים חוסכים רוחב פס, שמות גדולים שומרים על פרטים במסכים צפופים.

| גודל           | שימוש אופייני                         |
| -------------- | ------------------------------------- |
| `w92`          | הצעות חיפוש ושורות רשימה זעירות       |
| `w154`, `w185` | רשימות צפופות וכרטיסים                |
| `w342`         | אריחי רשת בטלפונים                    |
| `w500`         | עמוד פרטים                            |
| `w780`         | מסכים גדולים ותצוגות 2x               |
| `original`     | ארכיון או הדפסה, הקובץ ללא שינוי גודל |

תנו לדפדפן כמה רוחבים ותנו לו לבחור. תוכנית ה-Go למעלה מדפיסה `srcset` עם מועמדים של `185w`, `342w`, `500w` ו-`780w`. שלבו אותו עם מאפיין `sizes` שמתאים לפריסה שלכם, למשל `sizes="(max-width: 600px) 45vw, 185px"` על רכיב `img`.

## שפות של פוסטרים

לכל פריט ב-`posters` יש ערך `iso_639_1`, או קוד שפה או null עבור יצירה בלי טקסט. הפרמטר `include_image_language` מקבל רשימה של קודים מופרדים בפסיקים.

| ערך       | מה מוחזר                          |
| --------- | --------------------------------- |
| `en`      | פוסטרים שסומנו כאנגלית            |
| `en,null` | פוסטרים באנגלית ופוסטרים בלי טקסט |
| `null`    | רק פוסטרים בלי טקסט               |

סדר גיבוי טוב הוא הפוסטר בשפת המשתמש, אחר כך פוסטר בלי טקסט, ואז אנגלית. בתוך כל קבוצה מיינו לפי `width` ושמרו את הראשון כשיש תיקו. הערכים `vote_average` ו-`vote_count` הם `0` בתמונות של סרטים וסדרות, ולכן הם לא מדרגים דבר. שפות הפוסטרים מתארות את הטקסט המודפס על היצירה, ולכן הן לא עוקבות אחרי 14 שפות הממשק. בדקו את `iso_639_1` במה שחוזר, כי הקבוצה תלויה בכותר.

## שמירה ומטמון של פוסטרים

- שמרו `poster_path`, לא את הכתובת המלאה. אפשר לבנות ממנו כל גודל מאוחר יותר.
- הקצה שומר תמונות במטמון 30 יום. פרטים נשמרים 6 שעות, ולכן קראו שוב את `poster_path` אחרי זה כדי לראות אם הוא השתנה.
- השאירו את המפתח בשרת שלכם. שלחו לדפדפן רק את כתובות התמונות.
- כש-`poster_path` הוא null, הציגו תמונת מחדל במקום תמונה שבורה.

## איך זה בהשוואה

| יכולת          | גירוד דפים לתמונות        | אירוח עותקים משלכם        | שרת התמונות של amodb                            |
| -------------- | ------------------------- | ------------------------- | ----------------------------------------------- |
| נדרש מפתח      | לא, חלים התנאים של כל אתר | לא                        | בלי מפתח לתמונות                                |
| גרסאות גודל    | הגודל שהדף מגיש           | אתם יוצרים ושומרים כל אחד | שמות גודל קבועים בכתובת, מ-`w92` עד `original`  |
| מציאת הקובץ    | ניתוח HTML                | מסד הנתונים שלכם          | `poster_path` בכל תגובה                         |
| שפות יצירה     | דף אחר דף                 | מה שאספתם                 | `include_image_language` בנקודות הקצה של תמונות |
| אחסון ורוחב פס | שלכם ושל המקור            | שלכם                      | הדפדפן טוען מ-`img.amodb.dev`                   |
| מטמון          | שלכם                      | שלכם                      | 30 יום בקצה                                     |

## תמחור

הורדות תמונות לא נושאות מפתח. המסלול שלכם מגביל רק את קריאות ה-JSON שנותנות לכם שמות קבצים, ותגובות רשימה כבר כוללות `poster_path` לכל פריט, ולכן קריאת רשימה אחת מזינה רשת שלמה. בחרו 20, 40 או 120 בקשות לדקה בעמוד [תמחור](https://amodb.dev/he/pricing/). הגישה בתשלום מראש ל-1, 3, 6, 12 או 24 חודשים עם 0, 10, 20, 30 ו-40 אחוז הנחה, שום דבר לא מתחדש מעצמו, ואין מסלול חינמי.

## שאלות ותשובות

### האם הורדת פוסטרים דורשת מפתח API?

לא. תמונות מגיעות מ-https://img.amodb.dev/t/p/{size}/{file} בלי מפתח, ולכן דפדפן יכול לטעון אותן ישירות. רק קריאות ה-JSON שמחזירות poster_path משתמשות במפתח שלכם.

### אילו גדלי פוסטר זמינים?

שמות הגדלים הם w92, w154, w185, w300, w342, w500, w780, w1280, h632 ו-original. אילו מהם מתאימים לסוג תמונה מופיע בבלוק images של GET /3/configuration.

### איך מקבלים פוסטר בשפה מסוימת?

קראו ל-/3/movie/{id}/images?include_image_language=en,null וקראו את iso_639_1 בכל פוסטר. הערך null מסמן יצירה בלי טקסט. אחר כך בחרו לפי רוחב. הערכים vote_average ו-vote_count הם 0 בתמונות של סרטים וסדרות.

### כמה זמן תמונות נשמרות במטמון?

הקצה שומר תמונות 30 יום. שמרו את הערך של poster_path ולא את הכתובת המלאה, כך שתוכלו לבנות מאוחר יותר כל גודל אחר בלי חיפוש נוסף.

### מה מציגים כש-poster_path הוא null?

לחלק מהכותרים אין פוסטר. הציגו תמונת מחדל מהעיצוב שלכם, ואם רוצים, קראו לנקודת הקצה של התמונות כדי לחפש פוסטרים אחרים לפני שמוותרים.

## עמודים קשורים

- [API תמונות ושרת תמונות](https://amodb.dev/he/images-api/): API תמונות סרטים עם נתיבי TMDB v3: הציגו פוסטרים, תמונות רקע, לוגואים ותמונות סצנה לכל כותר, וטענו אותם מ-img.amodb.dev ב-10 גדלים בלי מפתח.
- [API פרטי סרט](https://amodb.dev/he/movies/): API פרטי סרט עם אותם נתיבים ו-JSON כמו TMDB v3. קבלו סרט לפי מזהה, הוסיפו קרדיטים, דירוגים, מצבי רוח ופסקולים עם append_to_response, ב-14 שפות.
- [API סדרות טלוויזיה](https://amodb.dev/he/tv-series/): API סדרות טלוויזיה עם אותם נתיבים ו-JSON כמו TMDB v3. קבלו סדרה לפי מזהה ב-GET /3/tv/{series_id} עם עונות, רשתות והפרק הבא, וגם סיווגי גיל וספקי צפייה.
- [API חיפוש](https://amodb.dev/he/search/): API חיפוש עם אותם נתיבים ו-JSON כמו TMDB v3. מצאו סרטים, סדרות, אנשים, אוספים, חברות ומילות מפתח לפי טקסט, עם סינון לפי שנה ועימוד של 20 תוצאות בעמוד.
- [מדריך למתחילים](https://amodb.dev/he/quickstart/): בצעו את הקריאה הראשונה ל-amodb: קבלו מפתח, בקשו פרטי סרט ב-curl, JavaScript, Python, PHP או Go, ואז טענו את הפוסטר מ-img.amodb.dev. פחות מ-2 דקות.
- [אימות](https://amodb.dev/he/authentication/): איך שולחים את מפתח amodb: api_key בשאילתה, כותרת Authorization Bearer או apikey בקריאות OMDb. פורמט המפתח, שמירה, החלפה ושגיאות 401 שכדאי להכיר.

עודכן: 2026-10-18. Source: https://amodb.dev/he/movie-poster-api/
