fix: resolve build error in playback service

This commit is contained in:
2026-05-06 14:09:15 +02:00
parent 5e63c3551d
commit d5ee434d8e
4 changed files with 28 additions and 6 deletions

View File

@@ -134,6 +134,7 @@ func (s *Service) buildClientModeSources(modeSources map[string]ModeSource) (map
clientModeSources[mode] = ModeSource{ clientModeSources[mode] = ModeSource{
Token: streamToken, Token: streamToken,
Subtitles: subtitles, Subtitles: subtitles,
Qualities: source.Qualities,
} }
} }

View File

@@ -326,6 +326,7 @@ func (s *Service) fetchPlaybackSourcesAndSegments(ctx context.Context, showID st
URL: resolved.URL, URL: resolved.URL,
Referer: resolved.Referer, Referer: resolved.Referer,
Subtitles: toSubtitleItems(resolved), Subtitles: toSubtitleItems(resolved),
Qualities: toQualities(resolved.AvailableQualities),
}, },
OK: true, OK: true,
} }
@@ -368,6 +369,22 @@ func (s *Service) GetEpisodeMetadata(ctx context.Context, malID int, episode str
return s.allAnimeClient.GetEpisodeMetadata(ctx, showID, episode) return s.allAnimeClient.GetEpisodeMetadata(ctx, showID, episode)
} }
func toQualities(sources []StreamSource) []string {
seen := make(map[string]struct{})
var qualities []string
for _, s := range sources {
q := strings.TrimSpace(s.Quality)
if q == "" || q == "auto" {
continue
}
if _, ok := seen[q]; !ok {
seen[q] = struct{}{}
qualities = append(qualities, q)
}
}
return qualities
}
func cloneSlice[T any](items []T) []T { func cloneSlice[T any](items []T) []T {
if items == nil { if items == nil {
return []T{} return []T{}
@@ -390,6 +407,7 @@ func cloneModeSources(modeSources map[string]ModeSource) map[string]ModeSource {
URL: source.URL, URL: source.URL,
Referer: source.Referer, Referer: source.Referer,
Subtitles: cloneSlice(source.Subtitles), Subtitles: cloneSlice(source.Subtitles),
Qualities: cloneSlice(source.Qualities),
} }
} }
return cloned return cloned

View File

@@ -52,6 +52,7 @@ func (s *Service) resolveModeSourceWithCache(
return StreamSource{}, err return StreamSource{}, err
} }
selected.AvailableQualities = sources
return selected, nil return selected, nil
} }

View File

@@ -1,12 +1,13 @@
package playback package playback
type StreamSource struct { type StreamSource struct {
URL string URL string
Quality string Quality string
Provider string Provider string
Type string Type string
Referer string Referer string
Subtitles []Subtitle Subtitles []Subtitle
AvailableQualities []StreamSource
} }
type Subtitle struct { type Subtitle struct {
@@ -19,6 +20,7 @@ type ModeSource struct {
Referer string `json:"referer,omitempty"` Referer string `json:"referer,omitempty"`
Token string `json:"token"` Token string `json:"token"`
Subtitles []SubtitleItem `json:"subtitles"` Subtitles []SubtitleItem `json:"subtitles"`
Qualities []string `json:"qualities,omitempty"`
} }
type SubtitleItem struct { type SubtitleItem struct {