14 "github.com/dustin/go-humanize"
15 "go.stargrave.org/rutrackerer"
19 cmd := exec.Command("grep", append([]string{"-n"}, os.Args[1:]...)...)
20 grepStdin, err := cmd.StdinPipe()
24 grepStdout, err := cmd.StdoutPipe()
28 if err = cmd.Start(); err != nil {
31 torrents := make([]*rutrackerer.Torrent, 0, 1<<20)
32 printer := make(chan struct{})
34 scanner := bufio.NewScanner(grepStdout)
38 var torrent *rutrackerer.Torrent
41 i = strings.IndexByte(t, ':')
42 i, err = strconv.Atoi(t[:i])
46 torrent = torrents[i-1]
50 https://rutracker.org/forum/viewtopic.php?t=%d
51 magnet:?xt=urn:btih:%s
54 torrent.Registered.Format("2006-01-02T15:04:05"),
55 humanize.IBytes(uint64(torrent.Size)),
58 strings.ToUpper(hex.EncodeToString(torrent.Hash[:])),
61 if err = scanner.Err(); err != nil {
66 gobDec := gob.NewDecoder(bufio.NewReader(os.Stdin))
68 var torrent rutrackerer.Torrent
69 if err = gobDec.Decode(&torrent); err != nil {
75 torrents = append(torrents, &torrent)
76 if _, err = grepStdin.Write([]byte(torrent.Title + "\n")); err != nil {
82 if err = cmd.Wait(); err != nil {