Support setting scrapers path in UI (#2124)

* Support setting scrapers path in UI
* Refresh scrapers when scrapers path changes
This commit is contained in:
WithoutPants
2021-12-20 12:00:26 +11:00
committed by GitHub
parent b0cf04865a
commit bdfb8ad567
6 changed files with 43 additions and 16 deletions

View File

@@ -7,6 +7,7 @@ fragment ConfigGeneralData on ConfigGeneralResult {
databasePath
generatedPath
metadataPath
scrapersPath
cachePath
calculateMD5
videoFileNamingAlgorithm

View File

@@ -41,6 +41,8 @@ input ConfigGeneralInput {
generatedPath: String
"""Path to import/export files"""
metadataPath: String
"""Path to scrapers"""
scrapersPath: String
"""Path to cache"""
cachePath: String
"""Whether to calculate MD5 checksums for scene video files"""

View File

@@ -57,6 +57,20 @@ func (r *mutationResolver) ConfigureGeneral(ctx context.Context, input models.Co
return nil
}
validateDir := func(key string, value string, optional bool) error {
if err := checkConfigOverride(config.Metadata); err != nil {
return err
}
if !optional || value != "" {
if err := utils.EnsureDir(value); err != nil {
return err
}
}
return nil
}
existingDBPath := c.GetDatabasePath()
if input.DatabasePath != nil && existingDBPath != *input.DatabasePath {
if err := checkConfigOverride(config.Database); err != nil {
@@ -72,41 +86,39 @@ func (r *mutationResolver) ConfigureGeneral(ctx context.Context, input models.Co
existingGeneratedPath := c.GetGeneratedPath()
if input.GeneratedPath != nil && existingGeneratedPath != *input.GeneratedPath {
if err := checkConfigOverride(config.Generated); err != nil {
if err := validateDir(config.Generated, *input.GeneratedPath, false); err != nil {
return makeConfigGeneralResult(), err
}
if err := utils.EnsureDir(*input.GeneratedPath); err != nil {
c.Set(config.Generated, input.GeneratedPath)
}
refreshScraperCache := false
existingScrapersPath := c.GetScrapersPath()
if input.ScrapersPath != nil && existingScrapersPath != *input.ScrapersPath {
if err := validateDir(config.ScrapersPath, *input.ScrapersPath, false); err != nil {
return makeConfigGeneralResult(), err
}
c.Set(config.Generated, input.GeneratedPath)
refreshScraperCache = true
c.Set(config.ScrapersPath, input.ScrapersPath)
}
existingMetadataPath := c.GetMetadataPath()
if input.MetadataPath != nil && existingMetadataPath != *input.MetadataPath {
if err := checkConfigOverride(config.Metadata); err != nil {
if err := validateDir(config.Metadata, *input.MetadataPath, true); err != nil {
return makeConfigGeneralResult(), err
}
if *input.MetadataPath != "" {
if err := utils.EnsureDir(*input.MetadataPath); err != nil {
return makeConfigGeneralResult(), err
}
}
c.Set(config.Metadata, input.MetadataPath)
}
existingCachePath := c.GetCachePath()
if input.CachePath != nil && existingCachePath != *input.CachePath {
if err := checkConfigOverride(config.Metadata); err != nil {
if err := validateDir(config.Cache, *input.CachePath, true); err != nil {
return makeConfigGeneralResult(), err
}
if *input.CachePath != "" {
if err := utils.EnsureDir(*input.CachePath); err != nil {
return makeConfigGeneralResult(), err
}
}
c.Set(config.Cache, input.CachePath)
}
@@ -235,7 +247,6 @@ func (r *mutationResolver) ConfigureGeneral(ctx context.Context, input models.Co
initialiseCustomImages()
}
refreshScraperCache := false
if input.ScraperUserAgent != nil {
c.Set(config.ScraperUserAgent, input.ScraperUserAgent)
refreshScraperCache = true

View File

@@ -7,6 +7,7 @@
* Added forward jump 10 second button to video player. ([#1973](https://github.com/stashapp/stash/pull/1973))
### 🎨 Improvements
* Added support for setting scrapers path in the settings page. ([#2124](https://github.com/stashapp/stash/pull/2124))
* Added keyboard shortcuts to hide scene page sidebar and scene scrubber. ([#2099](https://github.com/stashapp/stash/pull/2099))
* Overhauled, restructured and added auto-save to the settings pages. ([#2086](https://github.com/stashapp/stash/pull/2086))
* Include path and hashes in destroy scene/image/gallery post hook input. ([#2102](https://github.com/stashapp/stash/pull/2102/files))

View File

@@ -116,6 +116,14 @@ export const SettingsConfigurationPanel: React.FC = () => {
onChange={(v) => saveGeneral({ generatedPath: v })}
/>
<StringSetting
id="scrapers-path"
headingID="config.general.scrapers_path.heading"
subHeadingID="config.general.scrapers_path.description"
value={general.scrapersPath ?? undefined}
onChange={(v) => saveGeneral({ scrapersPath: v })}
/>
<StringSetting
id="metadata-path"
headingID="config.general.metadata_path.heading"

View File

@@ -267,6 +267,10 @@
"preview_generation": "Preview Generation",
"scraper_user_agent": "Scraper User Agent",
"scraper_user_agent_desc": "User-Agent string used during scrape http requests",
"scrapers_path": {
"description": "Directory location of scraper configuration files",
"heading": "Scrapers Path"
},
"scraping": "Scraping",
"sqlite_location": "File location for the SQLite database (requires restart)",
"video_ext_desc": "Comma-delimited list of file extensions that will be identified as videos.",