2020-07-27 10:15:49 +02:00
|
|
|
package torrent
|
|
|
|
|
|
|
|
|
|
import (
|
2020-07-27 15:55:31 +02:00
|
|
|
"io/ioutil"
|
2020-07-27 10:15:49 +02:00
|
|
|
"log"
|
2020-07-27 15:55:31 +02:00
|
|
|
"path/filepath"
|
2020-07-27 10:15:49 +02:00
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
rtorrent "github.com/cenkalti/rain/torrent"
|
|
|
|
|
)
|
|
|
|
|
|
2020-07-27 15:55:31 +02:00
|
|
|
func (t *Torrent) Do() error {
|
|
|
|
|
dc := rtorrent.DefaultConfig
|
|
|
|
|
dc.DHTEnabled = t.dht
|
|
|
|
|
dc.RPCEnabled = false
|
|
|
|
|
dc.DHTBootstrapNodes = []string{"127.0.0.1:7246"} // its a me
|
|
|
|
|
|
|
|
|
|
td, err := ioutil.TempDir("", "example")
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
dc.DataDir = td
|
|
|
|
|
dc.Database = filepath.Join(td, "session.db")
|
|
|
|
|
s, err := rtorrent.NewSession(dc)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ti, err := NewTorrentInfo("plugin/torrent/testdata/db.miek.nl")
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tor, err := s.AddTorrent(ti.ToReader(), nil)
|
2020-07-27 10:15:49 +02:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
2020-07-27 15:55:31 +02:00
|
|
|
// mag, _ := tor.Magnet()
|
2020-07-27 10:15:49 +02:00
|
|
|
|
2020-07-27 15:55:31 +02:00
|
|
|
go s.StartAll()
|
2020-07-27 10:15:49 +02:00
|
|
|
|
|
|
|
|
// Watch the progress
|
|
|
|
|
for range time.Tick(time.Second) {
|
|
|
|
|
s := tor.Stats()
|
|
|
|
|
log.Printf("Status: %s, Downloaded: %d, Peers: %d", s.Status.String(), s.Bytes.Completed, s.Peers.Total)
|
|
|
|
|
}
|
2020-07-27 15:55:31 +02:00
|
|
|
return nil
|
2020-07-27 10:15:49 +02:00
|
|
|
|
|
|
|
|
}
|