Compare commits
4 Commits
v0.0.2-alp
...
0.0.3-alph
| Author | SHA1 | Date | |
|---|---|---|---|
| 1a4cefba40 | |||
| 2387fecfb6 | |||
| 1ddb840f4a | |||
| c001a4f2ca |
@@ -1,5 +1,5 @@
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<AssemblyVersion>0.0.0.2</AssemblyVersion>
|
<AssemblyVersion>0.0.0.3</AssemblyVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Jellyfin.Controller" Version="10.11.3" >
|
<PackageReference Include="Jellyfin.Controller" Version="10.11.3">
|
||||||
<ExcludeAssets>runtime</ExcludeAssets>
|
<ExcludeAssets>runtime</ExcludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Jellyfin.Model" Version="10.11.3">
|
<PackageReference Include="Jellyfin.Model" Version="10.11.3">
|
||||||
@@ -20,8 +20,10 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Remove="Configuration\configPage.html" />
|
<None Remove="Configuration\settings.html" />
|
||||||
<EmbeddedResource Include="Configuration\configPage.html" />
|
<EmbeddedResource Include="Configuration\settings.html" />
|
||||||
|
<None Remove="Pages\home.html" />
|
||||||
|
<EmbeddedResource Include="Pages\home.html" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
@@ -29,20 +31,6 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<Target Name="GeneratePluginJson" BeforeTargets="Publish">
|
<Target Name="GeneratePluginJson" BeforeTargets="Publish">
|
||||||
<WriteLinesToFile
|
<WriteLinesToFile File="$(PublishDir)\meta.json" Lines="{
 "guid": "fef007a8-3e8f-4aa8-a22e-486a387f4192",
 "name": "Media Cleaner",
 "category": "Library",
 "overview": "A cleaner for your stale media.",
 "description": "Clean out the stale media from your library using scheduled tasks",
 "timestamp": "$(Timestamp)",
 "targetAbi": "10.11.0",
 "owner": "T-Gander",
 "version": "$(AssemblyVersion)"
 }" Overwrite="true" Encoding="utf-8" />
|
||||||
File="$(PublishDir)\meta.json"
|
|
||||||
Lines='{
|
|
||||||
"guid": "fef007a8-3e8f-4aa8-a22e-486a387f4192",
|
|
||||||
"name": "Media Cleaner",
|
|
||||||
"category": "Library",
|
|
||||||
"overview": "A cleaner for your stale media.",
|
|
||||||
"description": "Clean out the stale media from your library using scheduled tasks",
|
|
||||||
"timestamp": "$(PluginTimestamp)",
|
|
||||||
"targetAbi": "10.11.0",
|
|
||||||
"owner": "T-Gander",
|
|
||||||
"version": "$(Version)"
|
|
||||||
}'
|
|
||||||
Overwrite="true"
|
|
||||||
Encoding="utf-8" />
|
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
11
Jellyfin.Plugin.MediaCleaner/Pages/home.html
Normal file
11
Jellyfin.Plugin.MediaCleaner/Pages/home.html
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<div data-role="page" class="page type-interior pluginConfigurationPage withTabs">
|
||||||
|
<div data-role="content">
|
||||||
|
<div class="content-primary">
|
||||||
|
<div>
|
||||||
|
<a href="#configurationpage?name=Home">Home</a>
|
||||||
|
<a href="#configurationpage?name=Settings">Settings</a>
|
||||||
|
</div>
|
||||||
|
<h2>Media Cleaner</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -44,9 +44,15 @@ public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages
|
|||||||
[
|
[
|
||||||
new PluginPageInfo
|
new PluginPageInfo
|
||||||
{
|
{
|
||||||
Name = Name,
|
Name = "Settings",
|
||||||
EmbeddedResourcePath = string.Format(CultureInfo.InvariantCulture, "{0}.Configuration.configPage.html", GetType().Namespace)
|
EmbeddedResourcePath = string.Format(CultureInfo.InvariantCulture, "{0}.Configuration.settings.html", GetType().Namespace),
|
||||||
}
|
},
|
||||||
|
new PluginPageInfo
|
||||||
|
{
|
||||||
|
Name = "Home",
|
||||||
|
EmbeddedResourcePath = string.Format(CultureInfo.InvariantCulture, "{0}.Pages.home.html", GetType().Namespace),
|
||||||
|
EnableInMainMenu = true,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,13 +93,20 @@ public sealed class StaleMediaTask : IScheduledTask
|
|||||||
private List<BaseItem> GetStaleMovies(List<BaseItem> movies)
|
private List<BaseItem> GetStaleMovies(List<BaseItem> movies)
|
||||||
{
|
{
|
||||||
List<BaseItem> staleMovies = [];
|
List<BaseItem> staleMovies = [];
|
||||||
|
|
||||||
foreach (var movie in movies)
|
foreach (var movie in movies)
|
||||||
{
|
{
|
||||||
|
bool movieIsStale = movie.DateCreated > DateTime.Now.AddDays(-Configuration.StaleMediaCutoff);
|
||||||
var mostRecentUserData = movie.UserData.OrderByDescending(data => data.LastPlayedDate).First();
|
var mostRecentUserData = movie.UserData.OrderByDescending(data => data.LastPlayedDate).First();
|
||||||
|
|
||||||
if (mostRecentUserData.LastPlayedDate < DateTime.Now.AddDays(-Configuration.StaleMediaCutoff))
|
if (mostRecentUserData.LastPlayedDate < DateTime.Now.AddDays(-Configuration.StaleMediaCutoff))
|
||||||
{
|
{
|
||||||
staleMovies.Add(movie);
|
staleMovies.Add(movie);
|
||||||
}
|
}
|
||||||
|
else if (movieIsStale)
|
||||||
|
{
|
||||||
|
staleMovies.Add(movie);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return staleMovies;
|
return staleMovies;
|
||||||
@@ -160,6 +167,7 @@ public sealed class StaleMediaTask : IScheduledTask
|
|||||||
});
|
});
|
||||||
|
|
||||||
bool seasonHasUserData = episodes.Any(episode => episode.UserData.Count > 0);
|
bool seasonHasUserData = episodes.Any(episode => episode.UserData.Count > 0);
|
||||||
|
bool seasonIsStale = episodes.All(episode => episode.DateCreated > DateTime.Now.AddDays(-Configuration.StaleMediaCutoff));
|
||||||
|
|
||||||
if (seasonHasUserData)
|
if (seasonHasUserData)
|
||||||
{
|
{
|
||||||
@@ -174,6 +182,11 @@ public sealed class StaleMediaTask : IScheduledTask
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Check for episodes that have gone unwatched for stale media cutoff
|
||||||
|
else if (seasonIsStale)
|
||||||
|
{
|
||||||
|
staleEpisodes.AddRange(episodes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return staleEpisodes;
|
return staleEpisodes;
|
||||||
|
|||||||
Reference in New Issue
Block a user