# Alternativa k API TVmaze

> TVmaze je jen pro seriály, používá se zdarma, limity jsou na IP adresu a jeho data podléhají licenci s uvedením zdroje. Podrobnosti viz jejich dokumentace. amodb je placené API pro seriály, filmy a osoby s limity počítanými na klíč a cestami TMDB v3. Vybírejte podle rozsahu a rozpočtu.

## Vyberte podle rozsahu a rozpočtu

TVmaze je jen pro seriály. Používá se zdarma jako veřejné API s limity na IP adresu a jeho data podléhají licenci s uvedením zdroje, podrobnosti proto ověřte v jejich dokumentaci. amodb je placené a pokrývá seriály, filmy a osoby. Pokud je vaše aplikace sledovač seriálů a bezplatný zdroj vám stačí, je TVmaze rozumný začátek. Pokud zobrazujete také filmy, stránky herců nebo plakáty ve více jazycích, jeden klíč amodb nahradí několik zdrojů.

## Co jednotlivé rozsahy znamenají pro vaši aplikaci

| Vaše aplikace zobrazuje | TVmaze                             | amodb                                                 |
| ----------------------- | ---------------------------------- | ----------------------------------------------------- |
| Stránku seriálu         | Ano                                | `GET /3/tv/{series_id}`                               |
| Seznam epizod           | Ano                                | `GET /3/tv/{series_id}/season/{season_number}`        |
| Stránku filmu           | Žádné filmy                        | `GET /3/movie/{movie_id}`                             |
| Stránku herce           | Podívejte se do jejich dokumentace | `GET /3/person/{person_id}` a sloučené záznamy účasti |
| Seriály vysílané dnes   | Podívejte se do jejich dokumentace | `GET /3/tv/airing_today`                              |
| Přeložený popis         | Podívejte se do jejich dokumentace | Parametr `language`, 14 jazyků                        |
| Skóre z několika webů   | Podívejte se do jejich dokumentace | Rozšíření `/ratings`                                  |

Řádek o filmech rozhoduje většinu případů. Pokud nemáte stránky filmů, nemá pro vás rozsah navíc žádnou hodnotu.

## Mezery k ověření před přechodem

Endpointy sezón a epizod sledují tvar TMDB a několik jejich částí se vrací prázdných. Otestujte obrazovky, které je používají.

- **Obsazení epizody.** U epizody je `cast` prázdné pole. `guest_stars` a `crew` jsou vyplněné a hlavní obsazení má volání `/credits` seriálu.
- **Doplňky sezón.** `images`, `videos` a `translations` sezón jsou prázdné, plakát sezóny proto pochází ze záznamu sezóny, ne ze seznamu obrázků.
- **Externí ID.** `external_ids` sezón a epizod jsou všechna null. Epizody k vlastním záznamům přiřazujte podle `season_number` a `episode_number`.
- **Tvůrci.** `created_by` u seriálu je u většiny seriálů prázdné.
- **Žádný feed změn.** amodb nemá endpoint, který by vypsal seriály změněné od data.

## Srovnání funkcí

