github.com/anacrolix/torrent@v1.61.0/internal/cmd/issue-464/main.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"io"
     6  	"log"
     7  
     8  	"github.com/anacrolix/torrent"
     9  )
    10  
    11  const testMagnet = "magnet:?xt=urn:btih:a88fda5954e89178c372716a6a78b8180ed4dad3&ws=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2F"
    12  
    13  func main() {
    14  	err := mainErr()
    15  	if err != nil {
    16  		log.Fatalf("error in main: %v", err)
    17  	}
    18  }
    19  
    20  func mainErr() error {
    21  	cfg := torrent.NewDefaultClientConfig()
    22  	// We could disable non-webseed peer types here, to force any errors.
    23  	client, _ := torrent.NewClient(cfg)
    24  
    25  	// Add directly from metainfo, because we want to force webseeding to serve data, and webseeding
    26  	// won't get us the metainfo.
    27  	t, err := client.AddTorrentFromFile("testdata/The WIRED CD - Rip. Sample. Mash. Share.torrent")
    28  	if err != nil {
    29  		return err
    30  	}
    31  	<-t.GotInfo()
    32  
    33  	fmt.Println("GOT INFO")
    34  
    35  	f := t.Files()[0]
    36  
    37  	r := f.NewReader()
    38  
    39  	r.Seek(5, io.SeekStart)
    40  	buf := make([]byte, 5)
    41  	n, err := r.Read(buf)
    42  
    43  	fmt.Println("END", n, buf, err)
    44  
    45  	t.DownloadAll()
    46  	client.WaitAll()
    47  	return nil
    48  }