优化目录扫描逻辑
This commit is contained in:
		
							parent
							
								
									51f84bea08
								
							
						
					
					
						commit
						91d751df7d
					
				
							
								
								
									
										46
									
								
								crawler.go
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								crawler.go
									
									
									
									
									
								
							| @ -79,7 +79,7 @@ func (c *Crawler) getCodeNum(s string) int { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 获取封面代码列表
 | // 获取封面代码列表
 | ||||||
| func (c *Crawler) getCoverCodeList(files []string) (coverList []string, err error) { | func (c *Crawler) getCoverCodeList(files []string) (coverList []string) { | ||||||
| 	for _, file := range files { | 	for _, file := range files { | ||||||
| 		// 去除域名部分
 | 		// 去除域名部分
 | ||||||
| 		if strings.IndexRune(file, '@') > 0 { | 		if strings.IndexRune(file, '@') > 0 { | ||||||
| @ -103,7 +103,7 @@ func (c *Crawler) getCoverCodeList(files []string) (coverList []string, err erro | |||||||
| 
 | 
 | ||||||
| 		coverList = append(coverList, fmt.Sprintf(format, strings.ToLower(nameSlice[0]), num)) | 		coverList = append(coverList, fmt.Sprintf(format, strings.ToLower(nameSlice[0]), num)) | ||||||
| 	} | 	} | ||||||
| 	return coverList, nil | 	return coverList | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 获取封面图片
 | // 获取封面图片
 | ||||||
| @ -181,38 +181,34 @@ func (c *Crawler) Handle() error { | |||||||
| 
 | 
 | ||||||
| 	if err := filepath.Walk(c.avPath, func(path string, info os.FileInfo, err error) error { | 	if err := filepath.Walk(c.avPath, func(path string, info os.FileInfo, err error) error { | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return err | 			return fmt.Errorf("访问路径 %s 失败: %w", path, err) | ||||||
| 		} | 		} | ||||||
|  | 
 | ||||||
| 		// 仅处理视频文件
 | 		// 仅处理视频文件
 | ||||||
| 		if c.isVideoFile(info.Name()) { | 		if !c.isVideoFile(info.Name()) { | ||||||
| 			// 获取文件大小和修改时间
 | 			return nil | ||||||
| 			fileSize, modTime, err := c.getFileInfo(path) | 		} | ||||||
| 			if err != nil { |  | ||||||
| 				return err |  | ||||||
| 			} |  | ||||||
| 			// 根据文件的大小和修改时间生成唯一的文件标识
 |  | ||||||
| 			uniqueID := fmt.Sprintf("%d-%s", fileSize, modTime) |  | ||||||
| 			if _, exists := uniqueFiles[uniqueID]; !exists { |  | ||||||
| 				uniqueFiles[uniqueID] = struct{}{} |  | ||||||
| 
 | 
 | ||||||
| 				fileName := info.Name() | 		baseName := strings.TrimSuffix(info.Name(), filepath.Ext(info.Name())) | ||||||
| 				extIndex := strings.LastIndex(info.Name(), ".") |  | ||||||
| 				if extIndex != -1 { |  | ||||||
| 					fileName = fileName[:extIndex] // 去除扩展名
 |  | ||||||
| 				} |  | ||||||
| 
 | 
 | ||||||
| 				videoFiles = append(videoFiles, fileName) | 		// 获取文件大小和修改时间
 | ||||||
| 			} | 		fileSize, modTime, err := c.getFileInfo(path) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return fmt.Errorf("获取文件信息失败 %s: %w", baseName, err) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		// 根据文件的大小和修改时间生成唯一的文件标识
 | ||||||
|  | 		uniqueID := fmt.Sprintf("%d-%s", fileSize, modTime) | ||||||
|  | 		if _, exists := uniqueFiles[uniqueID]; !exists { | ||||||
|  | 			uniqueFiles[uniqueID] = struct{}{} | ||||||
|  | 			videoFiles = append(videoFiles, baseName) | ||||||
| 		} | 		} | ||||||
| 		return nil | 		return nil | ||||||
| 	}); err != nil { | 	}); err != nil { | ||||||
| 		return err | 		return fmt.Errorf("目录遍历失败: %w", err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	coverList, err := c.getCoverCodeList(videoFiles) | 	coverList := c.getCoverCodeList(videoFiles) | ||||||
| 	if err != nil { |  | ||||||
| 		return err |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	var g errgroup.Group | 	var g errgroup.Group | ||||||
| 	for _, cover := range coverList { | 	for _, cover := range coverList { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user