| Funkce          | TVmaze                                                                       | amodb                                                      |
| --------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------- |
| Cenový model    | Bezplatně použitelné veřejné API                                             | Předplatné, 1 až 24 měsíců na nákup                        |
| Bezplatný tarif | Ano, celé veřejné API                                                        | Žádný, ani zkušební verze                                  |
| Ověření         | Podívejte se do jejich dokumentace                                           | `api_key` nebo hlavička Bearer                             |
| Formát odpovědi | JSON, podívejte se do jejich dokumentace                                     | JSON ve tvaru TMDB v3                                      |
| Jazyky          | Podívejte se do jejich dokumentace                                           | 14 jazyků rozhraní                                         |
| Filmy           | Ne                                                                           | Ano                                                        |
| Seriály         | Ano, jediné zaměření                                                         | Ano                                                        |
| Osoby           | Podívejte se do jejich dokumentace                                           | Ano                                                        |
| Obrázky         | Podívejte se do jejich dokumentace                                           | `img.amodb.dev`, deset tokenů velikostí                    |
| Hodnocení       | Podívejte se do jejich dokumentace                                           | Pět zdrojů, kde jsou známé                                 |
| Limit požadavků | Na IP adresu, čísla viz jejich dokumentace                                   | 20, 40 nebo 120 za minutu na klíč                          |
| Komerční užití  | Data podléhají licenci s uvedením zdroje, podívejte se do jejich dokumentace | Placené tarify, viz [ceník](https://amodb.dev/cs/pricing/) |
| Kompatibilita   | Vlastní API                                                                  | Čtení TMDB v3 a OMDb                                       |

## V čem se amodb liší

- **Limit následuje klíč.** Všechny vaše servery sdílejí jeden čítač v klouzavém okně 60 sekund a odpovědi nesou `X-RateLimit-Remaining`. Nic nezávisí na tom, z jaké adresy požadavek odchází.
- **Filmy, seriály a osoby na jednom místě.** Jeden klient, jeden formát chyb a jedna sada hlaviček pokryjí celou aplikaci.
- **Jazyky.** Názvy a popisy přicházejí v kterémkoli ze 14 jazyků a `original_name` drží původní název.
- **Zavedený protokol.** Knihovny napsané pro čtení TMDB v3 fungují s novou základní URL. Endpointy seriálů viz stránka [API seriálů](https://amodb.dev/cs/tv-show-api/).

## Kdy se TVmaze hodí lépe

- **Žádný rozpočet.** Používá se zdarma, takže studentský projekt nebo víkendový sledovač nepotřebuje platbu. amodb nemá bezplatný tarif ani zkušební verzi.
- **Jen seriály, jednoduše.** Pokud váš datový model má seriály a epizody a nic jiného, API zaměřené na seriály mu odpovídá.
- **Vlastní konvence.** Aplikace už postavené kolem modelu TVmaze ušetří práci tím, že zůstanou.

Pokud zůstanete, dodržujte jeho licenci s uvedením zdroje. Znění ověřte v jejich dokumentaci.

## Přechod na amodb

Začněte úlohou mapování. Přečtěte externí ID, která uvádějí vaše uložené záznamy TVmaze (názvy polí viz jejich dokumentace), a převeďte je přes `/3/find`. Program níže namapuje jedno ID z IMDb na seriál a vypíše datum další epizody.

```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)
	}
}
```

Typ ukazatele u `NextEpisode` zvládá `null`, které vracejí skončené seriály. Mapování proveďte jednou, uložte ID amodb ke každému svému záznamu a od té chvíle volejte `/3/tv/{id}`. Na 429 se odpovídá `Retry-After` a stránka [hledání podle externího ID](https://amodb.dev/cs/find-by-external-id/) uvádí další zdroje ID.

## Dimenzování noční synchronizace

Předpokládejte, že každou noc obnovujete 300 seriálů. To je 300 požadavků, protože jedno volání seriálu vrací jeden seriál. Při 20 požadavcích za minutu úloha trvá 15 minut, při 40 trvá 7.5 minuty a při 120 trvá 2.5 minuty. Ke každému volání přidejte `append_to_response=credits,ratings`, aby obsazení a skóre přišly ve stejném požadavku místo dvou dalších na seriál. Čtěte `X-RateLimit-Remaining` a při nule se pozastavte, pak pokračujte po `X-RateLimit-Reset` sekundách.

## Ceník

amodb je předplacené a samo se nikdy neobnovuje. Zvolte 1, 3, 6, 12 nebo 24 měsíců a tarif s 20, 40 nebo 120 požadavky za minutu. Delší období jsou o 10, 20, 30 nebo 40 procent levnější a každý tarif zahrnuje všechna data. Částky jsou na stránce [ceník](https://amodb.dev/cs/pricing/).

## Otázky a odpovědi

### Je API TVmaze zdarma?

TVmaze nabízí bezplatné veřejné API s limity na IP adresu a jeho data podléhají licenci s uvedením zdroje. Aktuální limity a text licence si ověřte v jejich dokumentaci. amodb je placené a bezplatný tarif nemá.

### Pokrývá amodb filmy i seriály?

Ano. Filmy, seriály, sezóny, epizody a osoby jsou na stejném klíči a základní URL. TVmaze je jen pro seriály, stránka filmu ve vaší aplikaci proto tam potřebuje druhý zdroj.

### Jak namapuji seriály z TVmaze na ID amodb?

Záznamy seriálů TVmaze uvádějí ID pro jiné databáze, například IMDb (přesná pole viz jejich dokumentace). Zavolejte endpoint find s ID z IMDb a external_source=imdb_id a uložte ID z tv_results.

### Proč záleží na limitu na IP adresu?

Limit vázaný na IP adresu sdílí vše, co za ní stojí, například farma serverů nebo kancelářská síť. amodb počítá požadavky na klíč v klouzavém okně 60 sekund, ať volání přicházejí odkudkoli.

### Mohu zobrazit datum další epizody seriálu?

Ano. Detaily seriálu vracejí next_episode_to_air s air_date, season_number a episode_number, nebo null, když nic není naplánováno. Edge cachuje detaily 6 hodin, obnovujte proto několikrát denně.

## Související stránky

- [API seriálů pro seriály, sezóny a epizody](https://amodb.dev/cs/tv-show-api/): API seriálů se stavem, televizními sítěmi, sezónami, epizodami a next_episode_to_air. JSON kompatibilní s TMDB v3 ve 14 jazycích, od 20 požadavků za minutu.
- [API průvodce epizodami](https://amodb.dev/cs/episode-guide-api/): API průvodce epizodami s endpointy sezón a epizod TMDB v3: názvy, data vysílání, délky, záběry a seznamy skupin epizod pro libovolný seriál ve 14 jazycích.
- [API sezón a epizod seriálů](https://amodb.dev/cs/tv-seasons-episodes/): API sezón a epizod seriálů se stejnými cestami a JSON jako TMDB v3. Načtěte sezónu se všemi epizodami nebo jednu epizodu s datem vysílání, délkou a záběrem.
- [Hledání podle externího ID](https://amodb.dev/cs/find-by-external-id/): Najděte film, seriál nebo osobu podle ID z IMDb, TVDB, Wikidata nebo Kinopoisk přes endpoint find TMDB a čtěte externí ID a fakta z Wikidata o titulu.
- [Limity požadavků](https://amodb.dev/cs/rate-limits/): amodb omezuje klíč počtem požadavků za minutu v klouzavém okně 60 sekund: 20, 40 nebo 120 podle tarifu. Čtěte hlavičky limitu a řešte 429 pomocí Retry-After.
- [Ceník](https://amodb.dev/cs/pricing/): Tarify amodb se liší jen počtem požadavků za minutu: 20, 40 nebo 120. Každý zahrnuje všechna data kompatibilní s TMDB v3 a OMDb. Bez obnovení a zkušební verze.

Aktualizováno: 2026-10-18. Source: https://amodb.dev/cs/tvmaze-api-alternative/
