# חלופה ל-TVmaze API

> TVmaze מיועד לטלוויזיה בלבד, חינמי לשימוש, מוגבל לפי כתובת IP, והנתונים שלו תחת רישיון ייחוס. את הפרטים ראו במסמכים שלהם. amodb הוא API בתשלום לסדרות, סרטים ואנשים, עם מגבלות לפי מפתח ונתיבי TMDB v3. הוא מגיש תגובות ב-14 שפות. בחרו לפי היקף ותקציב.

## בחירה לפי היקף ותקציב

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

## מה כל היקף אומר לאפליקציה שלכם

| האפליקציה שלכם מציגה | TVmaze           | amodb                                          |
| -------------------- | ---------------- | ---------------------------------------------- |
| עמוד סדרה            | כן               | `GET /3/tv/{series_id}`                        |
| רשימת פרקים          | כן               | `GET /3/tv/{series_id}/season/{season_number}` |
| עמוד סרט             | אין סרטים        | `GET /3/movie/{movie_id}`                      |
| עמוד שחקן            | ראו במסמכים שלהם | `GET /3/person/{person_id}` וקרדיטים משולבים   |
| סדרות שעולות היום    | ראו במסמכים שלהם | `GET /3/tv/airing_today`                       |
| תקציר מתורגם         | ראו במסמכים שלהם | הפרמטר `language`, 14 שפות                     |
| ציונים מכמה אתרים    | ראו במסמכים שלהם | ההרחבה `/ratings`                              |

שורת הסרטים מכריעה ברוב המקרים. אם אין לכם עמודי סרטים, להיקף הנוסף אין ערך עבורכם.

## פערים לבדוק לפני המעבר

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

- **שחקני פרק.** בפרק, `cast` הוא מערך ריק. `guest_stars` ו-`crew` מלאים, וקריאת `/credits` של הסדרה מכילה את השחקנים הראשיים.
- **תוספות לעונה.** `images`, `videos` ו-`translations` של עונה ריקים, ולכן פוסטר עונה מגיע מרשומת העונה ולא מרשימת תמונות.
- **מזהים חיצוניים.** ה-`external_ids` של עונות ופרקים הם כולם null. מפו פרקים לרשומות שלכם לפי `season_number` ו-`episode_number`.
- **יוצרים.** `created_by` בסדרה ריק ברוב הסדרות.
- **אין פיד שינויים.** ל-amodb אין נקודת קצה שמציגה סדרות שהשתנו מאז תאריך מסוים.

## השוואת תכונות

