Created structure for new fastresume file

This commit is contained in:
Alexey Kostin 2017-12-26 20:55:39 +03:00
parent 1e4df94c8c
commit b39116b511

37
b2q.go
View File

@ -1,26 +1,19 @@
package main
import (
"github.com/zeebo/bencode"
"fmt"
"github.com/zeebo/bencode"
"io/ioutil"
"os"
//"github.com/davecgh/go-spew"
//"reflect"
"crypto/sha1"
"encoding/hex"
"io"
"strings"
"sync"
//"github.com/davecgh/go-spew/spew"
)
type Torrent struct {
name, path string
prio []byte
added int64
labels, files []string
}
func decodetorrentfile(path string) map[string]interface{} {
dat, err := ioutil.ReadFile(path)
if err != nil {
@ -42,8 +35,23 @@ func gethash(info interface{}) string {
return hash
}
func logic(key string, value interface{}, storrents *[]*Torrent, bitdir *string, wg *sync.WaitGroup) {
func logic(key string, value interface{}, bitdir *string, wg *sync.WaitGroup) {
defer wg.Done()
newstructure := map[string]interface{}{"active_time": new(int), "added_time": new(int), "announce_to_dht": new(int),
"announce_to_lsd": new(int), "announce_to_trackers": new(int), "auto_managed": new(int),
"banned_peers": new(string), "banned_peers6": new(string), "blocks per piece": new(int),
"completed_time": new(int), "download_rate_limit": new(int), "file sizes": new([][]int),
"file-format": new(int), "file-version": new(int), "file_priority": new([]int), "finished_time": new(int),
"info-hash": new([]byte), "last_seen_complete": new(int), "libtorrent-version": new(string),
"max_connections": new(int), "max_uploads": new(int), "num_complete": new(int), "num_downloaded": new(int),
"num_incomplete": new(int), "paused": new(int), "peers": new(string), "peers6": new(string),
"pieces": new([]byte), "qBt-category": new(string), "qBt-hasRootFolder": new(int), "qBt-name": new(string),
"qBt-queuePosition": new(int), "qBt-ratioLimit": new(int), "qBt-savePath": new(string),
"qBt-seedStatus": new(int), "qBt-seedingTimeLimit": new(int), "qBt-tags": new([]string),
"qBt-tempPathDisabled": new(int), "save_path": new(string), "seed_mode": new(int), "seeding_time": new(int),
"sequential_download": new(int), "super_seeding": new(int), "total_downloaded": new(int),
"total_uploadedv": new(int), "trackers": new([][]string), "upload_rate_limit": new(int),
}
local := value.(map[string]interface{})
uncastedlabel := local["labels"].([]interface{})
newlabels := make([]string, len(uncastedlabel), len(uncastedlabel)+1)
@ -65,10 +73,7 @@ func logic(key string, value interface{}, storrents *[]*Torrent, bitdir *string,
files = append(files, strings.Join(newpath, "/"))
}
}
ltorrent := Torrent{key, local["path"].(string), []byte(local["prio"].(string)),
local["added_on"].(int64), newlabels, files}
*storrents = append(*storrents, &ltorrent)
fmt.Println(ltorrent.name, gethash(torrentfile["info"]))
fmt.Println(newstructure)
}
func main() {
@ -78,13 +83,11 @@ func main() {
torrent := decodetorrentfile(bitfile)
var storrents []*Torrent
for key, value := range torrent {
if key != ".fileguard" && key != "rec" {
wg.Add(1)
go logic(key, value, &storrents, &bitdir, &wg)
go logic(key, value, &bitdir, &wg)
}
}
wg.Wait()
fmt.Println(storrents[0])
}