]> Sergey Matveev's repositories - btrtrc.git/blob - cmd/magnet-metainfo/main.go
878fc7db9404c81445c57325b9a2ce16bde88982
[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/torrent"
11         "github.com/anacrolix/torrent/bencode"
12 )
13
14 func main() {
15         flag.Parse()
16         cl, err := torrent.NewClient(nil)
17         if err != nil {
18                 log.Fatalf("error creating client: %s", err)
19         }
20         wg := sync.WaitGroup{}
21         for _, arg := range flag.Args() {
22                 t, err := cl.AddMagnet(arg)
23                 if err != nil {
24                         log.Fatalf("error adding magnet to client: %s", err)
25                 }
26                 wg.Add(1)
27                 go func() {
28                         defer wg.Done()
29                         <-t.GotInfo()
30                         mi := t.MetaInfo()
31                         t.Drop()
32                         f, err := os.Create(mi.Info.Name + ".torrent")
33                         if err != nil {
34                                 log.Fatalf("error creating torrent metainfo file: %s", err)
35                         }
36                         defer f.Close()
37                         err = bencode.NewEncoder(f).Encode(mi)
38                         if err != nil {
39                                 log.Fatalf("error writing torrent metainfo file: %s", err)
40                         }
41                 }()
42         }
43         wg.Wait()
44 }