mirror of
https://github.com/fumiama/RVC-Models-Downloader.git
synced 2025-12-15 22:18:56 +09:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
efcb809a9d | ||
|
|
2e0d701e75 | ||
|
|
f0b2459aa7 | ||
|
|
8312d008be | ||
|
|
9adfe30580 | ||
|
|
7a172aef42 | ||
|
|
ff8949393c |
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
@ -15,11 +15,13 @@ jobs:
|
|||||||
|
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@master
|
uses: actions/setup-go@master
|
||||||
|
with:
|
||||||
|
go-version: ^1.25
|
||||||
|
|
||||||
- name: Run GoReleaser
|
- name: Run GoReleaser
|
||||||
uses: goreleaser/goreleaser-action@master
|
uses: goreleaser/goreleaser-action@master
|
||||||
with:
|
with:
|
||||||
version: latest
|
version: "~> v2"
|
||||||
args: release --clean
|
args: release --clean
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|||||||
@ -70,14 +70,14 @@ changelog:
|
|||||||
|
|
||||||
archives:
|
archives:
|
||||||
- id: all
|
- id: all
|
||||||
builds:
|
ids:
|
||||||
- linux
|
- linux
|
||||||
- macos
|
- macos
|
||||||
- windows
|
- windows
|
||||||
name_template: "rvcmd_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}"
|
name_template: "rvcmd_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}"
|
||||||
format_overrides:
|
format_overrides:
|
||||||
- goos: windows
|
- goos: windows
|
||||||
format: zip
|
formats: [ 'zip' ]
|
||||||
|
|
||||||
nfpms:
|
nfpms:
|
||||||
- license: AGPL 3.0
|
- license: AGPL 3.0
|
||||||
|
|||||||
@ -2,10 +2,16 @@ BaseURL: https://huggingface.co/2Noise/ChatTTS/resolve/main
|
|||||||
Targets:
|
Targets:
|
||||||
- Folder: asset
|
- Folder: asset
|
||||||
Copy:
|
Copy:
|
||||||
- asset/DVAE.pt
|
- asset/Decoder.safetensors
|
||||||
- asset/DVAE_full.pt
|
- asset/DVAE.safetensors
|
||||||
- asset/Decoder.pt
|
- asset/Embed.safetensors
|
||||||
- asset/GPT.pt
|
- asset/Vocos.safetensors
|
||||||
- asset/Vocos.pt
|
- Folder: asset/gpt
|
||||||
- asset/spk_stat.pt
|
Copy:
|
||||||
- asset/tokenizer.pt
|
- asset/gpt/config.json
|
||||||
|
- asset/gpt/model.safetensors
|
||||||
|
- Folder: asset/tokenizer
|
||||||
|
Copy:
|
||||||
|
- asset/tokenizer/special_tokens_map.json
|
||||||
|
- asset/tokenizer/tokenizer_config.json
|
||||||
|
- asset/tokenizer/tokenizer.json
|
||||||
|
|||||||
13
go.mod
13
go.mod
@ -1,22 +1,21 @@
|
|||||||
module rvcmd
|
module rvcmd
|
||||||
|
|
||||||
go 1.22.1
|
go 1.24.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/fumiama/terasu v0.0.0-20240710095334-67a8daa3a979
|
github.com/fumiama/terasu v1.0.2
|
||||||
github.com/gizak/termui/v3 v3.1.0
|
github.com/gizak/termui/v3 v3.1.0
|
||||||
github.com/pkg/errors v0.9.1
|
github.com/pkg/errors v0.9.1
|
||||||
github.com/sirupsen/logrus v1.9.3
|
github.com/sirupsen/logrus v1.9.3
|
||||||
golang.org/x/sys v0.19.0
|
golang.org/x/sys v0.38.0
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1 // indirect
|
github.com/FloatTech/ttl v0.0.0-20250224045156-012b1463287d // indirect
|
||||||
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7 // indirect
|
|
||||||
github.com/mattn/go-runewidth v0.0.2 // indirect
|
github.com/mattn/go-runewidth v0.0.2 // indirect
|
||||||
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect
|
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect
|
||||||
github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect
|
github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect
|
||||||
golang.org/x/net v0.24.0 // indirect
|
golang.org/x/net v0.28.0 // indirect
|
||||||
golang.org/x/text v0.14.0 // indirect
|
golang.org/x/text v0.17.0 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
22
go.sum
22
go.sum
@ -1,12 +1,10 @@
|
|||||||
github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1 h1:g4pTnDJUW4VbJ9NvoRfUvdjDrHz/6QhfN/LoIIpICbo=
|
github.com/FloatTech/ttl v0.0.0-20250224045156-012b1463287d h1:mUQ/c3wXKsUGa4Sg9DBy01APXKB68PmobhxOyaJI7lY=
|
||||||
github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs=
|
github.com/FloatTech/ttl v0.0.0-20250224045156-012b1463287d/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs=
|
||||||
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7 h1:S/ferNiehVjNaBMNNBxUjLtVmP/YWD6Yh79RfPv4ehU=
|
|
||||||
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w=
|
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/fumiama/terasu v0.0.0-20240710095334-67a8daa3a979 h1:1xSO4SvPfiw5TVeaS5ASFcl82rXH3jG8Obab0+JOC/8=
|
github.com/fumiama/terasu v1.0.2 h1:Dxj2vPIgLHyeMlBd61xYHx5Jg8v7k24yg7taNLlK8/8=
|
||||||
github.com/fumiama/terasu v0.0.0-20240710095334-67a8daa3a979/go.mod h1:UVx8YP1jKKL1Cj+uy+OnQRM2Ih6U36Mqy9GSf7jabsI=
|
github.com/fumiama/terasu v1.0.2/go.mod h1:1eHzpL/GJVcOnqEkh1vUbKu2zo6gojSuueUNJ9yHJE0=
|
||||||
github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc=
|
github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc=
|
||||||
github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY=
|
github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY=
|
||||||
github.com/mattn/go-runewidth v0.0.2 h1:UnlwIPBGaTZfPQ6T1IGzPI0EkYAQmT9fAEJ/poFC63o=
|
github.com/mattn/go-runewidth v0.0.2 h1:UnlwIPBGaTZfPQ6T1IGzPI0EkYAQmT9fAEJ/poFC63o=
|
||||||
@ -25,13 +23,13 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
|
|||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
|
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
|
||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
|
golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=
|
||||||
golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
|
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
|
||||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
|
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
|
||||||
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
||||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
|
||||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|||||||
15
main.go
15
main.go
@ -33,7 +33,9 @@ func main() {
|
|||||||
wait := flag.Uint("w", 4, "connection waiting seconds")
|
wait := flag.Uint("w", 4, "connection waiting seconds")
|
||||||
ua := flag.String("ua", defua, "customize user agent")
|
ua := flag.String("ua", defua, "customize user agent")
|
||||||
h := flag.Bool("h", false, "display this help")
|
h := flag.Bool("h", false, "display this help")
|
||||||
|
home := flag.String("H", ".", "download under this path")
|
||||||
flag.BoolVar(¬ui, "notui", false, "use plain text instead of TUI")
|
flag.BoolVar(¬ui, "notui", false, "use plain text instead of TUI")
|
||||||
|
flag.BoolVar(&ip.IsIPv6Available, "6", false, "use ipv6")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
args := flag.Args()
|
args := flag.Args()
|
||||||
if len(args) != 1 || *h {
|
if len(args) != 1 || *h {
|
||||||
@ -44,10 +46,15 @@ func main() {
|
|||||||
fmt.Println(cmdlst.String())
|
fmt.Println(cmdlst.String())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
err := os.MkdirAll(*home, 0755)
|
||||||
|
if err != nil {
|
||||||
|
logrus.Errorln("mkdirs of path", *home, "err:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
if notui {
|
if notui {
|
||||||
logrus.Infoln("RVC Models Downloader start at", time.Now().Local().Format(time.DateTime+" (MST)"))
|
logrus.Infoln("RVC Models Downloader start at", time.Now().Local().Format(time.DateTime+" (MST)"))
|
||||||
logrus.Infof("operating system: %s, architecture: %s", runtime.GOOS, runtime.GOARCH)
|
logrus.Infof("operating system: %s, architecture: %s", runtime.GOOS, runtime.GOARCH)
|
||||||
logrus.Infoln("is ipv6 available:", ip.IsIPv6Available.Get())
|
logrus.Infoln("is ipv6 available:", ip.IsIPv6Available)
|
||||||
} else {
|
} else {
|
||||||
if err := ui.Init(); err != nil {
|
if err := ui.Init(); err != nil {
|
||||||
logrus.Errorln("failed to initialize termui:", err)
|
logrus.Errorln("failed to initialize termui:", err)
|
||||||
@ -68,14 +75,14 @@ func main() {
|
|||||||
errorln("open custom dns file", *dnsf, "err:", err)
|
errorln("open custom dns file", *dnsf, "err:", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
m := dns.DNSConfig{}
|
m := dns.Config{}
|
||||||
err = yaml.NewDecoder(f).Decode(&m)
|
err = yaml.NewDecoder(f).Decode(&m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errorln("decode custom dns file", *dnsf, "err:", err)
|
errorln("decode custom dns file", *dnsf, "err:", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_ = f.Close()
|
_ = f.Close()
|
||||||
if ip.IsIPv6Available.Get() {
|
if ip.IsIPv6Available {
|
||||||
dns.IPv6Servers.Add(&m)
|
dns.IPv6Servers.Add(&m)
|
||||||
} else {
|
} else {
|
||||||
dns.IPv4Servers.Add(&m)
|
dns.IPv4Servers.Add(&m)
|
||||||
@ -89,7 +96,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
ch := make(chan struct{})
|
ch := make(chan struct{})
|
||||||
go func() {
|
go func() {
|
||||||
err := usercfg.download(args[0], "", *ua, time.Second*time.Duration(*wait), *cust, !*ntrs, *force)
|
err := usercfg.download(args[0], "", *home, *ua, time.Second*time.Duration(*wait), *cust, !*ntrs, *force)
|
||||||
ch <- struct{}{}
|
ch <- struct{}{}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errorln(err)
|
errorln(err)
|
||||||
|
|||||||
24
net.go
24
net.go
@ -5,6 +5,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"path"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
@ -15,16 +16,22 @@ import (
|
|||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (c *config) download(path, prefix, ua string, waits time.Duration, usecust, usetrs, force bool) error {
|
var pcli = &http.Client{
|
||||||
|
Transport: &http.Transport{
|
||||||
|
Proxy: http.ProxyFromEnvironment,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *config) download(p, prefix, home, ua string, waits time.Duration, usecust, usetrs, force bool) error {
|
||||||
for i, t := range c.Targets {
|
for i, t := range c.Targets {
|
||||||
if t.Refer != "" {
|
if t.Refer != "" {
|
||||||
refp := path[:strings.LastIndex(path, "/")+1] + t.Refer
|
refp := p[:strings.LastIndex(p, "/")+1] + t.Refer
|
||||||
infof("#%s%d refer to target '%s'.", prefix, i+1, refp)
|
infof("#%s%d refer to target '%s'.", prefix, i+1, refp)
|
||||||
refcfg, err := readconfig(refp, usecust)
|
refcfg, err := readconfig(refp, usecust)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err = refcfg.download(refp, prefix+strconv.Itoa(i+1)+".", ua, waits, usecust, usetrs, force)
|
err = refcfg.download(refp, prefix+strconv.Itoa(i+1)+".", home, ua, waits, usecust, usetrs, force)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -38,11 +45,12 @@ func (c *config) download(path, prefix, ua string, waits time.Duration, usecust,
|
|||||||
warnf("#%s%d target required Arch: %s but you are %s, skip.", prefix, i+1, t.Arch, runtime.GOARCH)
|
warnf("#%s%d target required Arch: %s but you are %s, skip.", prefix, i+1, t.Arch, runtime.GOARCH)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
err := os.MkdirAll(t.Folder, 0755)
|
homefolder := path.Join(home, t.Folder)
|
||||||
|
err := os.MkdirAll(homefolder, 0755)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, fmt.Sprintf("#%s%d make target folder '%s'", prefix, i+1, t.Folder))
|
return errors.Wrap(err, fmt.Sprintf("#%s%d make target folder '%s'", prefix, i+1, homefolder))
|
||||||
}
|
}
|
||||||
infof("#%s%d open target folder '%s'.", prefix, i+1, t.Folder)
|
infof("#%s%d open target folder '%s'.", prefix, i+1, homefolder)
|
||||||
if len(t.Copy) == 0 {
|
if len(t.Copy) == 0 {
|
||||||
warnf("#%s%d empty copy target.", prefix, i+1)
|
warnf("#%s%d empty copy target.", prefix, i+1)
|
||||||
continue
|
continue
|
||||||
@ -57,7 +65,7 @@ func (c *config) download(path, prefix, ua string, waits time.Duration, usecust,
|
|||||||
if sleep > time.Millisecond {
|
if sleep > time.Millisecond {
|
||||||
time.Sleep(sleep)
|
time.Sleep(sleep)
|
||||||
}
|
}
|
||||||
fname := t.Folder + "/" + cp[strings.LastIndex(cp, "/")+1:]
|
fname := path.Join(homefolder, cp[strings.LastIndex(cp, "/")+1:])
|
||||||
if !force {
|
if !force {
|
||||||
if _, err := os.Stat(fname); err == nil || os.IsExist(err) {
|
if _, err := os.Stat(fname); err == nil || os.IsExist(err) {
|
||||||
warnf("#%s%d skip exist file %s", prefix, i+1, fname)
|
warnf("#%s%d skip exist file %s", prefix, i+1, fname)
|
||||||
@ -77,7 +85,7 @@ func (c *config) download(path, prefix, ua string, waits time.Duration, usecust,
|
|||||||
if usetrs {
|
if usetrs {
|
||||||
resp, err = trshttp.DefaultClient.Do(req)
|
resp, err = trshttp.DefaultClient.Do(req)
|
||||||
} else {
|
} else {
|
||||||
resp, err = http.DefaultClient.Do(req)
|
resp, err = pcli.Do(req)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errorf("#%s%d get %s err: %v", prefix, i+1, req.URL, err)
|
errorf("#%s%d get %s err: %v", prefix, i+1, req.URL, err)
|
||||||
|
|||||||
2
ui.go
2
ui.go
@ -35,7 +35,7 @@ func newscreen() (s screen) {
|
|||||||
"[Time](mod:bold): %s\n[OS](mod:bold): %s, [Architecture](mod:bold): %s\n[Is IPv6 available](mod:bold): %v",
|
"[Time](mod:bold): %s\n[OS](mod:bold): %s, [Architecture](mod:bold): %s\n[Is IPv6 available](mod:bold): %v",
|
||||||
time.Now().Local().Format(time.DateTime+" (MST)"),
|
time.Now().Local().Format(time.DateTime+" (MST)"),
|
||||||
runtime.GOOS, runtime.GOARCH,
|
runtime.GOOS, runtime.GOARCH,
|
||||||
ip.IsIPv6Available.Get(),
|
ip.IsIPv6Available,
|
||||||
)
|
)
|
||||||
s.sysinfo.SetRect(0, s.currh, w/2, s.currh+5)
|
s.sysinfo.SetRect(0, s.currh, w/2, s.currh+5)
|
||||||
s.currh += 5
|
s.currh += 5
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user