# API plakátů filmů a CDN obrázků

> Plakáty se načítají z https://img.amodb.dev/t/p/{size}/{file} bez klíče API. Část file je poster_path z libovolné odpovědi s filmem, vyhledáváním nebo seznamem. Názvy velikostí jdou od w92 po original a include_image_language vybírá plakáty podle jazyka. Klíč potřebují jen volání JSON, která vracejí názvy souborů.

## Filmové plakáty z hostitele obrázků, který nepotřebuje klíč

URL plakátu je `https://img.amodb.dev/t/p/{size}/{file}`. Část file je řetězec `poster_path` z libovolné odpovědi s filmem, vyhledáváním nebo seznamem a začíná lomítkem. Část size je název jako `w342`. Obrázky klíč nepotřebují, takže je prohlížeče a aplikace mohou načítat přímo. JSON, který prozradí název souboru, klíč stále vyžaduje, a amodb je nezávislé API mluvící protokolem TMDB v3, takže stávající kód pro obrázky po změně hostitele funguje dál.

Co dostanete:

- Plakáty, pozadí, loga, profilové fotografie a záběry epizod na jednom hostiteli.
- Deset názvů velikostí, od `w92` po `original`.
- Seznamy plakátů pro každý titul, s jazykem, šířkou a výškou u každé položky.
- Cache na edge pro obrázky na 30 dní.

## Jaká data dostanete

| Obrázek                        | Název souboru pochází z                              | Běžné velikosti                                           |
| ------------------------------ | ---------------------------------------------------- | --------------------------------------------------------- |
| Filmový plakát                 | `poster_path` na `/3/movie/{movie_id}` a v seznamech | `w92`, `w154`, `w185`, `w342`, `w500`, `w780`, `original` |
| Pozadí                         | `backdrop_path`                                      | `w300`, `w780`, `w1280`, `original`                       |
| Fotografie osoby               | `profile_path` na `/3/person/{person_id}`            | `w185`, `h632`, `original`                                |
| Logo společnosti nebo sítě     | `logo_path`                                          | `w92`, `w154`, `w185`, `w300`, `w500`, `original`         |
| Záběr epizody                  | `still_path`                                         | `w92`, `w185`, `w300`, `original`                         |
| Všechny plakáty jednoho titulu | `GET /3/movie/{movie_id}/images`                     | pole `posters`                                            |

