# API zwiastunów filmowych

> API zwiastunów filmowych to GET /3/movie/{movie_id}/videos na api.amodb.dev. Każde wideo niesie typ, flagę official, język i datę publikacji, więc oficjalny zwiastun wybierzesz jednym przebiegiem. Seriale zwracają ten sam kształt, a listę sortujesz własnym kodem. Ścieżki i JSON odpowiadają TMDB v3, więc istniejący klienci działają po zmianie bazowego URL.

## Pobieranie oficjalnego zwiastuna filmu

`GET /3/movie/{movie_id}/videos` zwraca wszystkie wideo powiązane z filmem. Każda pozycja ma `type`, flagę `official`, kod języka, znacznik czasu `published_at` oraz `site` i `key`, które identyfikują wideo. Zostaw pozycje, w których `type` to `Trailer`, a `official` to `true`, i masz zwiastun.

Dostajesz listę rekordów wideo, które możesz sam uporządkować, a nie strumień. Odpowiedź podaje nazwę wideo i miejsce, w którym leży, a twoja strona buduje odtwarzacz z `site` i `key`. Ten sam kształt wraca dla seriali. Ścieżki sezonów i odcinków odpowiadają pustą listą.

## Jakie dane dostajesz

| Endpoint                                                                   | Zwraca                                                                             |
| -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| `GET /3/movie/{movie_id}/videos`                                           | Zwiastuny, teasery, klipy, materiały dodatkowe (featurette), kulisy i wpadki filmu |
| `GET /3/tv/{tv_id}/videos`                                                 | Ta sama lista dla serialu                                                          |
| `GET /3/tv/{tv_id}/season/{season_number}/videos`                          | Zawsze pusta lista `results`                                                       |
| `GET /3/tv/{tv_id}/season/{season_number}/episode/{episode_number}/videos` | Zawsze pusta lista `results`                                                       |
| `GET /3/movie/{movie_id}` z `append_to_response=videos`                    | Szczegóły i wideo w jednym żądaniu                                                 |

Pola każdego wideo:

| Pole                      | Typ     | Użycie                                                                                                            |
| ------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------- |
| `type`                    | string  | Rodzaj wideo: `Trailer`, `Teaser`, `Clip`, `Featurette`, `Behind the Scenes` lub `Bloopers`, jak na stronie wideo |
| `official`                | boolean | `true`, gdy wideo jest oznaczone jako oficjalne                                                                   |
| `iso_639_1`, `iso_3166_1` | string  | Kody języka i kraju wideo                                                                                         |
| `key`, `site`             | string  | Identyfikator wideo i nazwa serwisu, który je hostuje, `YouTube` przy każdym dotąd widzianym wideo                |
| `size`                    | integer | Rozdzielczość pionowa, `1080` przy każdym dotąd widzianym wideo                                                   |
| `published_at`            | string  | Znacznik czasu ISO 8601, dobry do sortowania od najnowszych                                                       |
| `name`, `id`              | string  | Tytuł wideo i jego ID, czyli ten sam ciąg co `key`                                                                |

## Start w 3 krokach

