Converted StaleMediaTask to StaleMediaScanner for use in plugin home page. Also added a generic Media Info class that can be filtered to return the data you desire.

This commit is contained in:
2026-01-25 14:52:47 -07:00
parent 66716a9bc9
commit 04ef815a9b
10 changed files with 213 additions and 111 deletions

View File

@@ -3,18 +3,29 @@
<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>
<h3 id="moviesTitle"></h3>
<table id="moviesTable">
<thead>
<tr>
<th>Name</th>
</tr>
</thead>
</table>
<br>
<br>
<h3 id="seriesTitle"></h3>
<table id="seriesTable">
<thead>
<tr>
<th>ID</th>
<th>Series Name</th>
</tr>
</thead>
<tbody></tbody>
<thead>
<tr>
<th>Name</th>
<th>Seasons</th>
</tr>
</thead>
</table>
</div>
</div>

View File

@@ -1,9 +1,10 @@
var table = document.getElementById("seriesTable");
var moviesTitle = document.getElementById("moviesTitle");
var seriesTitle = document.getElementById("seriesTitle");
var moviesTable = document.getElementById("moviesTable");
var seriesTable = document.getElementById("seriesTable");
const getMediaCleanerState = async () => {
const response = await fetch('/mediacleaner/state');
const getMediaCleanerSeriesInfo = async () => {
const response = await fetch("/mediacleaner/state/getSeriesInfo");
if(!response.ok){
throw new Error(`Response status: ${response.status}`)
@@ -12,16 +13,73 @@ const getMediaCleanerState = async () => {
return response.json();
}
var state = await getMediaCleanerState();
const getMediaCleanerMovieInfo = async () => {
const response = await fetch("/mediacleaner/state/getMovieInfo");
console.log("State: ", state);
if(!response.ok){
throw new Error(`Response status: ${response.status}`)
}
for(let i = 0; i < state.length; i++){
var row = table.insertRow(-1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
cell1.innerHTML = state[i].Id;
cell2.innerHTML = state[i].SeriesName;
cell3.innerHTML = state[i].Seasons.length;
return response.json();
}
const updateMediaCleanerState = async () => {
const response = await fetch("/mediacleaner/state/updateState");
if(!response.ok){
throw new Error(`Response status: ${response.status}`)
}
return response.json();
}
const getMediaCleanerSeriesTitle = async () => {
const response = await fetch("/mediacleaner/state/getSeriesTitle");
if(!response.ok){
throw new Error(`Response status: ${response.status}`);
}
return response.json();
}
const getMediaCleanerMoviesTitle = async () => {
const response = await fetch("/mediacleaner/state/getMoviesTitle");
if(!response.ok){
throw new Error(`Response status: ${response.status}`);
}
return response.json();
}
const populateMoviesTable = () => {
for(let i = 0; i < moviesInfo.length; i++){
var row = moviesTable.insertRow(-1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = moviesInfo[i].Name;
cell2.innerHTML = "<button>Delete</button>";
}
}
const populateSeriesTable = () => {
for(let i = 0; i < seriesInfo.length; i++){
var row = seriesTable.insertRow(-1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
cell1.innerHTML = seriesInfo[i].Name;
cell2.innerHTML = seriesInfo[i].Seasons.map(season => season.replace("Season ", "")).join(", ");
cell3.innerHTML = "<button>Delete</button>";
}
}
moviesTitle.innerHTML = await getMediaCleanerMoviesTitle();
seriesTitle.innerHTML = await getMediaCleanerSeriesTitle();
await updateMediaCleanerState();
var moviesInfo = await getMediaCleanerMovieInfo();
var seriesInfo = await getMediaCleanerSeriesInfo();
populateMoviesTable();
populateSeriesTable();