MCPcopy Create free account
hub / github.com/krau/SaveAny-Bot / createTGFilesTask

Method createTGFilesTask

api/factory.go:229–283  ·  view source on GitHub ↗

createTGFilesTask 创建 Telegram 文件下载任务

(taskID string, createdAt time.Time, req *CreateTaskRequest, stor storage.Storage)

Source from the content-addressed store, hash-verified

227
228// createTGFilesTask 创建 Telegram 文件下载任务
229func (f *TaskFactory) createTGFilesTask(taskID string, createdAt time.Time, req *CreateTaskRequest, stor storage.Storage) (*CreateTaskResponse, error) {
230 var params TGFilesParams
231 if err := json.Unmarshal(req.Params, &params); err != nil {
232 return nil, fmt.Errorf("invalid params: %w", err)
233 }
234
235 if len(params.MessageLinks) == 0 {
236 return nil, fmt.Errorf("no message links provided")
237 }
238
239 // 提取文件
240 files, err := ExtractFilesFromLinks(f.ctx, params.MessageLinks)
241 if err != nil {
242 return nil, fmt.Errorf("failed to extract files: %w", err)
243 }
244
245 if len(files) == 0 {
246 return nil, fmt.Errorf("no files found in provided links")
247 }
248
249 var task core.Executable
250
251 if len(files) == 1 {
252 // 单个文件任务
253 tfileTask, err := tfile.NewTGFileTask(taskID, f.ctx, files[0], stor, req.Path, nil)
254 if err != nil {
255 return nil, fmt.Errorf("failed to create tfile task: %w", err)
256 }
257 task = tfileTask
258 } else {
259 // 批量文件任务
260 elems := make([]batchtfile.TaskElement, 0, len(files))
261 for _, file := range files {
262 elem, err := batchtfile.NewTaskElement(stor, req.Path, file)
263 if err != nil {
264 return nil, fmt.Errorf("failed to create task element: %w", err)
265 }
266 elems = append(elems, *elem)
267 }
268
269 task = batchtfile.NewBatchTGFileTask(taskID, f.ctx, elems, nil, true)
270 }
271
272 err = f.registerAndEnqueueTask(task, tasktype.TaskTypeTgfiles, req.Storage, req.Path, req.Webhook)
273 if err != nil {
274 return nil, err
275 }
276
277 return &CreateTaskResponse{
278 TaskID: taskID,
279 Type: tasktype.TaskTypeTgfiles,
280 Status: TaskStatusQueued,
281 CreatedAt: createdAt,
282 }, nil
283}
284
285// createTPHPicsTask 创建 Telegraph 图片下载任务
286func (f *TaskFactory) createTPHPicsTask(taskID string, createdAt time.Time, req *CreateTaskRequest, stor storage.Storage) (*CreateTaskResponse, error) {

Callers 1

CreateTaskMethod · 0.95

Calls 5

NewTGFileTaskFunction · 0.92
NewTaskElementFunction · 0.92
NewBatchTGFileTaskFunction · 0.92
ExtractFilesFromLinksFunction · 0.85

Tested by

no test coverage detected