42 lines
1.3 KiB
Go
42 lines
1.3 KiB
Go
package metadata
|
|
|
|
import "context"
|
|
|
|
// Provider is the base interface all providers implement.
|
|
type Provider interface {
|
|
Slug() string // Stable provider identifier.
|
|
Name() string // Human-readable provider name.
|
|
ForTypes() []string // Content types handled, e.g. ["movie", "series"].
|
|
}
|
|
|
|
// SearchProvider finds items by name/year or external IDs.
|
|
type SearchProvider interface {
|
|
Provider
|
|
Search(ctx context.Context, query SearchQuery) ([]SearchResult, error)
|
|
}
|
|
|
|
// MetadataProvider fetches full metadata for an identified item.
|
|
type MetadataProvider interface {
|
|
Provider
|
|
GetMetadata(ctx context.Context, req MetadataRequest) (*MetadataResult, error)
|
|
}
|
|
|
|
// PersonProvider fetches biographical details for a person entity.
|
|
type PersonProvider interface {
|
|
Provider
|
|
GetPersonDetail(ctx context.Context, req PersonDetailRequest) (*PersonDetailResult, error)
|
|
}
|
|
|
|
// ImageProvider fetches available images (posters, backdrops, logos).
|
|
type ImageProvider interface {
|
|
Provider
|
|
GetImages(ctx context.Context, req ImageRequest) ([]RemoteImage, error)
|
|
}
|
|
|
|
// EpisodeProvider fetches season/episode data for series.
|
|
type EpisodeProvider interface {
|
|
Provider
|
|
GetSeasons(ctx context.Context, req SeasonsRequest) ([]SeasonResult, error)
|
|
GetEpisodes(ctx context.Context, req EpisodesRequest) ([]EpisodeResult, error)
|
|
}
|