MCPcopy Create free account
hub / github.com/Unpackerr/unpackerr / extractTrackedItem

Method extractTrackedItem

pkg/unpackerr/folder.go:308–350  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

306
307// extractTrackedItem starts an archive or folder's extraction after it hasn't been written to in a while.
308func (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

Callers 1

checkFolderStatsMethod · 0.95

Calls 9

updateQueueStatusMethod · 0.95
updateHistoryMethod · 0.95
getPasswordFromPathMethod · 0.95
getFileListFunction · 0.85
folderExcludeSuffixesFunction · 0.85
RemoveMethod · 0.80
PrintfMethod · 0.65
ErrorfMethod · 0.65

Tested by

no test coverage detected