fix: resolve build error in playback service
This commit is contained in:
@@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ func (s *Service) resolveModeSourceWithCache(
|
|||||||
return StreamSource{}, err
|
return StreamSource{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
selected.AvailableQualities = sources
|
||||||
return selected, nil
|
return selected, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user