1. Wybierz plan na stronie [cennik](https://amodb.dev/pl/pricing/). Każdy plan zwraca wszystkie dane, więc wybierasz według liczby żądań na minutę.
2. Utwórz klucz w panelu konta. Ma 32 małe znaki szesnastkowe.
3. Wywołaj `GET /3/movie/{movie_id}/videos` z kluczem w `api_key` albo w nagłówku `Authorization: Bearer`.

## Przykładowe żądanie

Przykład prosi o wideo filmu Inception (ID `27205`), sortuje je w kodzie i wypisuje najlepsze. Sortowanie stawia na początku zgodność języka, potem `Trailer` przed `Teaser`, potem oficjalne przed nieoficjalnymi, a na końcu najnowszy `published_at`.

```bash
curl -s "https://api.amodb.dev/3/movie/27205/videos" \
  -H "Authorization: Bearer $AMODB_KEY"
```

```js
const BASE = 'https://api.amodb.dev/3';
const headers = { Authorization: `Bearer ${process.env.AMODB_KEY}` };
const TYPE_RANK = { Trailer: 0, Teaser: 2 };

function rank(video, lang) {
  const language = video.iso_639_1 === lang ? 0 : 10;
  const type = TYPE_RANK[video.type] ?? 4;
  return language + type + (video.official ? 0 : 1);
}

async function pickTrailer(movieId, lang = 'en') {
  const res = await fetch(`${BASE}/movie/${movieId}/videos`, { headers });
  if (!res.ok) throw new Error(`amodb returned ${res.status}`);
  const { results } = await res.json();
  results.sort(
    (a, b) => rank(a, lang) - rank(b, lang) || (b.published_at || '').localeCompare(a.published_at || ''),
  );
  return results[0] ?? null;
}

const trailer = await pickTrailer(27205, 'en');
console.log(trailer ? `${trailer.name}: ${trailer.site} ${trailer.key}` : 'no video found');
```

Przycięta odpowiedź: pierwsze 2 z 42 wideo. Lista zawiera wszystkie języki.

```json
{
  "id": 27205,
  "results": [
    {
      "iso_639_1": "en",
      "iso_3166_1": "US",
      "name": "The Dream Sequence",
      "key": "mpj9dL7swwk",
      "site": "YouTube",
      "size": 1080,
      "type": "Clip",
      "official": true,
      "published_at": "2022-03-09T01:00:20Z",
      "id": "mpj9dL7swwk"
    },
    {
      "iso_639_1": "en",
      "iso_3166_1": "US",
      "name": "35mm Theatrical Trailer #3",
      "key": "cdx31ak4KbQ",
      "site": "YouTube",
      "size": 1080,
      "type": "Trailer",
      "official": false,
      "published_at": "2022-03-07T06:00:19Z",
      "id": "cdx31ak4KbQ"
    }
  ]
}
```

## Wybór wideo do odtworzenia

Tytuł ma często kilka oficjalnych zwiastunów (pierwsze ogłoszenie, wersja finalna) obok teaserów i klipów. Sortuj je w stałej kolejności, żeby w miejscu zwiastuna nigdy nie wylądował zestaw wpadek z planu.

| Priorytet | Filtr                              | Typowe użycie                                            |
| --------- | ---------------------------------- | -------------------------------------------------------- |
| 1         | `Trailer`, oficjalny, zgodny język | Wideo do odtworzenia                                     |
| 2         | `Trailer`, nieoficjalny            | Wrzutki regionalne lub fanowskie, gdy nie ma oficjalnego |
| 3         | `Teaser`, oficjalny                | Krótkie spoty przed premierą                             |
| 4         | `Clip`, `Featurette`               | Zapas, by miejsce nie było puste                         |
| pomiń     | `Behind the Scenes`, `Bloopers`    | Pokaż na osobnej liście dodatków                         |

Remisy sortuj według `published_at`. Od najnowszych dostajesz ostatnią wersję, od najstarszych pierwsze ogłoszenie.

## Języki zwiastunów

Wideo mają język w `iso_639_1`, a jeden tytuł może mieć zwiastuny w kilku. Inception ma 42 wideo w 9 językach. amodb zwraca je wszystkie w jednej odpowiedzi. Parametry `language` i `include_video_language` nie mają wpływu na endpointy wideo, więc język wybieraj w swoim kodzie.

| Krok | Co zrobić                                                                         |
| ---- | --------------------------------------------------------------------------------- |
| 1    | Zostaw wideo, których `iso_639_1` pasuje do twojego użytkownika, na przykład `ru` |
| 2    | Jeśli żadne nie pasuje, zostaw `en`                                               |
| 3    | Jeśli żadne nie pasuje, zostaw resztę                                             |

W każdym kroku sortuj według typu i flagi `official` jak w przykładzie. Języki wideo wynikają z wgrania, a nie z 14 języków interfejsu wymienionych na stronie [języki](https://amodb.dev/pl/languages/), więc zwiastun może mieć `cs` lub `he`.

## Zwiastuny seriali

Zwiastun serialu leży pod `/3/tv/1396/videos` (Breaking Bad), gdzie jest 9 zwiastunów. Funkcja sortująca powyżej działa bez zmian, bo pola się nie zmieniają. Ścieżki sezonów i odcinków, takie jak `/3/tv/1396/season/1/videos`, odpowiadają 200 z pustą listą `results`, więc czytaj listę serialu. Pełną listę ścieżek zobacz w [wideo i zwiastuny](https://amodb.dev/pl/videos-trailers/).

## Budowanie karuzeli zwiastunów

Karuzela filmów aktualnie w kinach potrzebuje jednego wywołania listy i jednego wywołania na tytuł: `GET /3/movie/now_playing` (zobacz [trendy i listy](https://amodb.dev/pl/trending-lists/)) plus dziesięć wywołań wideo daje 11 żądań na dziesięć tytułów. Wybrany `key` zapisuj obok ID filmu. Zwiastuny zmieniają się rzadko, więc odświeżaj zapisany wybór co kilka godzin albo gdy tytuł wraca do kin.

## Jak wypada w porównaniu

| Możliwość         | Własny scraping stron             | API metadanych z darmowym planem | amodb                                                                    |
| ----------------- | --------------------------------- | -------------------------------- | ------------------------------------------------------------------------ |
| Flaga official    | Zgadywanie po tytule strony       | Sprawdź ich dokumentację         | Boolean `official` przy każdym wideo                                     |
| Filtr typu wideo  | Parsować tekst                    | Sprawdź ich dokumentację         | Sześć wartości `type`                                                    |
| Wybór języka      | Jedna lokalizacja na stronę       | Sprawdź ich dokumentację         | `iso_639_1` i `iso_3166_1` przy każdym wideo, filtrowane w twoim kodzie  |
| Seriale i odcinki | Osobne strony do przeszukania     | Sprawdź ich dokumentację         | Seriale używają tego samego endpointu, listy sezonów i odcinków są puste |
| Utrzymanie        | Psuje się przy zmianie znaczników | Zależy od dostawcy               | Jeden stabilny kształt JSON                                              |
| Warunki           | Ryzyko ponosisz ty                | Sprawdź ich warunki              | Płatne plany, zobacz [cennik](https://amodb.dev/pl/pricing/)             |

## Cennik

Plany są przedpłacone. Kupujesz 1, 3, 6, 12 lub 24 miesiące i dostajesz zniżkę 0, 10, 20, 30 lub 40 procent za dłuższe okresy. Nic nie odnawia się samo. Plany z 20, 40 i 120 żądaniami na minutę obsługują wszystkie endpointy z tej strony, więc ruchliwa karuzela zwiastunów to kwestia samego tempa. Nie ma darmowego planu ani wersji próbnej. Porównaj plany na stronie [cennik](https://amodb.dev/pl/pricing/).

## Pytania i odpowiedzi

### Jak pobrać oficjalny zwiastun filmu?

Wywołaj GET /3/movie/{movie_id}/videos, zostaw pozycje, w których type to Trailer, a official to true, i posortuj je według published_at. Pierwsza pozycja to najnowszy oficjalny zwiastun. Jeśli zwiastuna nie ma, użyj Teaser.

### Czy API zwraca plik wideo albo strumień?

Nie. Zwraca metadane każdego wideo: name, type, site, key, size, language i daty. Link do odtwarzacza budujesz z site i key albo osadzasz wideo na własnej stronie. Plakaty i kadry pochodzą z img.amodb.dev.

### Jak pobrać zwiastuny w moim języku?

Endpoint videos zwraca wszystkie języki w jednej odpowiedzi i ignoruje parametry language oraz include_video_language. Filtruj po iso_639_1 w swoim kodzie, na przykład najpierw ru, potem en, potem reszta. Inception ma wideo w 9 językach.

### Czy mogę pobrać zwiastuny seriali i odcinków?

Dla seriali tak: użyj /3/tv/{tv_id}/videos. Pola są te same, więc kod sortowania napisany dla filmów działa bez zmian. Ścieżki wideo sezonów i odcinków odpowiadają pustą tablicą results, użyj więc listy serialu.

### Ile żądań zużywa wyszukanie zwiastuna?

Jedno żądanie na tytuł. Z append_to_response=videos zwiastun przychodzi w wywołaniu szczegółów, więc szczegóły plus zwiastun to nadal jedno żądanie z twoich 20, 40 lub 120 żądań na minutę.

## Powiązane strony

- [API wideo i zwiastunów](https://amodb.dev/pl/videos-trailers/): API wideo filmów ze ścieżkami TMDB v3: wypisz zwiastuny, teasery, klipy i featurette filmu lub serialu, a potem filtruj według typu i języka w kodzie.
- [API szczegółów filmu](https://amodb.dev/pl/movies/): API szczegółów filmu z tymi samymi ścieżkami i JSON co TMDB v3. Pobierz film po ID, dołącz obsadę, oceny i nastroje przez append_to_response, 14 języków.
- [API szczegółów serialu](https://amodb.dev/pl/tv-series/): API szczegółów serialu z tymi samymi ścieżkami i JSON co TMDB v3. Serial po ID z sezonami, sieciami, klasyfikacją wiekową i dostawcami streamingu.
- [Trendy i listy](https://amodb.dev/pl/trending-lists/): API trendów filmowych ze ścieżkami TMDB v3: wykresy dzienne i tygodniowe oraz listy now playing, popular, top rated i upcoming, w cache 30 minut.
- [Języki](https://amodb.dev/pl/languages/): amodb serwuje tytuły, opisy i nazwy w 14 językach. Podaj tag w stylu TMDB, np. ru-RU lub pt-BR, w language; każdy inny tag wraca do angielskiego.
- [Szybki start](https://amodb.dev/pl/quickstart/): Pierwsze wywołanie amodb: zdobądź klucz, pobierz szczegóły filmu w curl, JavaScript, Python, PHP lub Go, potem załaduj plakat z img.amodb.dev. Poniżej 2 minut.

Zaktualizowano: 2026-10-18. Source: https://amodb.dev/pl/movie-trailer-api/
