# API průvodce epizodami

> API průvodce epizodami vypíše všechny epizody seriálu přes GET /3/tv/{tv_id}/season/{season_number}. Každá epizoda má název, popis, datum vysílání, délku a záběr. Seznam episode_groups pojmenovává alternativní řazení, například DVD nebo absolutní. Cesty a JSON odpovídají TMDB v3, takže stávající klienti potřebují jen novou základní URL.

## Načtení všech epizod sezóny

`GET /3/tv/{tv_id}/season/{season_number}` vrací sezónu s celým polem `episodes`. Každá epizoda má `episode_number`, `name`, `overview`, `air_date`, `runtime` a `still_path`. ID jsou číselná ID, která používá TMDB, například `1396` pro Breaking Bad.

Dostanete sezóny, epizody s daty a délkami, záběry, další a poslední odvysílanou epizodu seriálu a seznam alternativních řazení epizod. Textová pole se řídí parametrem `language` a popis zůstává prázdný, když překlad neexistuje.

## Jaká data dostanete

| Endpoint                                                            | Vrací                                                                                         |
| ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| `GET /3/tv/{tv_id}`                                                 | Souhrn `seasons`, `number_of_seasons`, `status`, `next_episode_to_air`, `last_episode_to_air` |
| `GET /3/tv/{tv_id}/season/{season_number}`                          | Jedna sezóna se všemi `episodes`                                                              |
| `GET /3/tv/{tv_id}/season/{season_number}/episode/{episode_number}` | Jedna epizoda s `crew` a `guest_stars`                                                        |
| `GET /3/tv/{tv_id}/episode_groups`                                  | Název, `type` a počet epizod každého alternativního řazení definovaného pro seriál            |

Pole epizody:

| Pole                              | Typ               | Poznámky                                                                                                     |
| --------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------ |
| `id`, `show_id`                   | integer           | ID epizody a ID seriálu. `show_id` je v seznamech sezón a v `next_episode_to_air`, ne na cestě jedné epizody |
| `episode_number`, `season_number` | integer           | Pozice v sezóně                                                                                              |
| `episode_type`                    | string            | Například `standard`                                                                                         |
| `name`, `overview`                | string            | Lokalizováno přes `language`                                                                                 |
| `air_date`                        | string nebo null  | `YYYY-MM-DD`, prázdné nebo null, když není oznámeno                                                          |
| `runtime`                         | integer nebo null | Minuty                                                                                                       |
| `still_path`                      | string nebo null  | Připojte k `https://img.amodb.dev/t/p/{size}`                                                                |
| `vote_average`, `vote_count`      | number, integer   | U epizod je aktuálně `0`                                                                                     |
| `production_code`                 | string            | Kód studia, často prázdný                                                                                    |
| `crew`, `guest_stars`             | array             | Osoby uvedené u epizody, se stejnými poli jako člen obsazení                                                 |

## Začněte ve 3 krocích

