From 08a16f33020d44bfbac3eb455f01e6be9cab0603 Mon Sep 17 00:00:00 2001 From: mkelvers Date: Sun, 14 Jun 2026 21:16:38 +0200 Subject: [PATCH] feat: detect embeds in source references and route to extraction --- integrations/playback/allanime/sources.go | 25 ++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/integrations/playback/allanime/sources.go b/integrations/playback/allanime/sources.go index d93ee8d..a6c53ef 100644 --- a/integrations/playback/allanime/sources.go +++ b/integrations/playback/allanime/sources.go @@ -92,11 +92,14 @@ func (c *AllAnimeProvider) resolveSourceReferences(ctx context.Context, referenc for _, ref := range references { if source, ok := resolveDirectSource(ref); ok { out = append(out, source) - continue + return out } extracted := c.resolveExtractedSources(ctx, ref) - out = append(out, extracted...) + if len(extracted) > 0 { + out = append(out, extracted...) + return out + } } return out @@ -109,6 +112,9 @@ func resolveDirectSource(ref sourceReference) (StreamSource, bool) { } if isHTTPURL(target) { + if detectEmbedType(target) == "embed" { + return StreamSource{}, false + } return buildStreamSource(target, detectSourceType(target), ref.Name), true } @@ -117,15 +123,28 @@ func resolveDirectSource(ref sourceReference) (StreamSource, bool) { return StreamSource{}, false } + if detectEmbedType(decoded) == "embed" { + return StreamSource{}, false + } + return buildStreamSource(decoded, detectSourceType(decoded), ref.Name), true } func (c *AllAnimeProvider) resolveExtractedSources(ctx context.Context, ref sourceReference) []StreamSource { - decoded := decodeSourceURL(strings.TrimSpace(ref.URL)) + rawURL := strings.TrimSpace(ref.URL) + decoded := decodeSourceURL(rawURL) if decoded == "" { return nil } + if isHTTPURL(decoded) { + extracted, err := c.extractor.ExtractEmbedVideoLinks(ctx, decoded) + if err != nil { + return nil + } + return extracted + } + if !strings.HasPrefix(decoded, "/") { decoded = "/" + decoded }