Documentation
¶
Index ¶
- Constants
- Variables
- func NewDownloader() *downloader
- type ArchiveMD5MismatchError
- type Comic
- type ComicFilter
- func (filter *ComicFilter) GetLimit() *int64
- func (filter *ComicFilter) SetHasValid(hasValid bool) *ComicFilter
- func (filter *ComicFilter) SetID(id string) *ComicFilter
- func (filter *ComicFilter) SetIDRangeLeft(idRangeLeft int64) *ComicFilter
- func (filter *ComicFilter) SetIDRangeRight(idRangeRight int64) *ComicFilter
- func (filter *ComicFilter) SetLimit(limit int64) *ComicFilter
- func (filter *ComicFilter) SetNotArchived(notArchived bool) *ComicFilter
- func (filter *ComicFilter) SetPageMax(pageMax int64) *ComicFilter
- func (filter *ComicFilter) SetPageMin(pageMin int64) *ComicFilter
- func (filter *ComicFilter) SetSkip(skip int64) *ComicFilter
- func (filter *ComicFilter) SetTitlePattern(pattern string) *ComicFilter
- func (filter *ComicFilter) SetValid(valid bool) *ComicFilter
- type ComicImpl
- type ComicVerifier
- func (v *ComicVerifier) CancelTask(ctx context.Context, taskID string) error
- func (v *ComicVerifier) Close() error
- func (v *ComicVerifier) GetTask(ctx context.Context, taskID string) (*VerifyTask, error)
- func (v *ComicVerifier) GetTaskProgress(taskID string) *VerifyProgress
- func (v *ComicVerifier) GetTasks() []*VerifyTask
- func (v *ComicVerifier) Start(ctx context.Context, opts *VerifyOptions) (string, error)
- func (v *ComicVerifier) StartSchedule(ctx context.Context, cfg *ScheduleConfig) error
- type Downloader
- type Handler
- func (h *Handler) ArchiveComic(c *gin.Context)
- func (h *Handler) CancelVerifyTask(c *gin.Context)
- func (h *Handler) GetComicCoverPath(c *gin.Context)
- func (h *Handler) GetComicInfo(c *gin.Context)
- func (h *Handler) GetInvalidComics(c *gin.Context)
- func (h *Handler) GetVerifyProgress(c *gin.Context)
- func (h *Handler) GetVerifyTask(c *gin.Context)
- func (h *Handler) GetVerifyTasks(c *gin.Context)
- func (h *Handler) RegisterRoutes(r gin.IRouter)
- func (h *Handler) RestoreComic(c *gin.Context)
- func (h *Handler) SearchComics(c *gin.Context)
- func (h *Handler) StartScheduleVerify(c *gin.Context)
- func (h *Handler) StartVerifyTask(c *gin.Context)
- type Image
- type MemoryStorage
- func (m *MemoryStorage) Find(ctx context.Context, filter *ComicFilter) ([]Comic, error)
- func (m *MemoryStorage) Get(ctx context.Context, id string) (Comic, error)
- func (m *MemoryStorage) Save(ctx context.Context, comic Comic) error
- func (m *MemoryStorage) SaveVerifyResult(ctx context.Context, result *VerifyResult) error
- type MetricsCollector
- type Monitor
- func (m *Monitor) GetCheckpoints() []string
- func (m *Monitor) GetDuration() time.Duration
- func (m *Monitor) GetPerformanceStats() *PerformanceStats
- func (m *Monitor) GetResourceStats() *ResourceStats
- func (m *Monitor) GetRetryQueue() []string
- func (m *Monitor) GetSkippedFiles() []string
- func (m *Monitor) GetStartTime() time.Time
- func (m *Monitor) GetStats() MonitorStats
- func (m *Monitor) SaveStats(path string) error
- func (m *Monitor) Start()
- func (m *Monitor) Stop()
- type MonitorStats
- type PerformanceStats
- type ResourceStats
- type ScheduleConfig
- type Service
- type ServiceImpl
- func (s *ServiceImpl) ArchiveComic(ctx context.Context, id string) error
- func (s *ServiceImpl) CancelVerifyTask(ctx context.Context, taskID string) error
- func (s *ServiceImpl) GetComicInfo(ctx context.Context, id string) (Comic, error)
- func (s *ServiceImpl) GetInvalidComics(ctx context.Context, filter *ComicFilter) ([]Comic, error)
- func (s *ServiceImpl) GetTask(taskID string) *VerifyTask
- func (s *ServiceImpl) GetVerifyProgress(ctx context.Context, taskID string) (*VerifyProgress, error)
- func (s *ServiceImpl) GetVerifyTask(ctx context.Context, taskID string) (*VerifyTask, error)
- func (s *ServiceImpl) GetVerifyTasks(ctx context.Context) ([]*VerifyTask, error)
- func (s *ServiceImpl) RestoreComic(ctx context.Context, id string) error
- func (s *ServiceImpl) SearchComics(ctx context.Context, filter *ComicFilter) ([]Comic, error)
- func (s *ServiceImpl) StartScheduleVerify(ctx context.Context, cfg *ScheduleConfig) error
- func (s *ServiceImpl) StartVerifyTask(ctx context.Context, opts *VerifyOptions) (string, error)
- type Storage
- type VerifyImageResult
- type VerifyInfo
- func (info *VerifyInfo) GetFixedCount() int32
- func (info *VerifyInfo) GetInvalidCount() int32
- func (info *VerifyInfo) GetInvalidSubsamplingCount() int32
- func (info *VerifyInfo) GetLastVerify() time.Time
- func (info *VerifyInfo) IsValid() bool
- func (info *VerifyInfo) SetVerifyResult(result *VerifyResult)
- type VerifyMetrics
- type VerifyOptions
- type VerifyProgress
- func (p *VerifyProgress) End(id string)
- func (p *VerifyProgress) Fix(id string)
- func (p *VerifyProgress) Fixing() []string
- func (p *VerifyProgress) GetProgress() float64
- func (p *VerifyProgress) GetStatus() VerifyStatus
- func (p *VerifyProgress) IsCompleted() bool
- func (p *VerifyProgress) MarshalJSON() ([]byte, error)
- func (p *VerifyProgress) Running() []string
- func (p *VerifyProgress) SetError(err any)
- func (p *VerifyProgress) SetMessage(msg string)
- func (p *VerifyProgress) Start(id string)
- func (p *VerifyProgress) UnmarshalJSON(data []byte) error
- func (p *VerifyProgress) UpdateProgress(current, invalid, fixed int32)
- func (p *VerifyProgress) WaitFix(id string)
- func (p *VerifyProgress) WaitFixing() []string
- type VerifyResult
- type VerifyStatus
- type VerifyTask
- type WgetDownloader
Constants ¶
const ( DefaultOptionLimit = 10 DefaultOptionSkip = 0 )
Variables ¶
var ( // ErrComicNotFound 漫画不存在 ErrComicNotFound = errwrap.New(3000, "comic not found") // ErrComicInvalid 漫画无效 ErrComicInvalid = errwrap.New(3001, "invalid comic") // ErrComicVerify 漫画验证失败 ErrComicVerify = errwrap.New(3002, "comic verify failed") // ErrComicDownload 漫画下载失败 ErrComicDownload = errwrap.New(3003, "comic download failed") // ErrComicDB 数据库操作失败 ErrComicDB = errwrap.New(3004, "comic database operation failed") // ErrComicPattern 无效的匹配模式 ErrComicPattern = errwrap.New(3005, "invalid comic pattern") // ErrTaskNotFound 任务不存在 ErrTaskNotFound = errwrap.New(3006, "task not found") // ErrArchiveAlreadyExists 归档文件已存在且一致 ErrArchiveAlreadyExists = errwrap.New(4000, "archive already exists") // ErrArchiveMD5Mismatch 归档文件MD5不匹配 ErrArchiveMD5Mismatch = errwrap.New(4001, "archive md5 mismatch") )
Functions ¶
Types ¶
type ArchiveMD5MismatchError ¶ added in v0.0.44
func (*ArchiveMD5MismatchError) Error ¶ added in v0.0.44
func (e *ArchiveMD5MismatchError) Error() string
type Comic ¶
type Comic interface {
// 基本信息
GetID() string
GetTitle() string
GetImages() []Image
Object() any
// 归档信息
GetArchivePath() string
// 状态相关
IsValid() bool
GetInvalidCount() int32
GetFixedCount() int32
GetLastVerify() time.Time
SetVerifyResult(result *VerifyResult)
MarshalJSON() ([]byte, error)
UnmarshalJSON(data []byte) error
}
Comic 漫画接口
type ComicFilter ¶
type ComicFilter struct {
ID *string `json:"id,omitempty"`
IDRangeLeft *int64 `json:"idRangeLeft,omitempty"`
IDRangeRight *int64 `json:"idRangeRight,omitempty"`
TitlePattern *string `json:"titlePattern,omitempty"`
PageMin *int64 `json:"pageMin,omitempty"`
PageMax *int64 `json:"pageMax,omitempty"`
Valid *bool `json:"valid,omitempty"`
HasValid *bool `json:"hasValid,omitempty"`
NotArchived *bool `json:"notArchived,omitempty"`
Limit int64 `json:"limit,omitempty"`
Skip int64 `json:"skip,omitempty"`
}
ComicFilter 漫画过滤器
func NewComicFilter ¶
func NewComicFilter(opts ...func(*ComicFilter)) *ComicFilter
func NewInvalidComicFilter ¶
func NewInvalidComicFilter(opts ...func(*ComicFilter)) *ComicFilter
func (*ComicFilter) GetLimit ¶ added in v0.0.44
func (filter *ComicFilter) GetLimit() *int64
func (*ComicFilter) SetHasValid ¶
func (filter *ComicFilter) SetHasValid(hasValid bool) *ComicFilter
func (*ComicFilter) SetID ¶
func (filter *ComicFilter) SetID(id string) *ComicFilter
func (*ComicFilter) SetIDRangeLeft ¶
func (filter *ComicFilter) SetIDRangeLeft(idRangeLeft int64) *ComicFilter
func (*ComicFilter) SetIDRangeRight ¶
func (filter *ComicFilter) SetIDRangeRight(idRangeRight int64) *ComicFilter
func (*ComicFilter) SetLimit ¶
func (filter *ComicFilter) SetLimit(limit int64) *ComicFilter
func (*ComicFilter) SetNotArchived ¶
func (filter *ComicFilter) SetNotArchived(notArchived bool) *ComicFilter
func (*ComicFilter) SetPageMax ¶
func (filter *ComicFilter) SetPageMax(pageMax int64) *ComicFilter
func (*ComicFilter) SetPageMin ¶
func (filter *ComicFilter) SetPageMin(pageMin int64) *ComicFilter
func (*ComicFilter) SetSkip ¶
func (filter *ComicFilter) SetSkip(skip int64) *ComicFilter
func (*ComicFilter) SetTitlePattern ¶
func (filter *ComicFilter) SetTitlePattern(pattern string) *ComicFilter
func (*ComicFilter) SetValid ¶
func (filter *ComicFilter) SetValid(valid bool) *ComicFilter
type ComicImpl ¶
type ComicImpl struct {
ID string `json:"id" bson:"_id"`
Title string `json:"title" bson:"title"`
Images []Image `json:"images" bson:"images"`
VerifyInfo `json:"verify" bson:"verify"`
}
ComicImpl Comic接口的默认实现
func NewComicImplByObject ¶
func (*ComicImpl) GetArchivePath ¶ added in v0.0.52
GetArchivePath 实现Comic接口(ComicImpl 无归档信息)
func (*ComicImpl) MarshalJSON ¶
MarshalJSON 实现Comic接口
func (*ComicImpl) UnmarshalJSON ¶
UnmarshalJSON 实现Comic接口
type ComicVerifier ¶
type ComicVerifier struct {
// contains filtered or unexported fields
}
ComicVerifier 漫画验证器
func NewComicVerifier ¶
func NewComicVerifier(ctx context.Context, storage Storage) (*ComicVerifier, error)
NewComicVerifier 创建漫画验证器
func (*ComicVerifier) CancelTask ¶
func (v *ComicVerifier) CancelTask(ctx context.Context, taskID string) error
CancelTask 取消验证任务
func (*ComicVerifier) GetTask ¶
func (v *ComicVerifier) GetTask(ctx context.Context, taskID string) (*VerifyTask, error)
GetTask 获取任务信息
func (*ComicVerifier) GetTaskProgress ¶
func (v *ComicVerifier) GetTaskProgress(taskID string) *VerifyProgress
GetTaskProgress 获取任务进度
func (*ComicVerifier) Start ¶
func (v *ComicVerifier) Start(ctx context.Context, opts *VerifyOptions) (string, error)
Start 开始验证任务
func (*ComicVerifier) StartSchedule ¶
func (v *ComicVerifier) StartSchedule(ctx context.Context, cfg *ScheduleConfig) error
StartSchedule 启动定时任务
type Downloader ¶
type Handler ¶
type Handler struct {
// contains filtered or unexported fields
}
Handler 处理comic相关的HTTP请求
func (*Handler) ArchiveComic ¶ added in v0.0.43
func (*Handler) CancelVerifyTask ¶
CancelVerifyTask 取消验证任务
func (*Handler) GetComicCoverPath ¶
GetComicCoverPath 获取漫画封面路径
func (*Handler) GetInvalidComics ¶
GetInvalidComics 获取无效漫画
func (*Handler) GetVerifyProgress ¶
GetVerifyProgress 获取验证进度
func (*Handler) GetVerifyTask ¶
GetVerifyTask 获取验证任务
func (*Handler) GetVerifyTasks ¶
GetVerifyTasks 列出所有验证任务
func (*Handler) RegisterRoutes ¶
RegisterRoutes 注册路由
func (*Handler) RestoreComic ¶ added in v0.0.43
func (*Handler) StartScheduleVerify ¶
StartScheduleVerify 启动定时任务
func (*Handler) StartVerifyTask ¶
StartVerifyTask 启动验证任务
type Image ¶
type Image struct {
ID string `json:"id" bson:"id"`
Path string `json:"path" bson:"path"`
URL string `json:"url" bson:"url"`
}
Image 图片信息
type MemoryStorage ¶
type MemoryStorage struct {
// contains filtered or unexported fields
}
MemoryStorage 内存存储实现
func (*MemoryStorage) Find ¶
func (m *MemoryStorage) Find(ctx context.Context, filter *ComicFilter) ([]Comic, error)
Find 实现Storage接口
func (*MemoryStorage) Save ¶
func (m *MemoryStorage) Save(ctx context.Context, comic Comic) error
AddComic 添加漫画数据
func (*MemoryStorage) SaveVerifyResult ¶
func (m *MemoryStorage) SaveVerifyResult(ctx context.Context, result *VerifyResult) error
SaveVerifyResult 实现Storage接口
type MetricsCollector ¶
type MetricsCollector struct {
// contains filtered or unexported fields
}
MetricsCollector 指标收集器
func (*MetricsCollector) AddProcessedFile ¶
func (c *MetricsCollector) AddProcessedFile(size int64, failed bool)
AddProcessedFile 添加处理文件
func (*MetricsCollector) GetMetrics ¶
func (c *MetricsCollector) GetMetrics() VerifyMetrics
GetMetrics 获取性能指标
func (*MetricsCollector) TaskFailed ¶
func (c *MetricsCollector) TaskFailed()
func (*MetricsCollector) TaskSubmitted ¶
func (c *MetricsCollector) TaskSubmitted()
AddProcessedTask 添加已处理的任务数
type Monitor ¶
type Monitor struct {
// contains filtered or unexported fields
}
Monitor 性能监控器
func NewMonitor ¶
NewMonitor 创建性能监控器
func (*Monitor) GetDuration ¶
func (*Monitor) GetPerformanceStats ¶
func (m *Monitor) GetPerformanceStats() *PerformanceStats
GetPerformanceStats 获取性能统计
func (*Monitor) GetResourceStats ¶
func (m *Monitor) GetResourceStats() *ResourceStats
GetResourceStats 获取资源统计
func (*Monitor) GetRetryQueue ¶
func (*Monitor) GetSkippedFiles ¶
func (*Monitor) GetStartTime ¶
type MonitorStats ¶
type MonitorStats struct {
StartTime time.Time `json:"startTime"` // 开始时间
Duration time.Duration `json:"duration"` // 运行时长
NumGoroutine int `json:"numGoroutine"` // 协程数量
NumCPU int `json:"numCpu"` // CPU 核心数
MemStats runtime.MemStats `json:"memStats"` // 内存统计
ProcessedMB float64 `json:"processedMb"` // 处理数据量(MB)
AverageSpeed float64 `json:"averageSpeed"` // 平均速度(MB/s)
CurrentSpeed float64 `json:"currentSpeed"` // 当前速度(MB/s)
TotalFiles int `json:"totalFiles"` // 总文件数
ProcessedFiles int `json:"processedFiles"` // 已处理文件数
FailedFiles int `json:"failedFiles"` // 失败文件数
CPUUsage float64 `json:"cpuUsage"` // CPU 使用率
MemoryUsage float64 `json:"memoryUsage"` // 内存使用率
DiskIO int64 `json:"diskIo"` // 磁盘 IO
NetworkIO int64 `json:"networkIo"` // 网络 IO
GCStats runtime.MemStats `json:"gcStats"` // GC 统计
RetryCount int `json:"retryCount"` // 重试计数
QueueLength int `json:"queueLength"` // 队列长度
}
MonitorStats 性能监控统计
type PerformanceStats ¶
type PerformanceStats struct {
CPUUsage float64 `json:"cpuUsage"` // CPU 使用率
MemoryUsage float64 `json:"memoryUsage"` // 内存使用率
DiskIO int64 `json:"diskIo"` // 磁盘 IO
NetworkIO int64 `json:"networkIo"` // 网络 IO
GCStats runtime.MemStats `json:"gcStats"` // GC 统计
ErrorCount int `json:"errorCount"` // 错误计数
RetryCount int `json:"retryCount"` // 重试计数
QueueLength int `json:"queueLength"` // 队列长度
}
PerformanceStats 性能统计类型
type ResourceStats ¶
type ResourceStats struct {
CPUTime time.Duration `json:"cpuTime"` // CPU 时间
MaxMemory uint64 `json:"maxMemory"` // 最大内存使用
DiskRead int64 `json:"diskRead"` // 磁盘读取量
DiskWrite int64 `json:"diskWrite"` // 磁盘写入量
NetworkRead int64 `json:"networkRead"` // 网络读取量
NetworkWrite int64 `json:"networkWrite"` // 网络写入量
}
ResourceStats 资源使用统计类型
type ScheduleConfig ¶
type ScheduleConfig struct {
Pattern string `json:"pattern"` // 标题匹配模式
Interval time.Duration `json:"interval"` // 检查间隔
AutoFix bool `json:"autoFix"` // 自动修复
GenDownList bool `json:"genDownList"` // 生成下载列表
RetryInterval time.Duration `json:"retryInterval"` // 重试间隔
Cron string `json:"cron"` // cron表达式
Options *VerifyOptions `json:"options"` // 验证选项
Active bool `json:"active"` // 是否激活
MaxRetry int `json:"maxRetry"` // 最大重试次数
RetryWait time.Duration `json:"retryWait"` // 重试等待时间
}
ScheduleConfig 定时任务配置
type Service ¶
type Service interface {
StartVerifyTask(ctx context.Context, opts *VerifyOptions) (string, error)
GetVerifyTask(ctx context.Context, taskID string) (*VerifyTask, error)
GetVerifyTasks(ctx context.Context) ([]*VerifyTask, error)
GetVerifyProgress(ctx context.Context, taskID string) (*VerifyProgress, error)
CancelVerifyTask(ctx context.Context, taskID string) error
StartScheduleVerify(ctx context.Context, cfg *ScheduleConfig) error
SearchComics(ctx context.Context, filter *ComicFilter) ([]Comic, error)
GetInvalidComics(ctx context.Context, filter *ComicFilter) ([]Comic, error)
GetComicInfo(ctx context.Context, id string) (Comic, error)
ArchiveComic(ctx context.Context, id string) error
RestoreComic(ctx context.Context, id string) error
}
type ServiceImpl ¶
type ServiceImpl struct {
// contains filtered or unexported fields
}
ServiceImpl 漫画服务
func (*ServiceImpl) ArchiveComic ¶ added in v0.0.43
func (s *ServiceImpl) ArchiveComic(ctx context.Context, id string) error
func (*ServiceImpl) CancelVerifyTask ¶
func (s *ServiceImpl) CancelVerifyTask(ctx context.Context, taskID string) error
CancelVerifyTask 取消验证任务
func (*ServiceImpl) GetComicInfo ¶
GetComicInfo 获取漫画信息
func (*ServiceImpl) GetInvalidComics ¶
func (s *ServiceImpl) GetInvalidComics(ctx context.Context, filter *ComicFilter) ([]Comic, error)
GetInvalidComics 获取所有无效漫画
func (*ServiceImpl) GetVerifyProgress ¶
func (s *ServiceImpl) GetVerifyProgress(ctx context.Context, taskID string) (*VerifyProgress, error)
GetVerifyProgress 获取验证进度
func (*ServiceImpl) GetVerifyTask ¶
func (s *ServiceImpl) GetVerifyTask(ctx context.Context, taskID string) (*VerifyTask, error)
GetVerifyTask 获取验证任务
func (*ServiceImpl) GetVerifyTasks ¶
func (s *ServiceImpl) GetVerifyTasks(ctx context.Context) ([]*VerifyTask, error)
GetVerifyTasks 获取验证任务列表
func (*ServiceImpl) RestoreComic ¶ added in v0.0.43
func (s *ServiceImpl) RestoreComic(ctx context.Context, id string) error
func (*ServiceImpl) SearchComics ¶
func (s *ServiceImpl) SearchComics(ctx context.Context, filter *ComicFilter) ([]Comic, error)
SearchComics 搜索漫画
func (*ServiceImpl) StartScheduleVerify ¶
func (s *ServiceImpl) StartScheduleVerify(ctx context.Context, cfg *ScheduleConfig) error
StartScheduleVerify 启动定时验证
func (*ServiceImpl) StartVerifyTask ¶
func (s *ServiceImpl) StartVerifyTask(ctx context.Context, opts *VerifyOptions) (string, error)
StartVerifyTask 启动验证任务
type Storage ¶
type Storage interface {
// 基本操作
// Save(ctx context.Context, comic Comic) error
Update(ctx context.Context, obj any) error
Get(ctx context.Context, id string) (Comic, error)
// Delete(ctx context.Context, id string) error
Find(ctx context.Context, filter *ComicFilter) ([]Comic, error)
FindTotal(ctx context.Context, filter *ComicFilter) (int64, error)
FindChannel(ctx context.Context, filter *ComicFilter) (chan Comic, error)
// 归档相关
ArchiveByID(ctx context.Context, id string) error
RestoreByID(ctx context.Context, id string) error
}
Storage 定义了漫画存储的接口
type VerifyImageResult ¶
type VerifyImageResult struct {
Path string `json:"path"` // 文件路径
Invalid bool `json:"invalid"` // 是否无效
Error error `json:"error"` // 错误信息
Info *imaging.ImageInfo `json:"info"` // 图片信息
}
VerifyImageResult 图片验证结果
type VerifyInfo ¶
type VerifyInfo struct {
Valid bool `json:"valid" bson:"valid"` // 图片是否全部正常
InvalidCount int32 `json:"invalidCount" bson:"invalidCount,omitempty"` // 损坏图片数量
InvalidSubsamplingCount int32 `json:"invalidSubsamplingCount" bson:"invalidSubsamplingCount,omitempty"` // 子采样图片数量
FixedCount int32 `json:"fixedCount" bson:"fixedCount,omitempty"` // 已修复图片数量
LastVerify time.Time `json:"lastVerify" bson:"lastVerify"` // 最后验证时间
}
func (*VerifyInfo) GetFixedCount ¶
func (info *VerifyInfo) GetFixedCount() int32
GetFixedCount 实现Comic接口
func (*VerifyInfo) GetInvalidCount ¶
func (info *VerifyInfo) GetInvalidCount() int32
GetInvalidCount 实现Comic接口
func (*VerifyInfo) GetInvalidSubsamplingCount ¶
func (info *VerifyInfo) GetInvalidSubsamplingCount() int32
GetInvalidSubsamplingCount 实现Comic接口
func (*VerifyInfo) GetLastVerify ¶
func (info *VerifyInfo) GetLastVerify() time.Time
GetLastVerify 实现Comic接口
func (*VerifyInfo) SetVerifyResult ¶
func (info *VerifyInfo) SetVerifyResult(result *VerifyResult)
SetVerifyResult 实现Comic接口
type VerifyMetrics ¶
type VerifyMetrics struct {
StartTime time.Time `json:"startTime"` // 开始时间
EndTime time.Time `json:"endTime"` // 结束时间
Duration time.Duration `json:"duration"` // 总耗时
TaskSubmitted int `json:"taskSubmitted"` // 已提交的任务数
TaskFailed int `json:"taskFailed"` // 失败的任务数
TotalFiles int `json:"totalFiles"` // 总文件数
ProcessedMB float64 `json:"processedMb"` // 处理的总大小(MB)
FailedFiles int `json:"failedFiles"` // 失败文件数
AverageSpeed float64 `json:"averageSpeed"` // 平均速度(MB/s)
}
VerifyMetrics 验证性能指标
type VerifyOptions ¶
type VerifyOptions struct {
ComicFilter
AutoFix bool `json:"autoFix"` // 是否自动修复
GenDownList bool `json:"genDownList"` // 是否生成下载列表
MaxWorkers int32 `json:"maxWorkers"` // 最大并发数
}
VerifyOptions 验证选项
type VerifyProgress ¶
type VerifyProgress struct {
TaskID string `json:"taskId"` // 任务ID
Total *atomic.Int32 `json:"total"` // 总数
Current *atomic.Int32 `json:"current"` // 当前进度
Invalid *atomic.Int32 `json:"invalid"` // 无效数
Fixed *atomic.Int32 `json:"fixed"` // 修复数
StartTime time.Time `json:"startTime"` // 开始时间
Status *atomic.Value `json:"status"` // 状态
Error error `json:"error"` // 错误信息
// contains filtered or unexported fields
}
VerifyProgress 验证进度
func NewVerifyProgress ¶
func NewVerifyProgress(taskID string) *VerifyProgress
NewVerifyProgress 创建新的进度跟踪器
func (*VerifyProgress) End ¶
func (p *VerifyProgress) End(id string)
func (*VerifyProgress) Fix ¶
func (p *VerifyProgress) Fix(id string)
func (*VerifyProgress) Fixing ¶
func (p *VerifyProgress) Fixing() []string
func (*VerifyProgress) GetProgress ¶
func (p *VerifyProgress) GetProgress() float64
GetProgress 获取进度百分比
func (*VerifyProgress) GetStatus ¶
func (p *VerifyProgress) GetStatus() VerifyStatus
GetStatus 获取检查状态
func (*VerifyProgress) MarshalJSON ¶
func (p *VerifyProgress) MarshalJSON() ([]byte, error)
MarshalJSON 自定义JSON序列化
func (*VerifyProgress) Running ¶
func (p *VerifyProgress) Running() []string
func (*VerifyProgress) SetMessage ¶
func (p *VerifyProgress) SetMessage(msg string)
SetMessage 设置最后消息
func (*VerifyProgress) Start ¶
func (p *VerifyProgress) Start(id string)
func (*VerifyProgress) UnmarshalJSON ¶
func (p *VerifyProgress) UnmarshalJSON(data []byte) error
UnmarshalJSON 自定义JSON反序列化
func (*VerifyProgress) UpdateProgress ¶
func (p *VerifyProgress) UpdateProgress(current, invalid, fixed int32)
UpdateProgress 更新进度
func (*VerifyProgress) WaitFix ¶
func (p *VerifyProgress) WaitFix(id string)
func (*VerifyProgress) WaitFixing ¶
func (p *VerifyProgress) WaitFixing() []string
type VerifyResult ¶
type VerifyResult struct {
ID string `json:"id"` // 结果ID
ComicID string `json:"comicId"` // 漫画ID
Valid bool `json:"valid"` // 是否有效
InvalidCount int32 `json:"invalidCount"` // 无效数量
InvalidSubsamplingCount int32 `json:"invalidSubsamplingCount"` // 无效子采样数量
FixedCount int32 `json:"fixedCount"` // 修复数量
Error error `json:"error"` // 错误信息
Timestamp time.Time `json:"timestamp"` // 时间戳
// contains filtered or unexported fields
}
VerifyResult 验证结果
type VerifyStatus ¶
type VerifyStatus string
VerifyStatus 验证状态
const ( VerifyStatusPending VerifyStatus = "pending" VerifyStatusRunning VerifyStatus = "running" VerifyStatusCompleted VerifyStatus = "completed" VerifyStatusError VerifyStatus = "error" VerifyStatusCanceled VerifyStatus = "canceled" )
type VerifyTask ¶
type VerifyTask struct {
ID string `json:"id"` // 任务ID
Progress *VerifyProgress `json:"progress"` // 进度
Cancel context.CancelFunc `json:"-"` // 取消函数
}
VerifyTask 验证任务
func (*VerifyTask) GetProgress ¶
func (t *VerifyTask) GetProgress() *VerifyProgress
GetProgress 获取任务进度
type WgetDownloader ¶
type WgetDownloader struct {
// contains filtered or unexported fields
}
WgetDownloader 使用wget的下载器