# API למדריך פרקים

> ה-API למדריך פרקים מציג כל פרק של סדרה דרך GET /3/tv/{tv_id}/season/{season_number}. לכל פרק יש שם, תקציר, תאריך שידור, משך ותמונת סצנה. הרשימה episode_groups נותנת שמות לסדרים חלופיים כמו DVD או מוחלט. הנתיבים וה-JSON זהים ל-TMDB v3, ולכן לקוחות קיימים צריכים רק כתובת בסיס חדשה.

## קבלת כל הפרקים של עונה

`GET /3/tv/{tv_id}/season/{season_number}` מחזיר עונה עם מערך `episodes` המלא שלה. לכל פרק יש `episode_number`, `name`, `overview`, `air_date`, `runtime` ו-`still_path`. המזהים הם המזהים המספריים של TMDB, למשל `1396` עבור Breaking Bad.

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

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

| נקודת קצה                                                           | מה מוחזר                                                                                     |
| ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| `GET /3/tv/{tv_id}`                                                 | סיכום `seasons`, `number_of_seasons`, `status`, `next_episode_to_air`, `last_episode_to_air` |
| `GET /3/tv/{tv_id}/season/{season_number}`                          | עונה אחת עם כל ה-`episodes` שלה                                                              |
| `GET /3/tv/{tv_id}/season/{season_number}/episode/{episode_number}` | פרק אחד עם `crew` ו-`guest_stars`                                                            |
| `GET /3/tv/{tv_id}/episode_groups`                                  | שם, `type` ומספר הפרקים של כל סדר חלופי שהוגדר לסדרה                                         |

שדות של פרק:

| שדה                               | סוג             | הערות                                                                                               |
| --------------------------------- | --------------- | --------------------------------------------------------------------------------------------------- |
| `id`, `show_id`                   | integer         | מזהה הפרק ומזהה הסדרה. `show_id` מופיע ברשימות עונות וב-`next_episode_to_air`, לא בנתיב של פרק בודד |
| `episode_number`, `season_number` | integer         | המיקום בעונה                                                                                        |
| `episode_type`                    | string          | למשל `standard`                                                                                     |
| `name`, `overview`                | string          | מתורגמים לפי `language`                                                                             |
| `air_date`                        | string או null  | `YYYY-MM-DD`, ריק או null כשלא הוכרז                                                                |
| `runtime`                         | integer או null | דקות                                                                                                |
| `still_path`                      | string או null  | מצרפים ל-`https://img.amodb.dev/t/p/{size}`                                                         |
| `vote_average`, `vote_count`      | number, integer | כרגע `0` בפרקים                                                                                     |
| `production_code`                 | string          | קוד אולפן, לעיתים קרובות ריק                                                                        |
| `crew`, `guest_stars`             | array           | אנשים שמופיעים בקרדיטים של הפרק, עם אותם שדות כמו חבר צוות שחקנים                                   |

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

