Automatic media analysis for new items
This commit is contained in:
@@ -55,12 +55,13 @@ type TorrentManager struct {
|
||||
|
||||
OnceDoneBin mapset.Set[string]
|
||||
DeleteOnCompletionBin cmap.ConcurrentMap[string, string]
|
||||
hasFFprobe bool
|
||||
}
|
||||
|
||||
// NewTorrentManager creates a new torrent manager
|
||||
// it will fetch all torrents and their info in the background
|
||||
// and store them in-memory and cached in files
|
||||
func NewTorrentManager(cfg config.ConfigInterface, api *realdebrid.RealDebrid, workerPool *ants.Pool, log, repairLog *logutil.Logger) *TorrentManager {
|
||||
func NewTorrentManager(cfg config.ConfigInterface, api *realdebrid.RealDebrid, workerPool *ants.Pool, hasFFprobe bool, log, repairLog *logutil.Logger) *TorrentManager {
|
||||
t := &TorrentManager{
|
||||
requiredVersion: "0.10.0",
|
||||
|
||||
@@ -87,6 +88,7 @@ func NewTorrentManager(cfg config.ConfigInterface, api *realdebrid.RealDebrid, w
|
||||
|
||||
OnceDoneBin: mapset.NewSet[string](),
|
||||
DeleteOnCompletionBin: cmap.New[string](),
|
||||
hasFFprobe: hasFFprobe,
|
||||
}
|
||||
|
||||
t.initializeBins()
|
||||
|
||||
@@ -27,6 +27,7 @@ func (t *TorrentManager) refreshTorrents(initialRun bool) {
|
||||
var mergeChan = make(chan *Torrent, len(instances))
|
||||
|
||||
allTorrents, _ := t.DirectoryMap.Get(INT_ALL)
|
||||
oldKeys := mapset.NewSet[string](allTorrents.Keys()...)
|
||||
|
||||
freshIDs := mapset.NewSet[string]()
|
||||
freshAccessKeys := mapset.NewSet[string]()
|
||||
@@ -87,9 +88,20 @@ func (t *TorrentManager) refreshTorrents(initialRun bool) {
|
||||
t.assignDirectory(mainTorrent, !initialRun)
|
||||
}
|
||||
|
||||
// new torrents
|
||||
t.workerPool.Submit(func() {
|
||||
if !t.hasFFprobe {
|
||||
return
|
||||
}
|
||||
freshAccessKeys.Difference(oldKeys).Each(func(accessKey string) bool {
|
||||
torrent, _ := allTorrents.Get(accessKey)
|
||||
t.applyMediaInfoDetails(torrent)
|
||||
return false
|
||||
})
|
||||
})
|
||||
|
||||
// removed torrents
|
||||
oldPlusNewKeys := mapset.NewSet[string](allTorrents.Keys()...)
|
||||
oldPlusNewKeys.Difference(freshAccessKeys).Each(func(accessKey string) bool {
|
||||
oldKeys.Difference(freshAccessKeys).Each(func(accessKey string) bool {
|
||||
t.Delete(accessKey, false)
|
||||
return false
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user