Updated Days unwatched to stale media cutoff for clearer messaging. Also improved logging to tell you the names of the movies and series that are flagged as stale
This commit is contained in:
@@ -20,9 +20,9 @@
|
||||
<div class="fieldDescription">The api key used by your sonarr instance</div>
|
||||
</div>
|
||||
<div class="inputContainer">
|
||||
<label class="inputLabel inputLabelUnfocused" for="DaysUnwatched">Days Unwatched</label>
|
||||
<input id="DaysUnwatched" name="DaysUnwatched" type="number" is="emby-input" style="width: 20%;"/>
|
||||
<div class="fieldDescription">How many days to wait before deleting unwatched media</div>
|
||||
<label class="inputLabel inputLabelUnfocused" for="StaleMediaCutoff">Stale Media Cutoff</label>
|
||||
<input id="StaleMediaCutoff" name="StaleMediaCutoff" type="number" is="emby-input" style="width: 20%;"/>
|
||||
<div class="fieldDescription">How many days to wait before marking files as stale</div>
|
||||
</div>
|
||||
<!-- <div class="selectContainer">
|
||||
<label class="selectLabel" for="Options">Several Options</label>
|
||||
@@ -70,7 +70,7 @@
|
||||
// document.querySelector('#AString').value = config.AString;
|
||||
document.querySelector('#RadarrAPIKey').value = config.RadarrAPIKey;
|
||||
document.querySelector('#SonarrAPIKey').value = config.SonarrAPIKey;
|
||||
document.querySelector('#DaysUnwatched').value = config.DaysUnwatched;
|
||||
document.querySelector('#StaleMediaCutoff').value = config.StaleMediaCutoff;
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
});
|
||||
@@ -85,7 +85,7 @@
|
||||
// config.AString = document.querySelector('#AString').value;
|
||||
config.RadarrAPIKey = document.querySelector('#RadarrAPIKey').value;
|
||||
config.SonarrAPIKey = document.querySelector('#SonarrAPIKey').value;
|
||||
config.DaysUnwatched = document.querySelector('#DaysUnwatched').value;
|
||||
config.StaleMediaCutoff = document.querySelector('#StaleMediaCutoff').value;
|
||||
ApiClient.updatePluginConfiguration(MediaCleanerConfig.pluginUniqueId, config).then(function (result) {
|
||||
Dashboard.processPluginConfigurationUpdateResult(result);
|
||||
});
|
||||
|
||||
@@ -61,14 +61,25 @@ public sealed class StaleMediaTask : IScheduledTask
|
||||
|
||||
_logger.LogInformation("Total items found: {AllItems}", allItems);
|
||||
|
||||
List<BaseItem> shows = [.. allItems.Where(item => item.GetBaseItemKind() == BaseItemKind.Series)];
|
||||
List<BaseItem> series = [.. allItems.Where(item => item.GetBaseItemKind() == BaseItemKind.Series)];
|
||||
List<BaseItem> movies = [.. allItems.Where(item => item.GetBaseItemKind() == BaseItemKind.Movie && item.UserData.Count > 0)];
|
||||
|
||||
List<BaseItem> staleEpisodes = [.. shows.SelectMany(GetStaleEpisodes)];
|
||||
List<BaseItem> staleEpisodes = [.. series.SelectMany(GetStaleEpisodes)];
|
||||
List<BaseItem> staleMovies = [.. GetStaleMovies(movies)];
|
||||
|
||||
_logger.LogInformation("Stale Movies found: {StaleMovies}", staleMovies.Count);
|
||||
_logger.LogInformation("Stale Series found: {StaleShows}", staleEpisodes.Count);
|
||||
if (staleMovies.Count > 0)
|
||||
{
|
||||
_logger.LogInformation("Movies: {Names}", string.Join(", ", staleMovies.Select(movie => movie.Name)));
|
||||
}
|
||||
|
||||
_logger.LogInformation("Stale Episodes found: {StaleEpisodes}", staleEpisodes.Count);
|
||||
if (staleEpisodes.Count > 0)
|
||||
{
|
||||
// Firstly figure out the seasons, and then the Series to find the name.
|
||||
List<string> seriesNames = FindDistinctSeriesNamesFromEpisodes(staleEpisodes);
|
||||
_logger.LogInformation("Series: {Names}", string.Join(", ", seriesNames));
|
||||
}
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
@@ -88,6 +99,27 @@ public sealed class StaleMediaTask : IScheduledTask
|
||||
return staleMovies;
|
||||
}
|
||||
|
||||
private List<string> FindDistinctSeriesNamesFromEpisodes(List<BaseItem> episodes)
|
||||
{
|
||||
Guid[] seasonIds = [.. episodes.Select(episode => episode.ParentId).Distinct()];
|
||||
|
||||
var seasons = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
ItemIds = seasonIds
|
||||
});
|
||||
|
||||
Guid[] seriesIds = [.. seasons.Select(season => season.ParentId).Distinct()];
|
||||
|
||||
var series = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
ItemIds = seriesIds
|
||||
});
|
||||
|
||||
List<string> seriesNames = [.. series.Select(series => series.Name).Distinct()];
|
||||
|
||||
return seriesNames;
|
||||
}
|
||||
|
||||
private List<BaseItem> GetStaleEpisodes(BaseItem item)
|
||||
{
|
||||
List<BaseItem> staleEpisodes = [];
|
||||
|
||||
Reference in New Issue
Block a user