comic

package
v0.0.55 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 4, 2026 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultOptionLimit = 10
	DefaultOptionSkip  = 0
)

Variables

View Source
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

func NewDownloader

func NewDownloader() *downloader

NewDownloader 创建下载器

Types

type ArchiveMD5MismatchError added in v0.0.44

type ArchiveMD5MismatchError struct {
	Expected string
	Actual   string
}

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 漫画接口

func NewComic

func NewComic(id, title string, images []Image) Comic

NewComic 创建新的漫画实例

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 NewComicImplByObject(obj any) (*ComicImpl, error)

func (*ComicImpl) GetArchivePath added in v0.0.52

func (c *ComicImpl) GetArchivePath() string

GetArchivePath 实现Comic接口(ComicImpl 无归档信息)

func (*ComicImpl) GetID

func (c *ComicImpl) GetID() string

GetID 实现Comic接口

func (*ComicImpl) GetImages

func (c *ComicImpl) GetImages() []Image

GetImages 实现Comic接口

func (*ComicImpl) GetTitle

func (c *ComicImpl) GetTitle() string

GetTitle 实现Comic接口

func (*ComicImpl) MarshalJSON

func (c *ComicImpl) MarshalJSON() ([]byte, error)

MarshalJSON 实现Comic接口

func (*ComicImpl) Object

func (c *ComicImpl) Object() any

Object 实现Comic接口

func (*ComicImpl) UnmarshalJSON

func (c *ComicImpl) UnmarshalJSON(data []byte) error

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) Close

func (v *ComicVerifier) Close() error

Close 关闭验证器

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) GetTasks

func (v *ComicVerifier) GetTasks() []*VerifyTask

GetTasks 获取所有任务

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 Downloader interface {
	Download(ctx context.Context, url, path string) error
}

type Handler

type Handler struct {
	// contains filtered or unexported fields
}

Handler 处理comic相关的HTTP请求

func NewHandler

func NewHandler(ctx context.Context, service Service) *Handler

NewHandler 创建处理器实例

func (*Handler) ArchiveComic added in v0.0.43

func (h *Handler) ArchiveComic(c *gin.Context)

func (*Handler) CancelVerifyTask

func (h *Handler) CancelVerifyTask(c *gin.Context)

CancelVerifyTask 取消验证任务

func (*Handler) GetComicCoverPath

func (h *Handler) GetComicCoverPath(c *gin.Context)

GetComicCoverPath 获取漫画封面路径

func (*Handler) GetComicInfo

func (h *Handler) GetComicInfo(c *gin.Context)

GetComicInfo 获取漫画信息

func (*Handler) GetInvalidComics

func (h *Handler) GetInvalidComics(c *gin.Context)

GetInvalidComics 获取无效漫画

func (*Handler) GetVerifyProgress

func (h *Handler) GetVerifyProgress(c *gin.Context)

GetVerifyProgress 获取验证进度

func (*Handler) GetVerifyTask

func (h *Handler) GetVerifyTask(c *gin.Context)

GetVerifyTask 获取验证任务

func (*Handler) GetVerifyTasks

func (h *Handler) GetVerifyTasks(c *gin.Context)

GetVerifyTasks 列出所有验证任务

func (*Handler) RegisterRoutes

func (h *Handler) RegisterRoutes(r gin.IRouter)

RegisterRoutes 注册路由

func (*Handler) RestoreComic added in v0.0.43

func (h *Handler) RestoreComic(c *gin.Context)

func (*Handler) SearchComics

func (h *Handler) SearchComics(c *gin.Context)

SearchComics 搜索漫画

func (*Handler) StartScheduleVerify

func (h *Handler) StartScheduleVerify(c *gin.Context)

StartScheduleVerify 启动定时任务

func (*Handler) StartVerifyTask

func (h *Handler) StartVerifyTask(c *gin.Context)

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 NewMemoryStorage

func NewMemoryStorage() *MemoryStorage

NewMemoryStorage 创建内存存储

