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 / |
| Stránku filmu | Žádné filmy | GET / |
| Stránku herce | Podívejte se do jejich dokumentace | GET / 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
castprázdné pole.guest_starsacrewjsou vyplněné a hlavní obsazení má volání/creditsseriálu. - Doplňky sezón.
images,videosatranslationssezón jsou prázdné, plakát sezóny proto pochází ze záznamu sezóny, ne ze seznamu obrázků. - Externí ID.
external_idssezón a epizod jsou všechna null. Epizody k vlastním záznamům přiřazujte podleseason_numberaepisode_number. - Tvůrci.
created_byu 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 |
| 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_namedrží 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ů.
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.
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 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_, 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.