fix download

This commit is contained in:
2025-10-30 19:56:22 +01:00
parent adfbdf56d0
commit 627f8b0cc4
7 changed files with 159 additions and 184 deletions

View File

@@ -912,22 +912,69 @@ class AniWorldApp {
try {
const folders = Array.from(this.selectedSeries);
let totalEpisodesAdded = 0;
let failedSeries = [];
const response = await this.makeAuthenticatedRequest('/api/anime/download', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ folders })
});
// For each selected series, get its missing episodes and add to queue
for (const folder of folders) {
const serie = this.seriesData.find(s => s.folder === folder);
if (!serie || !serie.episodeDict) {
failedSeries.push(folder);
continue;
}
if (!response) return;
const data = await response.json();
// Convert episodeDict format {season: [episodes]} to episode identifiers
const episodes = [];
for (const [season, episodeNumbers] of Object.entries(serie.episodeDict)) {
if (Array.isArray(episodeNumbers)) {
for (const episode of episodeNumbers) {
episodes.push({
season: parseInt(season),
episode: episode
});
}
}
}
if (data.status === 'success') {
this.showToast('Download started', 'success');
if (episodes.length === 0) {
continue;
}
// Add episodes to download queue
const response = await this.makeAuthenticatedRequest('/api/queue/add', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
serie_id: serie.key,
serie_name: serie.name,
episodes: episodes,
priority: 'NORMAL'
})
});
if (!response) {
failedSeries.push(folder);
continue;
}
const data = await response.json();
if (data.status === 'success') {
totalEpisodesAdded += episodes.length;
} else {
failedSeries.push(folder);
}
}
// Show result message
if (totalEpisodesAdded > 0) {
const message = failedSeries.length > 0
? `Added ${totalEpisodesAdded} episode(s) to queue (${failedSeries.length} series failed)`
: `Added ${totalEpisodesAdded} episode(s) to download queue`;
this.showToast(message, 'success');
} else {
this.showToast(`Download error: ${data.message}`, 'error');
this.showToast('Failed to add episodes to queue', 'error');
}
} catch (error) {
console.error('Download error:', error);