diff --git a/main.go b/main.go index 34a002f..7cc4a37 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,7 @@ /* * @Author: BlackTeay * @Date: 2024-04-30 09:37:39 - * @LastEditTime: 2024-05-08 13:44:32 + * @LastEditTime: 2024-05-08 14:43:47 * @LastEditors: BlackTeay * @Description: * @FilePath: /hls_builder/main.go @@ -622,29 +622,50 @@ func upload(localPath string, keyPath string, progressBar *widget.ProgressBar, m } } +// extractTotalValue 函数从给定的文本中提取总值。 +// +// 参数: +// +// text string - 包含待搜索总值的文本。 +// +// 返回值: +// +// float64 - 从文本中提取到的总值,如果未找到则返回默认值200。 +// error - 如果在提取过程中发生错误,则返回相应的错误;否则返回nil。 func extractTotalValue(text string) (float64, error) { + // 使用正则表达式匹配文本中的总值部分 re := regexp.MustCompile(`Total:(\d+)`) matches := re.FindStringSubmatch(text) if len(matches) > 1 { + // 将匹配到的总值字符串转换为整数 total, err := strconv.Atoi(matches[1]) if err != nil { - return 0, err // 在转换过程中发生错误 + // 如果转换过程中发生错误,返回错误信息 + return 0, err } + // 返回转换后的总值 return float64(total), nil } + // 如果未在文本中找到总值,返回默认值200和一个错误信息 return 200, fmt.Errorf("no total found in the text") } + +// parseUploadStats 函数解析上传统计信息字符串,并返回一个包含上传统计详情的结构体指针。 +// 参数 line 为待解析的上传统计信息字符串。 +// 返回 *UploadStats 指向解析出的上传统计详情结构体。 +// 返回 error 表示在解析过程中遇到的任何错误。 func parseUploadStats(line string) (*UploadStats, error) { stats := &UploadStats{} var err error + // 初始化正则表达式用于匹配不同的上传统计信息。 successedRegex := regexp.MustCompile(`(\d+) Successed`) failedRegex := regexp.MustCompile(`(\d+) Failed`) sizeRegex := regexp.MustCompile(`Size: ([\d.]+ MB)`) speedRegex := regexp.MustCompile(`Average speed ([\d.]+ MB/s)`) elapsedRegex := regexp.MustCompile(`Elapsed\s*:\s*([\d.]+)s`) - // Extracting number of files successed + // 提取成功上传的文件数量。 successedMatches := successedRegex.FindStringSubmatch(line) if len(successedMatches) > 1 { stats.Successed, err = strconv.Atoi(successedMatches[1]) @@ -653,7 +674,7 @@ func parseUploadStats(line string) (*UploadStats, error) { } } - // Extracting number of files failed + // 提取失败上传的文件数量。 failedMatches := failedRegex.FindStringSubmatch(line) if len(failedMatches) > 1 { stats.Failed, err = strconv.Atoi(failedMatches[1]) @@ -662,19 +683,19 @@ func parseUploadStats(line string) (*UploadStats, error) { } } - // Extracting total size + // 提取上传的总大小。 sizeMatches := sizeRegex.FindStringSubmatch(line) if len(sizeMatches) > 1 { stats.TotalSize = sizeMatches[1] } - // Extracting average speed + // 提取平均上传速度。 speedMatches := speedRegex.FindStringSubmatch(line) if len(speedMatches) > 1 { stats.AverageSpeed = speedMatches[1] } - // Extracting Elapsed + // 提取上传所花费的时间。 elapsedMatches := elapsedRegex.FindStringSubmatch(line) if len(elapsedMatches) > 1 { stats.Elapsed = elapsedMatches[1] @@ -721,10 +742,22 @@ func countMediaFiles(directory string) (int, int, error) { return tsCount, m3u8Count, err } -// 创建 URL 函数 +// createURL 是一个用于创建并返回一个url.URL指针的函数。 +// 它接受一个字符串类型的参数link,表示待解析的URL链接。 +// 如果链接解析失败,将会记录错误信息并终止程序。 +// +// 参数: +// +// link string - 待解析的URL字符串。 +// +// 返回值: +// +// *url.URL - 解析后的URL结构体指针。 func createURL(link string) *url.URL { + // 解析提供的链接 url, err := url.Parse(link) if err != nil { + // 如果解析失败,记录错误信息并终止程序 log.Fatalf("Error parsing URL: %v", err) } return url