mirror of
https://github.com/XIU2/CloudflareSpeedTest.git
synced 2026-03-28 20:18:59 +08:00
新增 支持显示地区码(机场三字码,仅限 Cloudflare、AWS CloudFront,HTTPing 和 下载测速(无论是哪个测速模式)过程中都会自动获取);
新增 调试模式运行参数(-debug 方便排查下载测速过程中遇到的问题); 新增 彩色输出内容; 调整 当没找到符合速度条件的 IP 时,默认不再直接忽略条件输出所有 IP 测速结果了,而是只有在调试模式下才会输出;
This commit is contained in:
24
utils/csv.go
24
utils/csv.go
@@ -23,6 +23,7 @@ var (
|
||||
InputMaxLossRate = maxLossRate
|
||||
Output = defaultOutput
|
||||
PrintNum = 10
|
||||
Debug = false // 是否开启调试模式
|
||||
)
|
||||
|
||||
// 是否打印测试结果
|
||||
@@ -40,6 +41,7 @@ type PingData struct {
|
||||
Sended int
|
||||
Received int
|
||||
Delay time.Duration
|
||||
Colo string
|
||||
}
|
||||
|
||||
type CloudflareIPData struct {
|
||||
@@ -58,13 +60,19 @@ func (cf *CloudflareIPData) getLossRate() float32 {
|
||||
}
|
||||
|
||||
func (cf *CloudflareIPData) toString() []string {
|
||||
result := make([]string, 6)
|
||||
result := make([]string, 7)
|
||||
result[0] = cf.IP.String()
|
||||
result[1] = strconv.Itoa(cf.Sended)
|
||||
result[2] = strconv.Itoa(cf.Received)
|
||||
result[3] = strconv.FormatFloat(float64(cf.getLossRate()), 'f', 2, 32)
|
||||
result[4] = strconv.FormatFloat(cf.Delay.Seconds()*1000, 'f', 2, 32)
|
||||
result[5] = strconv.FormatFloat(cf.DownloadSpeed/1024/1024, 'f', 2, 32)
|
||||
// 如果 Colo 为空,则使用 "N/A" 表示
|
||||
if cf.Colo == "" {
|
||||
result[6] = "N/A"
|
||||
} else {
|
||||
result[6] = cf.Colo
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -79,7 +87,7 @@ func ExportCsv(data []CloudflareIPData) {
|
||||
}
|
||||
defer fp.Close()
|
||||
w := csv.NewWriter(fp) //创建一个新的写入文件流
|
||||
_ = w.Write([]string{"IP 地址", "已发送", "已接收", "丢包率", "平均延迟", "下载速度 (MB/s)"})
|
||||
_ = w.Write([]string{"IP 地址", "已发送", "已接收", "丢包率", "平均延迟", "下载速度(MB/s)", "地区码"})
|
||||
_ = w.WriteAll(convertToString(data))
|
||||
w.Flush()
|
||||
}
|
||||
@@ -168,18 +176,18 @@ func (s DownloadSpeedSet) Print() {
|
||||
if len(dateString) < PrintNum { // 如果IP数组长度(IP数量) 小于 打印次数,则次数改为IP数量
|
||||
PrintNum = len(dateString)
|
||||
}
|
||||
headFormat := "%-16s%-5s%-5s%-5s%-6s%-11s\n"
|
||||
dataFormat := "%-18s%-8s%-8s%-8s%-10s%-15s\n"
|
||||
headFormat := "\033[34m%-16s%-5s%-5s%-5s%-6s%-12s%-5s\033[0m\n"
|
||||
dataFormat := "%-18s%-8s%-8s%-8s%-10s%-16s%-8s\n"
|
||||
for i := 0; i < PrintNum; i++ { // 如果要输出的 IP 中包含 IPv6,那么就需要调整一下间隔
|
||||
if len(dateString[i][0]) > 15 {
|
||||
headFormat = "%-40s%-5s%-5s%-5s%-6s%-11s\n"
|
||||
dataFormat = "%-42s%-8s%-8s%-8s%-10s%-15s\n"
|
||||
headFormat = "\033[34m%-40s%-5s%-5s%-5s%-6s%-12s%-5s\033[0m\n"
|
||||
dataFormat = "%-42s%-8s%-8s%-8s%-10s%-16s%-8s\n"
|
||||
break
|
||||
}
|
||||
}
|
||||
fmt.Printf(headFormat, "IP 地址", "已发送", "已接收", "丢包率", "平均延迟", "下载速度 (MB/s)")
|
||||
fmt.Printf(headFormat, "IP 地址", "已发送", "已接收", "丢包率", "平均延迟", "下载速度(MB/s)", "地区码")
|
||||
for i := 0; i < PrintNum; i++ {
|
||||
fmt.Printf(dataFormat, dateString[i][0], dateString[i][1], dateString[i][2], dateString[i][3], dateString[i][4], dateString[i][5])
|
||||
fmt.Printf(dataFormat, dateString[i][0], dateString[i][1], dateString[i][2], dateString[i][3], dateString[i][4], dateString[i][5], dateString[i][6])
|
||||
}
|
||||
if !noOutput() {
|
||||
fmt.Printf("\n完整测速结果已写入 %v 文件,可使用记事本/表格软件查看。\n", Output)
|
||||
|
||||
Reference in New Issue
Block a user