diff --git a/pkg/api/options.go b/pkg/api/options.go
index a50417ac8..c8f2e051c 100644
--- a/pkg/api/options.go
+++ b/pkg/api/options.go
@@ -238,6 +238,9 @@ func (i ConfigResource) WebService() *restful.WebService {
ws.Route(ws.PUT("/sites/limit_scraping/{site}").To(i.toggleLimitScraping).
Metadata(restfulspec.KeyOpenAPITags, tags))
+ ws.Route(ws.PUT("/sites/scrape_stash/{site}").To(i.toggleScrapeStash).
+ Metadata(restfulspec.KeyOpenAPITags, tags))
+
ws.Route(ws.POST("/scraper/force-site-update").To(i.forceSiteUpdate).
Metadata(restfulspec.KeyOpenAPITags, tags))
@@ -355,6 +358,9 @@ func (i ConfigResource) toggleLimitScraping(req *restful.Request, resp *restful.
i.toggleSiteField(req, resp, "LimitScraping")
}
+func (i ConfigResource) toggleScrapeStash(req *restful.Request, resp *restful.Response) {
+ i.toggleSiteField(req, resp, "ScrapeStash")
+}
func (i ConfigResource) toggleSiteField(req *restful.Request, resp *restful.Response, field string) {
db, _ := models.GetDB()
defer db.Close()
@@ -380,6 +386,9 @@ func (i ConfigResource) toggleSiteField(req *restful.Request, resp *restful.Resp
case "LimitScraping":
site.LimitScraping = !site.LimitScraping
db.Model(&models.Scene{}).Where("scraper_id = ?", site.ID).Update("limit_scraping", site.LimitScraping)
+ case "ScrapeStash":
+ site.ScrapeStash = !site.ScrapeStash
+ db.Model(&models.Scene{}).Where("scrape_stash = ?", site.ID).Update("scrape_stash", site.LimitScraping)
}
site.Save()
diff --git a/pkg/migrations/migrations.go b/pkg/migrations/migrations.go
index c6b7ddb64..a286afe35 100644
--- a/pkg/migrations/migrations.go
+++ b/pkg/migrations/migrations.go
@@ -820,6 +820,19 @@ func Migrate() {
return nil
},
},
+ {
+ ID: "0082-scrape-stash-flag",
+ Migrate: func(tx *gorm.DB) error {
+ type Site struct {
+ ScrapeStash bool `json:"scrape_stash" xbvrbackup:"scrape_stash"`
+ }
+ err := tx.AutoMigrate(Site{}).Error
+ if err != nil {
+ return err
+ }
+ return tx.Exec("update sites set scrape_stash = is_enabled").Error
+ },
+ },
// ===============================================================================================
// Put DB Schema migrations above this line and migrations that rely on the updated schema below
diff --git a/pkg/models/model_site.go b/pkg/models/model_site.go
index 8af24250d..64d9fd8b9 100644
--- a/pkg/models/model_site.go
+++ b/pkg/models/model_site.go
@@ -19,6 +19,7 @@ type Site struct {
LimitScraping bool `json:"limit_scraping" xbvrbackup:"limit_scraping"`
MasterSiteID string `json:"master_site_id" xbvrbackup:"master_site_id"`
MatchingParams string `json:"matching_params" gorm:"size:1000" xbvrbackup:"matching_params"`
+ ScrapeStash bool `json:"scrape_stash" xbvrbackup:"scrape_stash"`
}
func (i *Site) Save() error {
diff --git a/pkg/scrape/stashdb.go b/pkg/scrape/stashdb.go
index 634db8a01..ab1b2a89f 100644
--- a/pkg/scrape/stashdb.go
+++ b/pkg/scrape/stashdb.go
@@ -86,7 +86,7 @@ func StashDb() {
defer db.Close()
Config = models.BuildActorScraperRules()
- db.Where(&models.Site{IsEnabled: true}).Order("id").Find(&sites)
+ db.Where(&models.Site{ScrapeStash: true}).Order("id").Find(&sites)
for _, site := range sites {
tlog.Infof("Scraping stash studio %s", site.Name)
diff --git a/ui/src/store/optionsSites.js b/ui/src/store/optionsSites.js
index 74e13ea7a..af38261a5 100644
--- a/ui/src/store/optionsSites.js
+++ b/ui/src/store/optionsSites.js
@@ -20,6 +20,9 @@ const actions = {
async toggleLimitScraping ({ state }, params) {
state.items = await ky.put(`/api/options/sites/limit_scraping/${params.id}`, { json: {} }).json()
},
+ async toggleScrapeStash ({ state }, params) {
+ state.items = await ky.put(`/api/options/sites/scrape_stash/${params.id}`, { json: {} }).json()
+ },
}
export default {
diff --git a/ui/src/views/options/sections/OptionsSceneDataScrapers.vue b/ui/src/views/options/sections/OptionsSceneDataScrapers.vue
index 3b22e411d..086299bd5 100644
--- a/ui/src/views/options/sections/OptionsSceneDataScrapers.vue
+++ b/ui/src/views/options/sections/OptionsSceneDataScrapers.vue
@@ -50,6 +50,11 @@
+
+
+
+
+