Immediate cleanup to prevent inconsistencies
This commit is contained in:
@@ -15,6 +15,7 @@ import (
|
||||
const (
|
||||
ALL_TORRENTS = "__all__"
|
||||
UNPLAYABLE_TORRENTS = "__unplayable__"
|
||||
DUMPED_TORRENTS = "__dump__"
|
||||
DOWNLOADS = "__downloads__"
|
||||
)
|
||||
|
||||
@@ -42,7 +43,7 @@ func (z *ZurgConfigV1) GetVersion() string {
|
||||
}
|
||||
|
||||
func (z *ZurgConfigV1) GetDirectories() []string {
|
||||
rootDirectories := make([]string, len(z.Directories)+2)
|
||||
rootDirectories := make([]string, len(z.Directories)+3)
|
||||
i := 0
|
||||
for directory := range z.Directories {
|
||||
rootDirectories[i] = directory
|
||||
@@ -50,6 +51,7 @@ func (z *ZurgConfigV1) GetDirectories() []string {
|
||||
}
|
||||
rootDirectories[i] = ALL_TORRENTS
|
||||
rootDirectories[i+1] = UNPLAYABLE_TORRENTS
|
||||
rootDirectories[i+2] = DUMPED_TORRENTS
|
||||
return rootDirectories
|
||||
}
|
||||
|
||||
|
||||
19
internal/torrent/dump.go
Normal file
19
internal/torrent/dump.go
Normal file
@@ -0,0 +1,19 @@
|
||||
package torrent
|
||||
|
||||
import "github.com/debridmediamanager/zurg/internal/config"
|
||||
|
||||
func (t *TorrentManager) loadDumpedTorrents() {
|
||||
// TODO: Paywall
|
||||
count := 0
|
||||
t.getTorrentFiles("data").Each(func(filePath string) bool {
|
||||
torrent := t.readTorrentFromFile(filePath)
|
||||
if torrent != nil {
|
||||
accessKey := t.GetKey(torrent)
|
||||
torrents, _ := t.DirectoryMap.Get(config.DUMPED_TORRENTS)
|
||||
torrents.Set(accessKey, torrent)
|
||||
count++
|
||||
}
|
||||
return false
|
||||
})
|
||||
t.log.Infof("Loaded %d dumped torrents", count)
|
||||
}
|
||||
@@ -91,8 +91,12 @@ func NewTorrentManager(cfg config.ConfigInterface, api *realdebrid.RealDebrid, r
|
||||
t.initializeDirectoryMaps()
|
||||
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(2)
|
||||
wg.Add(3)
|
||||
|
||||
t.workerPool.Submit(func() {
|
||||
defer wg.Done()
|
||||
t.loadDumpedTorrents()
|
||||
})
|
||||
t.workerPool.Submit(func() {
|
||||
defer wg.Done()
|
||||
|
||||
@@ -417,8 +421,10 @@ func (t *TorrentManager) StartDumpJob() {
|
||||
select {
|
||||
case <-dumpTicker.C:
|
||||
t.dumpTorrents()
|
||||
t.loadDumpedTorrents()
|
||||
case <-t.DumpTrigger:
|
||||
t.dumpTorrents()
|
||||
t.loadDumpedTorrents()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -79,6 +79,10 @@ func (t *TorrentManager) refreshTorrents() []string {
|
||||
})
|
||||
}
|
||||
|
||||
t.workerPool.Submit(func() {
|
||||
t.cleanupBins(freshIDs)
|
||||
})
|
||||
|
||||
wg.Wait()
|
||||
close(mergeChan)
|
||||
|
||||
@@ -136,8 +140,6 @@ func (t *TorrentManager) refreshTorrents() []string {
|
||||
}
|
||||
return false
|
||||
})
|
||||
|
||||
t.cleanupBins(freshIDs)
|
||||
})
|
||||
|
||||
return updatedPaths.ToSlice()
|
||||
|
||||
Reference in New Issue
Block a user