]> Sergey Matveev's repositories - btrtrc.git/blob - cmd/magnet-metainfo/main.go
fb2a5cecc19dfb04c213c6bcaa30f23bb6e03ff0
[btrtrc.git] / cmd / magnet-metainfo / main.go
1 // Converts magnet URIs and info hashes into torrent metainfo files.
2 package main
3
4 import (
5         "flag"
6         "log"
7         "os"
8         "sync"
9
10         "github.com/anacrolix/libtorgo/bencode"
11
12         "bitbucket.org/anacrolix/go.torrent"
13 )
14
15 func main() {
16         flag.Parse()
17         cl, err := torrent.NewClient(nil)
18         if err != nil {
19                 log.Fatalf("error creating client: %s", err)
20         }
21         wg := sync.WaitGroup{}
22         for _, arg := range flag.Args() {
23                 t, err := cl.AddMagnet(arg)
24                 if err != nil {
25                         log.Fatalf("error adding magnet to client: %s", err)
26                 }
27                 wg.Add(1)
28                 go func() {
29                         defer wg.Done()
30                         <-t.GotMetainfo
31                         mi := t.MetaInfo()
32                         t.Drop()
33                         f, err := os.Create(mi.Info.Name + ".torrent")
34                         if err != nil {
35                                 log.Fatalf("error creating torrent metainfo file: %s", err)
36                         }
37                         defer f.Close()
38                         err = bencode.NewEncoder(f).Encode(mi)
39                         if err != nil {
40                                 log.Fatalf("error writing torrent metainfo file: %s", err)
41                         }
42                 }()
43         }
44         wg.Wait()
45 }