1. Vyberte tarif na stránce [ceník](https://amodb.dev/cs/pricing/). Všechny tarify vracejí stejná data epizod a liší se jen rychlost požadavků.
2. Vytvořte klíč v panelu účtu a uložte ho do proměnné prostředí.
3. Zavolejte `/3/tv/{tv_id}/season/1` s klíčem v hlavičce Bearer nebo v `api_key`.

## Příklad požadavku

Ukázka načte sezónu 1 seriálu Breaking Bad (ID seriálu `1396`) v angličtině. Program v Go ji dekóduje do typovaných struktur a vypíše jeden řádek na epizodu s datem vysílání, délkou a URL záběru.

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

Zkrácená odpověď: 2 ze 7 epizod, u každé jeden člen štábu a jeden hostující herec.

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

## Načtení celého seriálu

amodb nepřijímá hodnoty ve stylu `season/1` v `append_to_response`, takže volání sezón zůstávají samostatná. Nejprve z detailů seriálu přečtěte `number_of_seasons` a seznam `seasons`, pak každou sezónu vyžádejte ve smyčce.

```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` zahrnuje sezónu 0, když má seriál speciály, takže Breaking Bad stojí 1 volání detailů plus 6 volání sezón. Seriál s 10 sezónami stojí 11 požadavků. Detaily se na edge cachují 6 hodin, výsledek proto uložte a obnovujte ho podle plánu.

## Data vysílání a co přijde dál

`GET /3/tv/{tv_id}` obsahuje `next_episode_to_air` a `last_episode_to_air`, plné objekty epizod s `name`, `air_date`, `season_number`, `episode_number`, `runtime` a `still_path`. `next_episode_to_air` je `null`, když není nic oznámeno. Zkombinujte jej se `status` (například `Returning Series`, `Ended` nebo `Canceled`) a rozhodněte, zda zobrazit odpočet.

`air_date` je kalendářní datum bez denní doby. Porovnejte ho s dnešním datem a označte nové epizody. Pro rozvrh toho, co se vysílá, jsou seznamy `airing_today` a `on_the_air` na stránce [trendy a seznamy](https://amodb.dev/cs/trending-lists/) cachované 30 minut.

## Záběry a délky

Pro řádky seznamu použijte `w185` nebo `w300`, pro plnou velikost `original`. Velikosti záběrů jsou `w92`, `w185`, `w300` a `original`. Epizoda nemusí mít záběr, vykreslete proto zástupný obrázek, když je `still_path` `null`. Hostitel obrázků klíč nepotřebuje, viz [obrázky](https://amodb.dev/cs/images-api/).

`runtime` je v minutách a může být `null`. Pro zobrazení doby maratonu sezóny sečtěte `runtime` přes `episodes` a `null` počítejte jako 0. Přidejte `append_to_response=credits,images` na cestu jedné epizody a získáte objekt `credits` a seznam `stills`. Pole `cast` epizody je prázdné a osoby jsou v `crew` a `guest_stars`. Podrobnosti jsou na stránkách [sezóny a epizody](https://amodb.dev/cs/tv-seasons-episodes/) a [obsazení a štáb](https://amodb.dev/cs/credits/).

## Alternativní řazení se skupinami epizod

Některé seriály se sledují v jiném pořadí, než v jakém se vysílaly. `GET /3/tv/{tv_id}/episode_groups` vypíše řazení definovaná pro seriál. Každá položka má `id`, `name`, `description`, `type`, `episode_count`, `group_count` a `network`. Pole `results` je prázdné, když žádná nejsou definována.

| `type` | Řazení                 |
| ------ | ---------------------- |
| 1      | Původní datum vysílání |
| 2      | Absolutní              |
| 3      | DVD                    |
| 4      | Digitální              |
| 5      | Dějový oblouk          |
| 6      | Produkční              |
| 7      | TV                     |

amodb vrací jen tento seznam. Nenabízí `GET /3/tv/episode_group/{id}`, takže epizody uvnitř skupiny nejsou dostupné. Data epizod čtěte z endpointů sezón.

## Jak si stojí v porovnání

| Schopnost          | Scrapování stránek epizod       | Metadata API s bezplatným tarifem  | amodb                                                |
| ------------------ | ------------------------------- | ---------------------------------- | ---------------------------------------------------- |
| Celá sezóna        | Jedno stažení stránky na sezónu | Podívejte se do jejich dokumentace | Jedno volání, pole `episodes` v něm                  |
| Celý seriál        | Projít každou sezónu            | Podívejte se do jejich dokumentace | Jedno volání na sezónu, uvedené v `seasons`          |
| Data vysílání      | Parsovat text                   | Podívejte se do jejich dokumentace | `air_date` plus `next_episode_to_air`                |
| Záběry             | Stáhnout a zmenšit              | Podívejte se do jejich dokumentace | Pevné velikosti na `img.amodb.dev`, bez klíče        |
| Jiná řazení epizod | Není k dispozici                | Podívejte se do jejich dokumentace | Seznam `episode_groups`, obsah skupin se neposkytuje |
| Jazyky             | Jedna lokalizace na web         | Podívejte se do jejich dokumentace | 14 jazyků přes `language`                            |

## Ceník

Tarify jsou předplacené na 1, 3, 6, 12 nebo 24 měsíců, u delších období je sleva 0, 10, 20, 30 nebo 40 procent, a samy se neobnovují. Tarify s 20, 40 a 120 požadavky za minutu vracejí všechny endpointy na této stránce. Obnovení seriálu stojí jeden požadavek na detaily a jeden na každou sezónu. Bezplatný tarif neexistuje. Vyberte tarif na stránce [ceník](https://amodb.dev/cs/pricing/).

## Otázky a odpovědi

### Jak vypíšu všechny epizody seriálu?

Přečtěte number_of_seasons z GET /3/tv/{tv_id} a pak zavolejte GET /3/tv/{tv_id}/season/{season_number} pro každou sezónu. Každá odpověď sezóny obsahuje celé pole episodes, takže nepotřebujete samostatné volání pro každou epizodu. Několik sezón se vrací s prázdným polem episodes, když nejsou data epizod k dispozici.

### Mohu získat více sezón jedním požadavkem?

Ne. amodb ignoruje hodnoty ve stylu season/1 v append_to_response, takže každá sezóna je samostatný požadavek. Seriál s 10 sezónami stojí 11 požadavků, jeden na detaily a jeden na každou sezónu.

### Co je skupina epizod?

Skupina epizod je alternativní řazení týchž epizod, například podle DVD, absolutní nebo podle dějových oblouků. GET /3/tv/{tv_id}/episode_groups je vypíše s názvem, typem a počtem epizod. amodb neposkytuje epizody uvnitř skupiny.

### Jak zjistím, kdy se vysílá další epizoda?

GET /3/tv/{tv_id} vrací next_episode_to_air s air_date, season_number a episode_number. Hodnota je null, když není nic oznámeno. last_episode_to_air udává tu poslední.

### Odkud se berou obrázky epizod?

Každá epizoda má still_path. Připojte jej k https://img.amodb.dev/t/p/{size}, například w300 pro řádky seznamu. Obrázky klíč nepotřebují. Hodnota still_path může být null, mějte proto připravený zástupný obrázek.

## Související stránky

- [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.
- [API detailu seriálu](https://amodb.dev/cs/tv-series/): API detailu seriálu se stejnými cestami a JSON jako TMDB v3. Seriál podle ID se sezónami, sítěmi, věkovým hodnocením a poskytovateli streamování.
- [API obrázků a hostitel obrázků](https://amodb.dev/cs/images-api/): API obrázků filmů s cestami TMDB v3: vypište plakáty, pozadí, loga a záběry každého titulu a načtěte je z img.amodb.dev v 10 velikostech bez klíče.
- [API obsazení a štábu](https://amodb.dev/cs/credits/): API obsazení a štábu se stejnými cestami a JSON jako TMDB v3. Získejte herce a štáb filmů, seriálů, sezón a epizod s poli order, department a job.
- [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.
- [Rychlý start](https://amodb.dev/cs/quickstart/): První volání amodb: získejte klíč, vyžádejte detail filmu v curl, JavaScriptu, Pythonu, PHP nebo Go a načtěte plakát z img.amodb.dev. Za méně než 2 minuty.

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