func (*MemoryStorage) Find

func (m *MemoryStorage) Find(ctx context.Context, filter *ComicFilter) ([]Comic, error)

Find 实现Storage接口

func (*MemoryStorage) Get

func (m *MemoryStorage) Get(ctx context.Context, id string) (Comic, error)

Get 实现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 NewMetricsCollector

func NewMetricsCollector() *MetricsCollector

NewMetricsCollector 创建指标收集器

func (*MetricsCollector) AddProcessedFile

func (c *MetricsCollector) AddProcessedFile(size int64, failed bool)

AddProcessedFile 添加处理文件

func (*MetricsCollector) GetMetrics

func (c *MetricsCollector) GetMetrics() VerifyMetrics

GetMetrics 获取性能指标

func (*MetricsCollector) Reset

func (c *MetricsCollector) Reset()

Reset 重置指标

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

func NewMonitor(ctx context.Context, metrics *MetricsCollector, interval time.Duration) *Monitor

NewMonitor 创建性能监控器

func (*Monitor) GetCheckpoints

func (m *Monitor) GetCheckpoints() []string

添加获取方法

func (*Monitor) GetDuration

func (m *Monitor) GetDuration() time.Duration

func (*Monitor) GetPerformanceStats

func (m *Monitor) GetPerformanceStats() *PerformanceStats

GetPerformanceStats 获取性能统计

func (*Monitor) GetResourceStats

func (m *Monitor) GetResourceStats() *ResourceStats

GetResourceStats 获取资源统计

func (*Monitor) GetRetryQueue

func (m *Monitor) GetRetryQueue() []string

func (*Monitor) GetSkippedFiles

func (m *Monitor) GetSkippedFiles() []string

func (*Monitor) GetStartTime

func (m *Monitor) GetStartTime() time.Time

func (*Monitor) GetStats

func (m *Monitor) GetStats() MonitorStats

GetStats 获取监控统计

func (*Monitor) SaveStats

func (m *Monitor) SaveStats(path string) error

SaveStats 保存监控统计

func (*Monitor) Start

func (m *Monitor) Start()

Start 启动监控

func (*Monitor) Stop

func (m *Monitor) Stop()

Stop 停止监控

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
}

func NewService

func NewService(ctx context.Context, storage Storage) (Service, error)

NewService 创建漫画服务

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

func (s *ServiceImpl) GetComicInfo(ctx context.Context, id string) (Comic, error)

GetComicInfo 获取漫画信息

func (*ServiceImpl) GetInvalidComics

func (s *ServiceImpl) GetInvalidComics(ctx context.Context, filter *ComicFilter) ([]Comic, error)

GetInvalidComics 获取所有无效漫画

func (*ServiceImpl) GetTask

func (s *ServiceImpl) GetTask(taskID string) *VerifyTask

GetTask 获取任务

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) IsValid

func (info *VerifyInfo) IsValid() bool

IsValid 实现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) IsCompleted

func (p *VerifyProgress) IsCompleted() bool

IsCompleted 检查是否完成

func (*VerifyProgress) MarshalJSON

func (p *VerifyProgress) MarshalJSON() ([]byte, error)

MarshalJSON 自定义JSON序列化

func (*VerifyProgress) Running

func (p *VerifyProgress) Running() []string

func (*VerifyProgress) SetError

func (p *VerifyProgress) SetError(err any)

SetError 设置错误信息

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) Done

func (t *VerifyTask) Done()

Done 完成任务

func (*VerifyTask) GetProgress

func (t *VerifyTask) GetProgress() *VerifyProgress

GetProgress 获取任务进度

type WgetDownloader

type WgetDownloader struct {
	// contains filtered or unexported fields
}

WgetDownloader 使用wget的下载器

func NewWgetDownloader

func NewWgetDownloader() *WgetDownloader

NewWgetDownloader 创建下载器

func (*WgetDownloader) Download

func (d *WgetDownloader) Download(ctx context.Context, url, path string) error

Download 使用wget下载文件

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL