Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions tool/auto-update/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# auto-update for linux
This tool will download the best trackers list, and auto update the config file of aria2 "~/.aria2/aria2.conf".

The default url is "https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt", you can change it by argument.

这个小工具用于下载最佳tracker列表,并且自动更新aria2配置文件"~/.aria2/aria2.conf"。

默认列表文件的下载地址是:"https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt",用户可以用参数改变下载地址。

#### install(安装):
go get -v github.com/rocket049/trackerslist/tool/auto-update

notice: You must install golang compiler first. 你必须先安装go语言编译器。

#### Usage(用法):
```
//update default best list,下载默认最佳列表。
auto-update
//update special list,下载指定列表
auto-update [url of list]
```
73 changes: 73 additions & 0 deletions tool/auto-update/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package main

import (
"bufio"
"flag"
"net/http"
"os"
"path/filepath"
"text/template"
)

var listUrl = "https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt"

var tmpl = `bt-tracker={{range $k, $v := .}}{{if eq $k 0}}{{$v}}{{else}},{{$v}}{{end}}{{end}}
enable-dht=true
bt-enable-lpd=true
enable-peer-exchange=true
`

func downloadList() ([]string, error) {
resp, err := http.Get(listUrl)
if err != nil {
return nil, err
}
defer resp.Body.Close()
rd := bufio.NewReader(resp.Body)
res := []string{}
for {
line1, _, err := rd.ReadLine()
if err != nil {
break
}
//fmt.Println("url:", string(line1), len(line1))
if len(line1) > 0 {
res = append(res, string(line1))
}
}
return res, nil
}

func writeConf(data []string) error {
home, err := os.UserHomeDir()
if err != nil {
return err
}
confPath := filepath.Join(home, ".aria2", "aria2.conf")
fp, err := os.Create(confPath)
if err != nil {
return err
}
defer fp.Close()
t := template.New("")
t, err = t.Parse(tmpl)
if err != nil {
return err
}
return t.Execute(fp, data)
}

func main() {
flag.Parse()
if len(flag.Arg(0)) > 0 {
listUrl = flag.Arg(0)
}
list1, err := downloadList()
if err != nil {
panic(err.Error())
}
err = writeConf(list1)
if err != nil {
panic(err.Error())
}
}