Fallback to local skip segment overrides

This commit is contained in:
2026-06-19 22:51:46 +02:00
committed by Milas Holsting
parent 3dcfc6157e
commit 6248cd75e9
2 changed files with 165 additions and 11 deletions

View File

@@ -66,9 +66,18 @@ func (s *playbackService) fetchSkipSegments(ctx context.Context, userID string,
segments, err := s.fetchAniSkipSegments(ctx, malID, episode)
if err != nil {
overrides := s.loadSkipSegmentOverrides(ctx, userID, malID, episode)
if len(overrides) > 0 {
return mergeSkipSegments(nil, overrides), nil
}
return nil, fmt.Errorf("aniskip: %w", err)
}
return s.applySkipSegmentOverrides(ctx, segments, userID, malID, episode), nil
overrides := s.loadSkipSegmentOverrides(ctx, userID, malID, episode)
if len(overrides) == 0 {
return segments, nil
}
return mergeSkipSegments(segments, overrides), nil
}
func (s *playbackService) fetchAniSkipSegments(ctx context.Context, malID int, episode string) ([]domain.SkipSegment, error) {
@@ -139,28 +148,23 @@ func normalizeSkipSegmentLabel(skipType string) string {
}
}
func (s *playbackService) applySkipSegmentOverrides(ctx context.Context, segments []domain.SkipSegment, userID string, malID int, episode string) []domain.SkipSegment {
func (s *playbackService) loadSkipSegmentOverrides(ctx context.Context, userID string, malID int, episode string) map[string]domain.SkipSegment {
epNum, err := strconv.ParseInt(strings.TrimSpace(episode), 10, 64)
if userID == "" || err != nil || epNum <= 0 {
return segments
return nil
}
ok, err := s.repo.HasSkipSegmentOverrideTable(ctx)
if err != nil || !ok {
return segments
return nil
}
overrides, err := s.repo.ListSkipSegmentOverrides(ctx, userID, int64(malID), epNum)
if err != nil {
return segments
return nil
}
overrideByType := buildOverrideSegments(overrides)
if len(overrideByType) == 0 {
return segments
}
return mergeSkipSegments(segments, overrideByType)
return buildOverrideSegments(overrides)
}
func buildOverrideSegments(overrides []db.SkipSegmentOverrideRow) map[string]domain.SkipSegment {