Fix: Add adware url decoding support (#33)

* chg: fix: add bludv url decoding support

* chg: feat: add safeguards against future algorithim changes
This commit is contained in:
2025-07-16 20:22:53 -03:00
committed by GitHub
parent f4476024da
commit 27ab075da1
2 changed files with 52 additions and 0 deletions

View File

@@ -152,6 +152,30 @@ func getTorrentsBluDV(ctx context.Context, i *Indexer, link string) ([]schema.In
magnetLinks = append(magnetLinks, magnetLink)
})
adwareLinks := textContent.Find("a[href^=\"https://www.seuvideo.xyz\"]")
adwareLinks.Each(func(_ int, s *goquery.Selection) {
href, _ := s.Attr("href")
// extract querysting "id" from url
parsedUrl, err := url.Parse(href)
if err != nil {
fmt.Println(err)
return
}
magnetLink := parsedUrl.Query().Get("id")
magnetLinkDecoded, err := utils.DecodeAdLink(magnetLink)
if err != nil {
fmt.Printf("failed to decode ad link \"%s\": %v\n", href, err)
return
}
// if decoded magnet link is indeed a magnet link, append it
if strings.HasPrefix(magnetLinkDecoded, "magnet:") {
magnetLinks = append(magnetLinks, magnetLinkDecoded)
} else {
fmt.Printf("WARN: link \"%s\" decoding resulted in non-magnet link: %s\n", href, magnetLinkDecoded)
}
})
var audio []schema.Audio
var year string
var size []string

28
utils/decoder.go Normal file
View File

@@ -0,0 +1,28 @@
package utils
import (
"encoding/base64"
"html"
)
func DecodeAdLink(encodedStr string) (string, error) {
reversed := reverseString(encodedStr)
decodedBytes, err := base64.StdEncoding.DecodeString(reversed)
if err != nil {
return "", err
}
htmlUnescaped := html.UnescapeString(string(decodedBytes))
return htmlUnescaped, nil
}
// Helper function to reverse a string
func reverseString(s string) string {
runes := []rune(s)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}