extractTrackedItem starts an archive or folder's extraction after it hasn't been written to in a while.
(name string, folder *Folder, now time.Time)
| 306 | |
| 307 | // extractTrackedItem starts an archive or folder's extraction after it hasn't been written to in a while. |
| 308 | func (u *Unpackerr) extractTrackedItem(name string, folder *Folder, now time.Time) { |
| 309 | u.folders.Remove(name) // stop the fs watcher(s). |
| 310 | // update status. |
| 311 | u.folders.Folders[name].updated = now |
| 312 | u.folders.Folders[name].status = QUEUED |
| 313 | |
| 314 | // Do not extract r00 file if rar file with same name exists. |
| 315 | if strings.HasSuffix(strings.ToLower(name), ".r00") && |
| 316 | xtractr.CheckR00ForRarFile(getFileList(filepath.Dir(name)), filepath.Base(name)) { |
| 317 | u.Printf("[Folder] Removing tracked item without extraction: %v (rar file exists)", name) |
| 318 | u.folders.Folders[name].status = EXTRACTEDNOTHING |
| 319 | |
| 320 | return |
| 321 | } |
| 322 | |
| 323 | // create a queue counter in the main history; add to u.Map and send webhook for a new folder. |
| 324 | item := u.updateQueueStatus(&newStatus{Name: name, Status: QUEUED}, u.folders.Folders[name].updated, true) |
| 325 | u.updateHistory(FolderString + ": " + name) |
| 326 | |
| 327 | exclude := folderExcludeSuffixes(name, folder.config) |
| 328 | |
| 329 | // extract it. |
| 330 | queueSize, err := u.Extract(&xtractr.Xtract{ |
| 331 | Password: u.getPasswordFromPath(name), |
| 332 | Passwords: u.Passwords, |
| 333 | Name: name, |
| 334 | Filter: xtractr.Filter{Path: name, ExcludeSuffix: exclude}, |
| 335 | TempFolder: !folder.config.MoveBack, |
| 336 | ExtractTo: folder.config.ExtractPath, |
| 337 | DeleteOrig: false, |
| 338 | CBChannel: u.folders.Updates, |
| 339 | CBFunction: nil, |
| 340 | Progress: u.progressUpdateCallback(item), |
| 341 | LogFile: !folder.config.DisableLog, |
| 342 | DisableRecursion: folder.config.DisableRecursion, |
| 343 | }) |
| 344 | if err != nil { |
| 345 | u.Errorf("[ERROR] %v", err) |
| 346 | return |
| 347 | } |
| 348 | |
| 349 | u.Printf("[Folder] Queued: %s, queue size: %d", name, queueSize) |
| 350 | } |
| 351 | |
| 352 | // folderExcludeSuffixes returns archive suffixes to ignore when scanning for items to extract. |
| 353 | // For watched archive files with disable_recursion enabled, exclude all archive suffixes so |
no test coverage detected