| תכונה       | TVmaze                                     | amodb                                                      |
| ----------- | ------------------------------------------ | ---------------------------------------------------------- |
| מודל תמחור  | API ציבורי חינמי לשימוש                    | תשלום מראש, 1 עד 24 חודשים לרכישה                          |
| מסלול חינמי | כן, כל ה-API הציבורי                       | אין, וגם אין תקופת ניסיון                                  |
| אימות       | ראו במסמכים שלהם                           | `api_key` או כותרת Bearer                                  |
| פורמט תגובה | JSON, ראו במסמכים שלהם                     | JSON במבנה של TMDB v3                                      |
| שפות        | ראו במסמכים שלהם                           | 14 שפות ממשק                                               |
| סרטים       | לא                                         | כן                                                         |
| סדרות       | כן, זה המיקוד היחיד שלו                    | כן                                                         |
| אנשים       | ראו במסמכים שלהם                           | כן                                                         |
| תמונות      | ראו במסמכים שלהם                           | `img.amodb.dev`, עשרה מזהי גודל                            |
| דירוגים     | ראו במסמכים שלהם                           | חמישה מקורות כשהם ידועים                                   |
| מגבלת קצב   | לפי כתובת IP, את המספרים ראו במסמכים שלהם  | 20, 40 או 120 לדקה לכל מפתח                                |
| שימוש מסחרי | הנתונים תחת רישיון ייחוס, ראו במסמכים שלהם | מסלולים בתשלום, ראו [תמחור](https://amodb.dev/he/pricing/) |
| תאימות      | ה-API שלו                                  | קריאות של TMDB v3 ו-OMDb                                   |

## במה amodb שונה

- **המגבלה עוקבת אחרי המפתח.** כל השרתים שלכם חולקים מונה אחד בחלון נע של 60 שניות, והתגובות נושאות `X-RateLimit-Remaining`. שום דבר לא תלוי בכתובת שממנה יוצאת בקשה.
- **סרטים, טלוויזיה ואנשים במקום אחד.** לקוח אחד, פורמט שגיאות אחד וסט אחד של כותרות מכסים את כל האפליקציה.
- **שפות.** כותרות ותקצירים חוזרים בכל אחת מ-14 שפות, ו-`original_name` שומר את הכותרת בשפת המקור.
- **פרוטוקול מבוסס.** ספריות שנכתבו לקריאות של TMDB v3 עובדות עם כתובת בסיס חדשה. את נקודות הקצה של סדרות ראו בעמוד [API לסדרות טלוויזיה](https://amodb.dev/he/tv-show-api/).

## מתי TVmaze מתאים יותר

- **בלי תקציב.** הוא חינמי לשימוש, ולכן פרויקט סטודנטים או מעקב סדרות לסוף שבוע לא דורשים תשלום. ל-amodb אין מסלול חינמי ואין תקופת ניסיון.
- **טלוויזיה בלבד, בפשטות.** אם מודל הנתונים שלכם כולל סדרות ופרקים ותו לא, API שמתמקד בטלוויזיה מתאים לו.
- **המוסכמות שלו.** אפליקציות שכבר נבנו סביב המודל של TVmaze חוסכות עבודה אם הן נשארות.

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

## מעבר ל-amodb

התחילו במשימת מיפוי. קראו את המזהים החיצוניים שרשומות TVmaze ששמרתם מציינות (את שמות השדות ראו במסמכים שלהם) ופתרו אותם דרך `/3/find`. התוכנית שלמטה ממפה מזהה IMDb אחד לסדרה ומדפיסה את תאריך הפרק הבא.

```go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"os"
	"time"
)

type findResult struct {
	TVResults []struct {
		ID   int    `json:"id"`
		Name string `json:"name"`
	} `json:"tv_results"`
}

type episode struct {
	AirDate       string `json:"air_date"`
	SeasonNumber  int    `json:"season_number"`
	EpisodeNumber int    `json:"episode_number"`
}

type series struct {
	Name        string   `json:"name"`
	Status      string   `json:"status"`
	NextEpisode *episode `json:"next_episode_to_air"`
}

var client = &http.Client{Timeout: 10 * time.Second}

func get(path string, out any) error {
	req, err := http.NewRequest(http.MethodGet, "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", res.Status)
	}
	return json.NewDecoder(res.Body).Decode(out)
}

func main() {
	var found findResult
	if err := get("/find/tt0903747?external_source=imdb_id", &found); err != nil {
		fmt.Println(err)
		return
	}
	if len(found.TVResults) == 0 {
		fmt.Println("no match")
		return
	}
	var s series
	if err := get(fmt.Sprintf("/tv/%d", found.TVResults[0].ID), &s); err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(s.Name, s.Status)
	if s.NextEpisode != nil {
		fmt.Println("next episode:", s.NextEpisode.AirDate)
	}
}
```

סוג המצביע של `NextEpisode` מטפל ב-`null` שסדרות שהסתיימו מחזירות. הריצו את המיפוי פעם אחת, שמרו את מזהה amodb עם כל אחת מהרשומות שלכם, ומכאן והלאה קראו ל-`/3/tv/{id}`. על 429 עונים עם `Retry-After`, ובעמוד [חיפוש לפי מזהה חיצוני](https://amodb.dev/he/find-by-external-id/) מופיעים מקורות המזהים האחרים.

## תכנון סנכרון לילי

נניח שאתם מרעננים 300 סדרות בכל לילה. אלה 300 בקשות, כי קריאת סדרה אחת מחזירה סדרה אחת. ב-20 בקשות לדקה המשימה לוקחת 15 דקות, ב-40 היא לוקחת 7.5 דקות, וב-120 היא לוקחת 2.5 דקות. הוסיפו `append_to_response=credits,ratings` לכל קריאה כדי ששחקנים וציונים יגיעו באותה בקשה במקום לעלות שתי בקשות נוספות לכל סדרה. קראו את `X-RateLimit-Remaining` והשהו כשהוא מגיע לאפס, ואז המשיכו אחרי `X-RateLimit-Reset` שניות.

## תמחור

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

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

### האם TVmaze API חינמי?

TVmaze מציע API ציבורי חינמי עם מגבלות קצב לפי כתובת IP, והנתונים שלו תחת רישיון ייחוס. את המגבלות הנוכחיות ואת נוסח הרישיון ראו במסמכים שלהם. amodb הוא בתשלום וללא מסלול חינמי.

### האם amodb מכסה גם סרטים ולא רק טלוויזיה?

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

### איך ממפים סדרות של TVmaze למזהים של amodb?

רשומות סדרה של TVmaze מציינות מזהים של מאגרים אחרים, כמו IMDb (את השדות המדויקים ראו במסמכים שלהם). קראו לנקודת הקצה find עם מזהה IMDb ועם external_source=imdb_id, ואז שמרו את המזהה מתוך tv_results.

### למה מגבלה לפי IP חשובה?

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

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

כן. פרטי הסדרה מחזירים next_episode_to_air עם air_date, season_number ו-episode_number, או null כשלא מתוכנן דבר. הקצה שומר פרטים במטמון 6 שעות, ולכן רעננו כמה פעמים ביום.

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

- [API לסדרות טלוויזיה, עונות ופרקים](https://amodb.dev/he/tv-show-api/): API לסדרות טלוויזיה עם סטטוס, רשתות, עונות, פרקים, תאריכי שידור ו-next_episode_to_air. JSON תואם TMDB v3 ב-14 שפות, במסלולים של 20 עד 120 בקשות לדקה.
- [API למדריך פרקים](https://amodb.dev/he/episode-guide-api/): API מדריך פרקים עם נקודות הקצה של עונות ופרקים ב-TMDB v3: שמות, תקצירים, תאריכי שידור, משכים, תמונות סצנה ורשימות קבוצות פרקים לכל סדרה, ב-14 שפות.
- [API עונות ופרקים של סדרות](https://amodb.dev/he/tv-seasons-episodes/): API עונות ופרקים של סדרות עם אותם נתיבים ו-JSON כמו TMDB v3. קראו עונה עם כל הפרקים שלה, או פרק אחד עם תאריך שידור, משך ותמונה מהפרק, עם crew ו-guest_stars.
- [חיפוש לפי מזהה חיצוני](https://amodb.dev/he/find-by-external-id/): חפשו סרט, סדרה או אדם לפי מזהה IMDb, TVDB, Wikidata או Kinopoisk עם נקודת הקצה find של TMDB v3, וקראו מזהים חיצוניים ועובדות Wikidata על כל כותר.
- [מגבלות קצב](https://amodb.dev/he/rate-limits/): amodb מגביל כל מפתח לפי בקשות לדקה בחלון נע של 60 שניות: 20, 40 או 120 בהתאם למסלול שלכם. קראו את כותרות מגבלת הקצב וטפלו ב-429 עם Retry-After.
- [תמחור](https://amodb.dev/he/pricing/): המסלולים של amodb נבדלים רק בבקשות לדקה: 20, 40 או 120. כל מסלול כולל את כל הנתונים התואמים ל-TMDB v3 ול-OMDb. תשלום מראש, בלי חידוש ובלי ניסיון.

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