Prefer torrents with real seeders: resolve connected seeder count from swarm during magnet resolution
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/claude-agent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -11,8 +11,13 @@ import (
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
type ResolveResult struct {
|
||||
Data []byte
|
||||
ConnectedSeeders int
|
||||
}
|
||||
|
||||
type Resolver interface {
|
||||
Resolve(magnetURI string) ([]byte, error)
|
||||
Resolve(magnetURI string) (*ResolveResult, error)
|
||||
}
|
||||
|
||||
type MagnetResolver struct {
|
||||
@@ -41,7 +46,7 @@ func NewMagnetResolver(timeout time.Duration) (*MagnetResolver, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (r *MagnetResolver) Resolve(magnetURI string) ([]byte, error) {
|
||||
func (r *MagnetResolver) Resolve(magnetURI string) (*ResolveResult, error) {
|
||||
truncated := magnetURI
|
||||
if len(truncated) > 80 {
|
||||
truncated = truncated[:80] + "..."
|
||||
@@ -104,11 +109,14 @@ func (r *MagnetResolver) Resolve(magnetURI string) ([]byte, error) {
|
||||
}
|
||||
resolved:
|
||||
|
||||
stats := t.Stats()
|
||||
info := t.Info()
|
||||
log.Debug().
|
||||
Str("name", info.Name).
|
||||
Int("files", len(info.Files)).
|
||||
Int64("size", info.TotalLength()).
|
||||
Int("connected_seeders", stats.ConnectedSeeders).
|
||||
Int("active_peers", stats.ActivePeers).
|
||||
Msg("magnet resolved")
|
||||
|
||||
mi := t.Metainfo()
|
||||
@@ -121,7 +129,10 @@ resolved:
|
||||
return nil, fmt.Errorf("marshaling torrent data: %w", err)
|
||||
}
|
||||
|
||||
return data, nil
|
||||
return &ResolveResult{
|
||||
Data: data,
|
||||
ConnectedSeeders: stats.ConnectedSeeders,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (r *MagnetResolver) Close() {
|
||||
|
||||
Reference in New Issue
Block a user