1. בחרו מסלול בעמוד [תמחור](https://amodb.dev/he/pricing/). כל המסלולים מחזירים את אותם נתוני פרקים, ורק קצב הבקשות שונה.
2. צרו מפתח בלוח הבקרה של החשבון ושמרו אותו במשתנה סביבה.
3. בקשו `/3/tv/{tv_id}/season/1` עם המפתח ככותרת Bearer או כ-`api_key`.

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

הדוגמה שולפת את עונה 1 של Breaking Bad (מזהה סדרה `1396`) באנגלית. תוכנית ה-Go מפענחת אותה למבנים עם טיפוסים ומדפיסה שורה לכל פרק עם תאריך השידור, המשך וכתובת תמונת הסצנה.

```bash
curl -s "https://api.amodb.dev/3/tv/1396/season/1?language=en-US" \
  -H "Authorization: Bearer $AMODB_KEY"
```

```go
package main

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

type Episode struct {
	EpisodeNumber int     `json:"episode_number"`
	Name          string  `json:"name"`
	AirDate       string  `json:"air_date"`
	Runtime       int     `json:"runtime"`
	StillPath     *string `json:"still_path"`
}

type Season struct {
	Name         string    `json:"name"`
	SeasonNumber int       `json:"season_number"`
	Episodes     []Episode `json:"episodes"`
}

func main() {
	client := &http.Client{Timeout: 10 * time.Second}
	url := "https://api.amodb.dev/3/tv/1396/season/1?language=en-US"
	req, err := http.NewRequest("GET", url, nil)
	if err != nil {
		panic(err)
	}
	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(fmt.Sprintf("amodb returned %s", res.Status))
	}
	var season Season
	if err := json.NewDecoder(res.Body).Decode(&season); err != nil {
		panic(err)
	}
	fmt.Println(season.Name)
	for _, e := range season.Episodes {
		still := "no still"
		if e.StillPath != nil {
			still = "https://img.amodb.dev/t/p/w300" + *e.StillPath
		}
		fmt.Printf("S%02dE%02d  %s  %3d min  %s  %s\n",
			season.SeasonNumber, e.EpisodeNumber, e.AirDate, e.Runtime, e.Name, still)
	}
}
```

תגובה מקוצרת: 2 מתוך 7 הפרקים, עם חבר צוות אחד ושחקן אורח אחד בכל אחד.

```json
{
  "air_date": "2008-01-20",
  "episodes": [
    {
      "air_date": "2008-01-20",
      "episode_number": 1,
      "episode_type": "standard",
      "id": 62085,
      "name": "Pilot",
      "overview": "When an unassuming high school chemistry teacher discovers he has a rare form...",
      "production_code": "",
      "runtime": 59,
      "season_number": 1,
      "show_id": 1396,
      "still_path": "/ydlY3iPfeOAvu8gVqrxPoMvzNCn.jpg",
      "vote_average": 0,
      "vote_count": 0,
      "crew": [
        {
          "department": "Camera",
          "job": "Director of Photography",
          "credit_id": "52b7029219c29533d00dd2c1",
          "adult": false,
          "gender": 2,
          "id": 2483,
          "known_for_department": "Camera",
          "name": "约翰·托尔",
          "original_name": "约翰·托尔",
          "popularity": 1.1957,
          "profile_path": "/cfL9A6tC7L5Ps5fq1o3WpVKGMb1.jpg"
        }
      ],
      "guest_stars": [
        {
          "character": "Steven Gomez",
          "credit_id": "5271b489760ee35b3e0881a7",
          "order": 8,
          "adult": false,
          "gender": 2,
          "id": 61535,
          "known_for_department": "Acting",
          "name": "史蒂文·迈克尔·奎扎达",
          "original_name": "史蒂文·迈克尔·奎扎达",
          "popularity": 1.7511,
          "profile_path": "/pVYrDkwI6GWvCNL2kJhpDJfBFyd.jpg"
        }
      ]
    },
    {
      "air_date": "2008-01-27",
      "episode_number": 2,
      "episode_type": "standard",
      "id": 62086,
      "name": "Cat's in the Bag...",
      "overview": "Walt and Jesse attempt to tie up loose ends. The desperate situation gets mor...",
      "production_code": "",
      "runtime": 49,
      "season_number": 1,
      "show_id": 1396,
      "still_path": "/AbMoecO0ZZio0LcgeLxlzdyGs6X.jpg",
      "vote_average": 0,
      "vote_count": 0,
      "crew": [
        {
          "department": "Camera",
          "job": "Director of Photography",
          "credit_id": "52b7049c19c2953b63015013",
          "adult": false,
          "gender": 2,
          "id": 17948,
          "known_for_department": "Camera",
          "name": "Reynaldo Villalobos",
          "original_name": "Reynaldo Villalobos",
          "popularity": 0.904,
          "profile_path": "/4YlfhHDRZWhbRgeqT2Bwl1u5p9j.jpg"
        }
      ],
      "guest_stars": [
        {
          "character": "Krazy-8",
          "credit_id": "52725845760ee3046b09426e",
          "order": 504,
          "adult": false,
          "gender": 2,
          "id": 1046460,
          "known_for_department": "Acting",
          "name": "Max Arciniega",
          "original_name": "Max Arciniega",
          "popularity": 1.4399,
          "profile_path": "/eqKAJKPpt41KpsLIkkBnAY4HMAL.jpg"
        }
      ]
    }
  ],
  "name": "Season 1",
  "overview": "High school chemistry teacher Walter White's life is suddenly transformed by...",
  "id": 3572,
  "poster_path": "/91EIXdWxmp2mHNRsSuDW3WyDJLj.jpg",
  "season_number": 1,
  "vote_average": 0
}
```

## שליפת סדרה שלמה

amodb לא מקבל ערכים בסגנון `season/1` ב-`append_to_response`, ולכן קריאות העונות נשארות נפרדות. קראו קודם את `number_of_seasons` ואת הרשימה `seasons` מפרטי הסדרה, ואז בקשו כל עונה בלולאה.

```js
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 show = await get('/tv/1396');
for (const { season_number } of show.seasons) {
  const season = await get(`/tv/1396/season/${season_number}`);
  console.log(season.name, season.episodes.length);
}
```

`seasons` כולל עונה 0 כשיש לסדרה פרקים מיוחדים, ולכן Breaking Bad עולה קריאת פרטים אחת ועוד 6 קריאות עונה. סדרה עם 10 עונות עולה 11 בקשות. הפרטים נשמרים בקצה במטמון 6 שעות, ולכן שמרו את התוצאה ורעננו אותה לפי לוח זמנים.

## תאריכי שידור ומה בא אחר כך

`GET /3/tv/{tv_id}` כולל את `next_episode_to_air` ואת `last_episode_to_air`, אובייקטי פרק מלאים עם `name`, `air_date`, `season_number`, `episode_number`, `runtime` ו-`still_path`. הערך `next_episode_to_air` הוא `null` כשלא הוכרז דבר. שלבו אותו עם `status` (למשל `Returning Series`, `Ended` או `Canceled`) כדי להחליט אם להציג ספירה לאחור.

`air_date` הוא תאריך לוח שנה בלי שעה ביום. השוו אותו לתאריך של היום כדי לסמן פרקים חדשים. ללוח של מה משודר, הרשימות `airing_today` ו-`on_the_air` בעמוד [טרנדים ורשימות](https://amodb.dev/he/trending-lists/) נשמרות במטמון 30 דקות.

## תמונות סצנה ומשכים

השתמשו ב-`w185` או ב-`w300` לשורות ברשימה וב-`original` לגודל מלא. גדלי תמונות הסצנה הם `w92`, `w185`, `w300` ו-`original`. לפרק יכולה להיות חסרה תמונת סצנה, ולכן הציגו תמונת מחדל כש-`still_path` הוא `null`. שרת התמונות לא דורש מפתח, ראו [תמונות](https://amodb.dev/he/images-api/).

`runtime` הוא בדקות ויכול להיות `null`. כדי להציג זמן צפייה רצוף לעונה, סכמו את `runtime` על פני `episodes` וספרו `null` כ-0. הוסיפו `append_to_response=credits,images` לנתיב של פרק בודד כדי לקבל אובייקט `credits` ורשימת `stills`. מערך `cast` של הפרק ריק, והאנשים נמצאים ב-`crew` וב-`guest_stars`. פרטים בעמודים [עונות ופרקים](https://amodb.dev/he/tv-seasons-episodes/) ו[קרדיטים](https://amodb.dev/he/credits/).

## סדרים חלופיים עם קבוצות פרקים

סדרות מסוימות נצפות בסדר שונה מזה ששודרו בו. `GET /3/tv/{tv_id}/episode_groups` מציג את הסדרים שהוגדרו לסדרה. בכל פריט יש `id`, `name`, `description`, `type`, `episode_count`, `group_count` ו-`network`. המערך `results` ריק כשלא הוגדר דבר.

| `type` | סדר               |
| ------ | ----------------- |
| 1      | תאריך שידור מקורי |
| 2      | מוחלט             |
| 3      | DVD               |
| 4      | דיגיטלי           |
| 5      | קשת עלילה         |
| 6      | הפקה              |
| 7      | טלוויזיה          |

amodb מחזיר רק את הרשימה הזו. הוא לא מציע `GET /3/tv/episode_group/{id}`, ולכן הפרקים שבתוך קבוצה אינם זמינים. את נתוני הפרקים קראו מנקודות הקצה של עונות.

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

| יכולת            | גירוד דפי פרקים       | API למטא-נתונים עם מסלול חינמי | amodb                                        |
| ---------------- | --------------------- | ------------------------------ | -------------------------------------------- |
| עונה מלאה        | שליפת דף אחד לכל עונה | ראו במסמכים שלהם               | קריאה אחת, כולל מערך `episodes`              |
| סדרה שלמה        | סריקה של כל עונה      | ראו במסמכים שלהם               | קריאה אחת לכל עונה, הרשומות ב-`seasons`      |
| תאריכי שידור     | ניתוח טקסט            | ראו במסמכים שלהם               | `air_date` ועוד `next_episode_to_air`        |
| תמונות סצנה      | הורדה ושינוי גודל     | ראו במסמכים שלהם               | גדלים קבועים ב-`img.amodb.dev`, בלי מפתח     |
| סדרי פרקים אחרים | לא קיים               | ראו במסמכים שלהם               | רשימת `episode_groups`, תוכן הקבוצות לא מוגש |
| שפות             | אזור שפה אחד לכל אתר  | ראו במסמכים שלהם               | 14 שפות דרך `language`                       |

## תמחור

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

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

### איך מציגים את כל הפרקים של סדרה?

קראו את number_of_seasons מ-GET /3/tv/{tv_id}, ואז קראו ל-GET /3/tv/{tv_id}/season/{season_number} לכל עונה. כל תגובת עונה מכילה את מערך episodes המלא, ולכן אין צורך בקריאה נפרדת לכל פרק. כמה עונות חוזרות עם מערך episodes ריק כשאין נתוני פרקים.

### אפשר לקבל כמה עונות בבקשה אחת?

לא. amodb מתעלם מערכים בסגנון season/1 ב-append_to_response, ולכן כל עונה היא בקשה נפרדת. סדרה עם 10 עונות עולה 11 בקשות: אחת לפרטים ואחת לכל עונה.

### מהי קבוצת פרקים?

קבוצת פרקים היא סדר חלופי של אותם פרקים, כמו סדר DVD, סדר מוחלט או סדר לפי קשת עלילה. GET /3/tv/{tv_id}/episode_groups מציג אותן עם שם, סוג ומספר פרקים. amodb לא מגיש את הפרקים שבתוך קבוצה.

### איך מגלים מתי הפרק הבא עולה לשידור?

GET /3/tv/{tv_id} מחזיר next_episode_to_air עם air_date, season_number ו-episode_number. הערך הוא null כשלא הוכרז דבר. last_episode_to_air נותן את האחרון ששודר.

### מאיפה מגיעות תמונות הפרקים?

לכל פרק יש still_path. חברו אותו אל https://img.amodb.dev/t/p/{size}, למשל w300 לשורות ברשימה. תמונות לא דורשות מפתח. still_path יכול להיות null, ולכן הכינו תמונת מחדל.

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

- [API עונות ופרקים של סדרות](https://amodb.dev/he/tv-seasons-episodes/): API עונות ופרקים של סדרות עם אותם נתיבים ו-JSON כמו TMDB v3. קראו עונה עם כל הפרקים שלה, או פרק אחד עם תאריך שידור, משך ותמונה מהפרק, עם crew ו-guest_stars.
- [API סדרות טלוויזיה](https://amodb.dev/he/tv-series/): API סדרות טלוויזיה עם אותם נתיבים ו-JSON כמו TMDB v3. קבלו סדרה לפי מזהה ב-GET /3/tv/{series_id} עם עונות, רשתות והפרק הבא, וגם סיווגי גיל וספקי צפייה.
- [API תמונות ושרת תמונות](https://amodb.dev/he/images-api/): API תמונות סרטים עם נתיבי TMDB v3: הציגו פוסטרים, תמונות רקע, לוגואים ותמונות סצנה לכל כותר, וטענו אותם מ-img.amodb.dev ב-10 גדלים בלי מפתח.
- [API קרדיטים](https://amodb.dev/he/credits/): API קרדיטים עם אותם נתיבים ו-JSON כמו TMDB v3. קבלו שחקנים וצוות של סרטים, סדרות, עונות ופרקים, עם credit_id, order, department ו-job ועם guest_stars בפרקים.
- [API לסדרות טלוויזיה, עונות ופרקים](https://amodb.dev/he/tv-show-api/): API לסדרות טלוויזיה עם סטטוס, רשתות, עונות, פרקים, תאריכי שידור ו-next_episode_to_air. JSON תואם TMDB v3 ב-14 שפות, במסלולים של 20 עד 120 בקשות לדקה.
- [מדריך למתחילים](https://amodb.dev/he/quickstart/): בצעו את הקריאה הראשונה ל-amodb: קבלו מפתח, בקשו פרטי סרט ב-curl, JavaScript, Python, PHP או Go, ואז טענו את הפוסטר מ-img.amodb.dev. פחות מ-2 דקות.

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