Seriály, sezóny a kolekce nesou také `poster_path`. Přesné seznamy velikostí přečtěte jednou při startu z bloku `images` v `GET /3/configuration` místo jejich pevného zadání. Reference obrázků je na stránce [obrázky](https://amodb.dev/cs/images-api/).

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

1. Vyberte tarif na stránce [ceník](https://amodb.dev/cs/pricing/). Určuje rychlost volání JSON: 20, 40 nebo 120 požadavků za minutu.
2. Vytvořte klíč v panelu účtu.
3. Přečtěte `poster_path` z volání detailů nebo seznamu a pak jej umístěte za hostitele obrázků a název velikosti.

## Příklad požadavku

Program v Go vypíše plakáty filmu The Matrix (ID filmu 603) v angličtině a bez textu, vybere nejširší, vypíše hotový `srcset` a uloží soubor `w342`. Klíč jde jen do volání 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)
}
```

Zkrácená odpověď s obrázky pro `include_image_language=en,null`: 3 ze 145 plakátů, anglický, nejširší anglický a bez textu. Odpověď obsahuje také `backdrops` a `logos`, zde vynechané.

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

## Volba velikosti

Číslo v názvu `w` je šířka obrázku v pixelech a `h632` je výška. Malé názvy šetří přenos, velké zachovávají detail na hustých displejích.

| Velikost       | Typické použití                              |
| -------------- | -------------------------------------------- |
| `w92`          | Návrhy ve vyhledávání a drobné řádky seznamů |
| `w154`, `w185` | Husté seznamy a karty                        |
| `w342`         | Dlaždice mřížky na telefonech                |
| `w500`         | Stránka detailu                              |
| `w780`         | Velké obrazovky a displeje 2x                |
| `original`     | Archiv nebo tisk, neškálovaný soubor         |

Dejte prohlížeči několik šířek a nechte ho vybrat. Program v Go výše vypíše `srcset` s kandidáty `185w`, `342w`, `500w` a `780w`. Spárujte jej s atributem `sizes`, který odpovídá vašemu rozvržení, například `sizes="(max-width: 600px) 45vw, 185px"` na prvku `img`.

## Jazyky plakátů

Každá položka v `posters` má hodnotu `iso_639_1`, buď kód jazyka, nebo null pro grafiku bez textu. Parametr `include_image_language` přijímá seznam kódů oddělených čárkou.

| Hodnota   | Vrací                                |
| --------- | ------------------------------------ |
| `en`      | Plakáty označené jako anglické       |
| `en,null` | Anglické plakáty a plakáty bez textu |
| `null`    | Jen plakáty bez textu                |

Dobré pořadí záložních voleb je plakát v jazyce uživatele, pak bez textu, pak anglický. V každé skupině seřaďte podle `width` a při shodě ponechte první. `vote_average` a `vote_count` jsou u obrázků filmů a seriálů `0`, takže nic neřadí. Jazyky plakátů popisují text vytištěný na grafice, takže se neřídí 14 jazyky rozhraní. Zkontrolujte `iso_639_1` u toho, co přijde, protože sada závisí na titulu.

## Ukládání a cachování plakátů

- Ukládejte `poster_path`, ne celou URL. Z něj lze později sestavit libovolnou velikost.
- Edge cachuje obrázky 30 dní. Detaily se cachují 6 hodin, takže po této době přečtěte `poster_path` znovu a zjistěte, zda se změnil.
- Klíč držte na serveru. Prohlížeči posílejte jen URL obrázků.
- Když je `poster_path` null, vykreslete zástupný obrázek místo rozbitého.

## Jak si stojí v porovnání

| Schopnost          | Scrapování stránek kvůli obrázkům  | Vlastní hostované kopie           | Hostitel obrázků amodb                              |
| ------------------ | ---------------------------------- | --------------------------------- | --------------------------------------------------- |
| Potřebný klíč      | Žádný, platí podmínky každého webu | Žádný                             | Obrázky bez klíče                                   |
| Varianty velikostí | Jakou velikost stránka nabízí      | Každou generujete a ukládáte sami | Pevné názvy velikostí v URL, od `w92` po `original` |
| Nalezení souboru   | Parsovat HTML                      | Vaše vlastní databáze             | `poster_path` v každé odpovědi                      |
| Jazyky grafiky     | Stránku po stránce                 | Co jste nasbírali                 | `include_image_language` na endpointech obrázků     |
| Úložiště a přenos  | Vaše plus zdroje                   | Vaše                              | Prohlížeč načítá z `img.amodb.dev`                  |
| Cache              | Vaše                               | Vaše                              | 30 dní na edge                                      |

## Ceník

Stahování obrázků klíč nenese. Váš tarif omezuje jen volání JSON, která vracejí názvy souborů, a odpovědi se seznamy už obsahují `poster_path` pro každou položku, takže jedno volání seznamu naplní celou mřížku. Vyberte 20, 40 nebo 120 požadavků za minutu na stránce [ceník](https://amodb.dev/cs/pricing/). Přístup je předplacený na 1, 3, 6, 12 nebo 24 měsíců se slevou 0, 10, 20, 30 a 40 procent, nic se neobnovuje samo a bezplatný tarif neexistuje.

## Otázky a odpovědi

### Potřebuje stahování plakátů API klíč?

Ne. Obrázky se berou z https://img.amodb.dev/t/p/{size}/{file} bez klíče, takže je prohlížeč může načíst přímo. Klíč používají jen volání JSON, která vracejí poster_path.

### Jaké velikosti plakátů jsou k dispozici?

Názvy velikostí jsou w92, w154, w185, w300, w342, w500, w780, w1280, h632 a original. Které se hodí pro daný typ obrázku, uvádí blok images v GET /3/configuration.

### Jak získám plakát v daném jazyce?

Zavolejte /3/movie/{id}/images?include_image_language=en,null a přečtěte iso_639_1 u každého plakátu. Hodnota null označuje grafiku bez textu. Pak vybírejte podle šířky. vote_average a vote_count jsou u obrázků filmů a seriálů 0.

### Jak dlouho se obrázky cachují?

Edge uchovává obrázky 30 dní. Ukládejte hodnotu poster_path, ne celou URL, abyste mohli později sestavit libovolnou jinou velikost bez dalšího vyhledání.

### Co zobrazit, když je poster_path null?

Některé tituly nemají plakát. Zobrazte zástupný obrázek z vlastního návrhu a případně zavolejte endpoint obrázků a zkuste najít jiné plakáty, než to vzdáte.

## Související stránky

- [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 detailu filmu](https://amodb.dev/cs/movies/): API detailu filmu se stejnými cestami a JSON jako TMDB v3. Načtěte film podle ID, přidejte obsazení, hodnocení a nálady přes append_to_response, 14 jazyků.
- [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 vyhledávání](https://amodb.dev/cs/search/): API vyhledávání se stejnými cestami a JSON jako TMDB v3. Najděte filmy, seriály, osoby, kolekce, společnosti a klíčová slova podle textu s filtrem roku.
- [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.
- [Autentizace](https://amodb.dev/cs/authentication/): Jak poslat klíč amodb: api_key v dotazu, hlavička Authorization Bearer nebo apikey pro volání OMDb. Formát klíče, uložení, rotace a chyby 401.

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