From 2db3a174081c106336a019c78b27f7e7e206b608 Mon Sep 17 00:00:00 2001 From: rraymondgh <42769112+rraymondgh@users.noreply.github.com> Date: Thu, 23 Jan 2025 08:14:04 +0000 Subject: [PATCH] torznab - fix incorrect leechers in arrs (#372) * fix incorrect leechers in arrs * use peers defined as seeders + leechers * peers as well --- internal/torznab/adapter/search.go | 19 ++++++++++++++----- internal/torznab/attributes.go | 1 + 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/internal/torznab/adapter/search.go b/internal/torznab/adapter/search.go index 23ab7155..896248e9 100644 --- a/internal/torznab/adapter/search.go +++ b/internal/torznab/adapter/search.go @@ -3,12 +3,13 @@ package adapter import ( "context" "fmt" + "strconv" + "strings" + "github.com/bitmagnet-io/bitmagnet/internal/database/query" "github.com/bitmagnet-io/bitmagnet/internal/database/search" "github.com/bitmagnet-io/bitmagnet/internal/model" "github.com/bitmagnet-io/bitmagnet/internal/torznab" - "strconv" - "strings" ) func (a adapter) Search(ctx context.Context, req torznab.SearchRequest) (torznab.SearchResult, error) { @@ -220,18 +221,26 @@ func (a adapter) transformSearchResult(req torznab.SearchRequest, res search.Tor AttrValue: item.PublishedAt.Format(torznab.RssDateDefaultFormat), }, } - if seeders := item.Torrent.Seeders(); seeders.Valid { + seeders := item.Torrent.Seeders() + leechers := item.Torrent.Leechers() + if seeders.Valid { attrs = append(attrs, torznab.SearchResultItemTorznabAttr{ AttrName: torznab.AttrSeeders, AttrValue: strconv.Itoa(int(seeders.Uint)), }) } - if leechers := item.Torrent.Leechers(); leechers.Valid { + if leechers.Valid { attrs = append(attrs, torznab.SearchResultItemTorznabAttr{ - AttrName: torznab.AttrPeers, + AttrName: torznab.AttrLeechers, AttrValue: strconv.Itoa(int(leechers.Uint)), }) } + if leechers.Valid && seeders.Valid { + attrs = append(attrs, torznab.SearchResultItemTorznabAttr{ + AttrName: torznab.AttrPeers, + AttrValue: strconv.Itoa(int(leechers.Uint) + int(seeders.Uint)), + }) + } if len(item.Torrent.Files) > 0 { attrs = append(attrs, torznab.SearchResultItemTorznabAttr{ AttrName: torznab.AttrFiles, diff --git a/internal/torznab/attributes.go b/internal/torznab/attributes.go index 2898d9a7..43f42532 100644 --- a/internal/torznab/attributes.go +++ b/internal/torznab/attributes.go @@ -8,6 +8,7 @@ const ( AttrSize = "size" AttrPublishDate = "publishdate" AttrSeeders = "seeders" + AttrLeechers = "leechers" AttrPeers = "peers" // AttrFiles is the number of files in the torrent AttrFiles = "files"