feat: typed anime and playback payloads
This commit is contained in:
@@ -6,13 +6,68 @@ import (
|
||||
)
|
||||
|
||||
type PlaybackService interface {
|
||||
BuildWatchData(ctx context.Context, animeID int, titleCandidates []string, episode string, mode string, userID string) (map[string]any, error)
|
||||
BuildWatchData(ctx context.Context, animeID int, titleCandidates []string, episode string, mode string, userID string) (WatchPageData, error)
|
||||
SaveProgress(ctx context.Context, userID string, animeID int64, episode int, timeSeconds float64) error
|
||||
CompleteAnime(ctx context.Context, userID string, animeID int64) error
|
||||
ResolveProxyToken(token string) (string, string, error)
|
||||
UpsertSkipSegmentOverride(ctx context.Context, userID string, animeID int64, episode int, skipType string, startTime, endTime float64) error
|
||||
}
|
||||
|
||||
type WatchPageData struct {
|
||||
WatchData WatchData
|
||||
Anime Anime
|
||||
Episodes []CanonicalEpisode
|
||||
CurrentEpID string
|
||||
WatchlistStatus string
|
||||
WatchlistIDs []int64
|
||||
Seasons []SeasonEntry
|
||||
User *User
|
||||
CurrentPath string
|
||||
Error string
|
||||
}
|
||||
|
||||
type WatchData struct {
|
||||
MalID int
|
||||
Title string
|
||||
CurrentEpisode string
|
||||
StartTimeSeconds float64
|
||||
Episodes []CanonicalEpisode
|
||||
Providers []ProviderData
|
||||
ModeSources map[string]ModeSource
|
||||
InitialMode string
|
||||
ModeSwitchedFrom string
|
||||
AvailableModes []string
|
||||
Segments []SkipSegment
|
||||
}
|
||||
|
||||
type SubtitleItem struct {
|
||||
Lang string `json:"lang"`
|
||||
URL string `json:"url,omitempty"`
|
||||
Referer string `json:"referer,omitempty"`
|
||||
Token string `json:"token"`
|
||||
}
|
||||
|
||||
type ModeSource struct {
|
||||
URL string `json:"url,omitempty"`
|
||||
Referer string `json:"referer,omitempty"`
|
||||
Token string `json:"token"`
|
||||
Subtitles []SubtitleItem `json:"subtitles"`
|
||||
Qualities []string `json:"qualities,omitempty"`
|
||||
}
|
||||
|
||||
type SeasonEntry struct {
|
||||
MalID int `json:"mal_id"`
|
||||
Title string `json:"title"`
|
||||
Prefix string `json:"prefix"`
|
||||
IsCurrent bool `json:"is_current"`
|
||||
}
|
||||
|
||||
type SkipSegment struct {
|
||||
Type string `json:"type"`
|
||||
Start float64 `json:"start"`
|
||||
End float64 `json:"end"`
|
||||
}
|
||||
|
||||
type ProviderStream struct {
|
||||
Name string `json:"name"`
|
||||
URL string `json:"url"`
|
||||
|
||||
Reference in New Issue
Block a user