]> Sergey Matveev's repositories - btrtrc.git/blob - cmd/torrent-create/main.go
4a429e9bcaeb7c7ace434b617e53b4b00250ae25
[btrtrc.git] / cmd / torrent-create / main.go
1 package main
2
3 import (
4         "log"
5         "os"
6
7         "github.com/anacrolix/tagflag"
8
9         "github.com/anacrolix/torrent/bencode"
10         "github.com/anacrolix/torrent/metainfo"
11 )
12
13 var (
14         builtinAnnounceList = [][]string{
15                 {"udp://tracker.openbittorrent.com:80"},
16                 {"udp://tracker.publicbt.com:80"},
17                 {"udp://tracker.istole.it:6969"},
18         }
19 )
20
21 func main() {
22         log.SetFlags(log.Flags() | log.Lshortfile)
23         var args struct {
24                 AnnounceList []string `name:"a" help:"extra announce-list tier entry"`
25                 tagflag.StartPos
26                 Root string
27         }
28         tagflag.Parse(&args, tagflag.Description("Creates a torrent metainfo for the file system rooted at ROOT, and outputs it to stdout."))
29         mi := metainfo.MetaInfo{
30                 AnnounceList: builtinAnnounceList,
31         }
32         for _, a := range args.AnnounceList {
33                 mi.AnnounceList = append(mi.AnnounceList, []string{a})
34         }
35         mi.SetDefaults()
36         info := metainfo.Info{
37                 PieceLength: 256 * 1024,
38         }
39         err := info.BuildFromFilePath(args.Root)
40         if err != nil {
41                 log.Fatal(err)
42         }
43         mi.InfoBytes, err = bencode.Marshal(info)
44         if err != nil {
45                 log.Fatal(err)
46         }
47         err = mi.Write(os.Stdout)
48         if err != nil {
49                 log.Fatal(err)
50         }
51 }