Feat/Rede torrents (#34)

* new: feat: add brand new redetorrent.com indexer

* chg: refactor: create common package

* chg: fix: comandohds formatting

* chg: fix: dual audio detection

* chg: fix: parsing issues

* chg: refactor: remove duplicated code

* chg: refactor: move test funcs to common file
This commit is contained in:
2025-07-22 14:57:05 -03:00
committed by GitHub
parent 0b21e3b1e7
commit 782f9d6b3f
13 changed files with 762 additions and 327 deletions

View File

@@ -140,6 +140,8 @@ func getTorrentStarckFilmes(ctx context.Context, i *Indexer, link string) ([]sch
return nil, err
}
date := getPublishedDateFromRawString(link)
post := doc.Find(".post")
capa := post.Find(".capa")
title := capa.Find(".post-description > h2").Text()
@@ -161,17 +163,16 @@ func getTorrentStarckFilmes(ctx context.Context, i *Indexer, link string) ([]sch
// Duração: 1h 40 min
// Gênero: Terror, Suspense, Ficção
// Formato: MKV
// Tamanho: 2.45 GB
// Tamanho: 2.45 GB
// Qualidade de Video: 10
// Qualidade do Audio: 10
// Idioma: Português | Inglês
// Legenda: Português, Inglês, Espanhol
var text strings.Builder
s.Find("span").Each(func (i int, span *goquery.Selection) {
s.Find("span").Each(func(i int, span *goquery.Selection) {
text.WriteString(span.Text())
text.WriteString(" ")
})
fmt.Println(text.String())
audio = append(audio, findAudioFromText(text.String())...)
y := findYearFromText(text.String(), title)
if y != "" {
@@ -195,22 +196,23 @@ func getTorrentStarckFilmes(ctx context.Context, i *Indexer, link string) ([]sch
if err != nil {
fmt.Println(err)
}
releaseTitle := magnet.DisplayName
releaseTitle := strings.TrimSpace(magnet.DisplayName)
// url decode the title
releaseTitle, err = url.QueryUnescape(releaseTitle)
if err != nil {
fmt.Println(err)
releaseTitle = strings.TrimSpace(magnet.DisplayName)
}
infoHash := magnet.InfoHash.String()
trackers := magnet.Trackers
magnetAudio := []schema.Audio{}
if strings.Contains(strings.ToLower(releaseTitle), "dual") || strings.Contains(strings.ToLower(releaseTitle), "dublado") {
magnetAudio = append(magnetAudio, audio...)
} else if len(audio) > 1 {
// remove portuguese audio, and append to magnetAudio
for _, a := range audio {
if a != schema.AudioPortuguese {
magnetAudio = append(magnetAudio, a)
}
for i, tracker := range trackers {
unescapedTracker, err := url.QueryUnescape(tracker)
if err != nil {
fmt.Println(err)
}
} else {
magnetAudio = append(magnetAudio, audio...)
trackers[i] = strings.TrimSpace(unescapedTracker)
}
magnetAudio := getAudioFromTitle(releaseTitle, audio)
peer, seed, err := goscrape.GetLeechsAndSeeds(ctx, i.redis, i.metrics, infoHash, trackers)
if err != nil {
@@ -233,7 +235,7 @@ func getTorrentStarckFilmes(ctx context.Context, i *Indexer, link string) ([]sch
IMDB: imdbLink,
Audio: magnetAudio,
MagnetLink: magnetLink,
Date: time.Now(),
Date: date,
InfoHash: infoHash,
Trackers: trackers,
LeechCount: peer,