mirror of
https://github.com/simon-ding/polaris.git
synced 2026-02-06 23:21:00 +08:00
80 lines
1.9 KiB
Go
80 lines
1.9 KiB
Go
package engine
|
|
|
|
import (
|
|
"polaris/ent"
|
|
"polaris/log"
|
|
"polaris/pkg/prowlarr"
|
|
"strings"
|
|
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
const prowlarrPrefix = "Prowlarr_"
|
|
|
|
func (c *Engine) SyncProwlarrIndexers(apiKey, url string) error {
|
|
client := prowlarr.New(apiKey, url)
|
|
if ins, err := client.GetIndexers(); err != nil {
|
|
return errors.Wrap(err, "connect to prowlarr error")
|
|
} else {
|
|
var prowlarrNames = make(map[string]bool, len(ins))
|
|
for _, in := range ins {
|
|
prowlarrNames[in.Name] = true
|
|
}
|
|
all := c.db.GetAllIndexers()
|
|
for _, index := range all {
|
|
|
|
if index.Synced {
|
|
if !prowlarrNames[strings.TrimPrefix(index.Name, prowlarrPrefix)] {
|
|
c.db.DeleteIndexer(index.ID) //remove deleted indexers
|
|
}
|
|
}
|
|
}
|
|
|
|
for _, indexer := range ins {
|
|
if err := c.db.SaveIndexer(&ent.Indexers{
|
|
Disabled: indexer.Disabled,
|
|
Name: prowlarrPrefix + indexer.Name,
|
|
Priority: indexer.Priority,
|
|
SeedRatio: indexer.SeedRatio,
|
|
//Settings: indexer.Settings,
|
|
Implementation: "torznab",
|
|
APIKey: indexer.APIKey,
|
|
URL: indexer.URL,
|
|
TvSearch: indexer.TvSearch,
|
|
MovieSearch: indexer.MovieSearch,
|
|
Synced: true,
|
|
}); err != nil {
|
|
return errors.Wrap(err, "save prowlarr indexers")
|
|
}
|
|
log.Debugf("synced prowlarr indexer to db: %v", indexer.Name)
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (c *Engine) syncProwlarr() error {
|
|
p, err := c.db.GetProwlarrSetting()
|
|
if err != nil {
|
|
return errors.Wrap(err, "db")
|
|
}
|
|
if p.Disabled {
|
|
return nil
|
|
}
|
|
if err := c.SyncProwlarrIndexers(p.ApiKey, p.URL); err != nil {
|
|
return errors.Wrap(err, "sync prowlarr indexers")
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (c *Engine) DeleteAllProwlarrIndexers() error {
|
|
all := c.db.GetAllIndexers()
|
|
for _, index := range all {
|
|
if index.Synced {
|
|
c.db.DeleteIndexer(index.ID)
|
|
log.Debugf("success delete prowlarr indexer: %s", index.Name)
|
|
}
|
|
}
|
|
return nil
|
|
}
|