fix: db not filling in .nfo data
Local Docker Build (Dev) / build-dev (push) Successful in 4s

This commit is contained in:
2025-10-15 07:56:56 -04:00
parent 66ba17991e
commit 0dfc296bf4
7 changed files with 231 additions and 15 deletions
+23 -6
View File
@@ -157,13 +157,30 @@
<div class="content-header">
<h2><i class="fas fa-tv"></i> TV Series Database</h2>
<div class="content-controls">
<div class="search-box">
<i class="fas fa-search"></i>
<input type="text" id="series-search" placeholder="Search series...">
<div class="search-controls">
<div class="search-box">
<i class="fas fa-search"></i>
<input type="text" id="series-search" placeholder="Search title/path...">
</div>
<div class="search-box">
<i class="fas fa-hashtag"></i>
<input type="text" id="series-imdb-search" placeholder="Search IMDb ID...">
</div>
</div>
<div class="filter-controls">
<select id="series-filter-date">
<option value="">All Series</option>
<option value="complete">Fully Dated</option>
<option value="incomplete">Missing Dates</option>
<option value="none">No Dates</option>
</select>
<select id="series-filter-source">
<option value="">All Sources</option>
</select>
<button class="btn btn-primary" onclick="refreshSeries()">
<i class="fas fa-sync"></i> Refresh
</button>
</div>
<button class="btn btn-primary" onclick="refreshSeries()">
<i class="fas fa-sync"></i> Refresh
</button>
</div>
</div>
+27
View File
@@ -11,6 +11,7 @@ document.addEventListener('DOMContentLoaded', function() {
initializeTabs();
initializeEventListeners();
loadDashboard();
loadSeriesSources();
});
// Tab management
@@ -63,10 +64,13 @@ function initializeEventListeners() {
document.getElementById('movies-search').addEventListener('input', debounce(loadMovies, 500));
document.getElementById('movies-imdb-search').addEventListener('input', debounce(loadMovies, 500));
document.getElementById('series-search').addEventListener('input', debounce(loadSeries, 500));
document.getElementById('series-imdb-search').addEventListener('input', debounce(loadSeries, 500));
// Filter dropdowns
document.getElementById('movies-filter-date').addEventListener('change', loadMovies);
document.getElementById('movies-filter-source').addEventListener('change', loadMovies);
document.getElementById('series-filter-date').addEventListener('change', loadSeries);
document.getElementById('series-filter-source').addEventListener('change', loadSeries);
// Forms
document.getElementById('edit-form').addEventListener('submit', handleEditSubmit);
@@ -296,6 +300,23 @@ function updateMoviesSourceFilter(data) {
}
}
async function loadSeriesSources() {
try {
const data = await apiCall('/api/series/sources');
const select = document.getElementById('series-filter-source');
const currentValue = select.value;
select.innerHTML = '<option value="">All Sources</option>';
data.sources.forEach(source => {
select.innerHTML += `<option value="${source}">${source}</option>`;
});
select.value = currentValue;
} catch (error) {
console.error('Failed to load series sources:', error);
}
}
function refreshMovies() {
loadMovies(currentMoviesPage);
}
@@ -303,6 +324,9 @@ function refreshMovies() {
// TV Series
async function loadSeries(page = 1) {
const search = document.getElementById('series-search').value;
const imdbSearch = document.getElementById('series-imdb-search').value;
const dateFilter = document.getElementById('series-filter-date').value;
const sourceFilter = document.getElementById('series-filter-source').value;
const params = new URLSearchParams({
skip: (page - 1) * 50,
@@ -310,6 +334,9 @@ async function loadSeries(page = 1) {
});
if (search) params.append('search', search);
if (imdbSearch) params.append('imdb_search', imdbSearch);
if (dateFilter) params.append('date_filter', dateFilter);
if (sourceFilter) params.append('source_filter', sourceFilter);
try {
const data = await apiCall(`/api/series?${params}`);