Skip to content

Commit

Permalink
RefreshCooldownMinutes, ReplaceAllMetadata, ReplaceAllImages Options
Browse files Browse the repository at this point in the history
  • Loading branch information
SenorSmartyPants committed Jan 26, 2022
1 parent ca51b04 commit 9e01669
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 11 deletions.
10 changes: 10 additions & 0 deletions Jellyfin.Plugin.RefreshSparse/Configuration/PluginConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ public PluginConfiguration()
NameIsDate = false;
BadNames = string.Empty;
Pretend = true;
RefreshCooldownMinutes = 60;
// all is being overwritten currently in 10.8 regardless of these settings.
ReplaceAllImages = false;
ReplaceAllMetadata = false;
}

public int MaxDays { get; set; }
Expand All @@ -34,5 +38,11 @@ public PluginConfiguration()
public string BadNames { get; set; }

public bool Pretend { get; set; }

public int RefreshCooldownMinutes { get; set; }

public bool ReplaceAllImages { get; set; }

public bool ReplaceAllMetadata { get; set; }
}
}
25 changes: 24 additions & 1 deletion Jellyfin.Plugin.RefreshSparse/Configuration/configPage.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,12 @@
<div class="inputContainer">
<label class="inputLabel inputLabelUnfocused" for="MaxDays">Maximum days</label>
<input id="MaxDays" name="MaxDays" type="number" is="emby-input" min="-1" />
<div class="fieldDescription">-1 to disable episode age check</div>
<div class="fieldDescription">Max age of episode, based on premiere date. -1 to disable</div>
</div>
<div class="inputContainer">
<label class="inputLabel inputLabelUnfocused" for="RefreshCooldownMinutes">Refresh cooldown</label>
<input id="RefreshCooldownMinutes" name="RefreshCooldownMinutes" type="number" is="emby-input" min="-1" />
<div class="fieldDescription">Don't refresh episode if already refreshed within X minutes. -1 to disable</div>
</div>
<div class="inputContainer">
<label class="inputLabel inputLabelUnfocused" for="MinimumProviderIds">Minimum provider IDs</label>
Expand Down Expand Up @@ -48,6 +53,18 @@
<input id="BadNames" name="BadNames" type="text" is="emby-input" />
<div class="fieldDescription">| separated list of placeholder episode names. Example "Episode |TBA"</div>
</div>
<div class="checkboxContainer checkboxContainer-withDescription">
<label class="emby-checkbox-label">
<input id="ReplaceAllMetadata" name="ReplaceAllMetadata" type="checkbox" is="emby-checkbox" />
<span>Replace all metadata</span>
</label>
</div>
<div class="checkboxContainer checkboxContainer-withDescription">
<label class="emby-checkbox-label">
<input id="ReplaceAllImages" name="ReplaceAllImages" type="checkbox" is="emby-checkbox" />
<span>Replace all images</span>
</label>
</div>
<div class="checkboxContainer checkboxContainer-withDescription">
<label class="emby-checkbox-label">
<input id="Pretend" name="Pretend" type="checkbox" is="emby-checkbox" />
Expand Down Expand Up @@ -79,6 +96,9 @@
document.querySelector('#NameIsDate').checked = config.NameIsDate;
document.querySelector('#BadNames').value = config.BadNames;
document.querySelector('#Pretend').checked = config.Pretend;
document.querySelector('#RefreshCooldownMinutes').value = config.RefreshCooldownMinutes;
document.querySelector('#ReplaceAllImages').checked = config.ReplaceAllImages;
document.querySelector('#ReplaceAllMetadata').checked = config.ReplaceAllMetadata;
Dashboard.hideLoadingMsg();
});
});
Expand All @@ -95,6 +115,9 @@
config.NameIsDate = document.querySelector('#NameIsDate').checked;
config.BadNames = document.querySelector('#BadNames').value;
config.Pretend = document.querySelector('#Pretend').checked;
config.RefreshCooldownMinutes = document.querySelector('#RefreshCooldownMinutes').value;
config.ReplaceAllImages = document.querySelector('#ReplaceAllImages').checked;
config.ReplaceAllMetadata = document.querySelector('#ReplaceAllMetadata').checked;
ApiClient.updatePluginConfiguration(RefreshSparseConfig.pluginUniqueId, config).then(function (result) {
Dashboard.processPluginConfigurationUpdateResult(result);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,24 +100,20 @@ public async Task Execute(CancellationToken cancellationToken, IProgress<double>
|| i.ProviderIds.Count < config.MinimumProviderIds).ToList();
// DateLastRefreshed - don't hammer metadata provider, won't be new info

// just get missing, all is being overwritten currently in 10.8 regardless of these settings.
var replaceAllMetadata = false;
var replaceAllImages = false;

// when called from menu, these are always full. Unless scan for new/updated files
// when called from item refresh metadata menu, these are always full. Unless scan for only new/updated files
var metadataRefreshMode = MetadataRefreshMode.FullRefresh;
var imageRefreshMode = MetadataRefreshMode.FullRefresh;

var refreshOptions = new MetadataRefreshOptions(new DirectoryService(_fileSystem))
{
MetadataRefreshMode = metadataRefreshMode,
ImageRefreshMode = imageRefreshMode,
ReplaceAllImages = replaceAllImages,
ReplaceAllMetadata = replaceAllMetadata,
ReplaceAllImages = config.ReplaceAllImages,
ReplaceAllMetadata = config.ReplaceAllMetadata,
ForceSave = metadataRefreshMode == MetadataRefreshMode.FullRefresh
|| imageRefreshMode == MetadataRefreshMode.FullRefresh
|| replaceAllImages
|| replaceAllMetadata,
|| config.ReplaceAllImages
|| config.ReplaceAllMetadata,
IsAutomated = false
};

Expand All @@ -143,7 +139,7 @@ public async Task Execute(CancellationToken cancellationToken, IProgress<double>
{
LogInfo(episode);
var minutesSinceRefreshed = (DateTime.UtcNow - episode.DateLastRefreshed).TotalMinutes;
if (minutesSinceRefreshed < 60)
if (config.RefreshCooldownMinutes > 0 && minutesSinceRefreshed < config.RefreshCooldownMinutes)
{
_logger.LogInformation(" Skipping refresh: episode was refreshed {X:N0} minutes ago", minutesSinceRefreshed );
}
Expand Down

0 comments on commit 9e01669

Please sign in to comment.