Načtení všech epizod sezóny
GET / 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 / | Jedna sezóna se všemi episodes |
GET / | Jedna epizoda s crew a guest_stars |
GET / | 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:/ |
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
- Vyberte tarif na stránce ceník. Všechny tarify vracejí stejná data epizod a liší se jen rychlost požadavků.
- Vytvořte klíč v panelu účtu a uložte ho do proměnné prostředí.
- Zavolejte
/3/tv/{tv_id}/season/1s klíčem v hlavičce Bearer nebo vapi_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.
curl -s "https://api.amodb.dev/3/tv/1396/season/1?language=en-US" \
-H "Authorization: Bearer $AMODB_KEY"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.
{
"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.
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 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.
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_ 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 a obsazení a štáb.
Alternativní řazení se skupinami epizod
Některé seriály se sledují v jiném pořadí, než v jakém se vysílaly. GET / 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 /, 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.