Implement download logic in content script

 Now works without popup:
- downloadSelectedMangas() downloads selected manga
- downloadAllMangas() downloads all manga from page
- Progress updates in control panel
- Download happens directly in content script
- No need to keep popup open
- Buttons in control panel now work!

Features:
- Real-time progress bar
- Live status updates
- Automatic completion handling
- Error logging for failed downloads
- Returns to control panel after completion
This commit is contained in:
renato97
2025-11-04 05:22:03 +00:00
parent 771b001923
commit fafa2f0c05

View File

@@ -251,12 +251,11 @@
sendResponse({ success: true }); sendResponse({ success: true });
} else if (request.action === 'triggerDownloadSelected') { } else if (request.action === 'triggerDownloadSelected') {
console.log('🎯 Trigger: Descargar Seleccionados'); console.log('🎯 Trigger: Descargar Seleccionados');
// Enviar mensaje al popup.js para ejecutar la descarga downloadSelectedMangas();
chrome.runtime.sendMessage({ action: 'executeDownloadSelected' });
sendResponse({ success: true }); sendResponse({ success: true });
} else if (request.action === 'triggerDownloadAll') { } else if (request.action === 'triggerDownloadAll') {
console.log('🎯 Trigger: Descargar TODOS'); console.log('🎯 Trigger: Descargar TODOS');
chrome.runtime.sendMessage({ action: 'executeDownloadAll' }); downloadAllMangas();
sendResponse({ success: true }); sendResponse({ success: true });
} else { } else {
console.log('❓ Acción desconocida:', request.action); console.log('❓ Acción desconocida:', request.action);
@@ -589,6 +588,108 @@
document.body.appendChild(button); document.body.appendChild(button);
} }
// Descargar manga seleccionados
async function downloadSelectedMangas() {
console.log('📥 Iniciando descarga de manga seleccionados...');
const selectedObjects = [];
selectedMangas.forEach(id => {
const mangaObj = mangaMetadata.get(id);
if (mangaObj) {
selectedObjects.push(mangaObj);
}
});
if (selectedObjects.length === 0) {
alert('No hay manga seleccionados. Selecciona algunos manga primero.');
return;
}
console.log(`📦 Manga seleccionados: ${selectedObjects.length}`);
// Descargar cada manga
for (let i = 0; i < selectedObjects.length; i++) {
const manga = selectedObjects[i];
const title = manga.title ? manga.title.substring(0, 50) : 'Manga sin título';
updateProgress(i, selectedObjects.length, title, `Descargando manga ${i + 1} de ${selectedObjects.length}...`);
try {
// Obtener URLs de imágenes
const imageUrls = await getImageUrlsForManga(manga);
console.log(`${manga.title}: ${imageUrls.length} imágenes encontradas`);
// Enviar al background para descarga
const response = await chrome.runtime.sendMessage({
action: 'downloadManga',
metadata: manga,
imageUrls: imageUrls
});
if (!response.success) {
console.error(`❌ Error descargando ${manga.title}:`, response.error);
} else {
console.log(`✅ Descargado: ${manga.title}`);
}
} catch (error) {
console.error(`❌ Error en manga ${manga.title}:`, error.message);
}
}
updateProgress(selectedObjects.length, selectedObjects.length, '¡Completado!', 'Descarga finalizada');
setTimeout(() => {
hideProgress();
}, 2000);
}
// Descargar TODOS los manga de la página
async function downloadAllMangas() {
console.log('📥 Iniciando descarga de TODOS los manga...');
const allMangas = extractAllMangasFromPage();
if (allMangas.length === 0) {
alert('No se encontraron manga en esta página.');
return;
}
console.log(`📦 Manga encontrados: ${allMangas.length}`);
// Descargar cada manga
for (let i = 0; i < allMangas.length; i++) {
const manga = allMangas[i];
const title = manga.title ? manga.title.substring(0, 50) : 'Manga sin título';
updateProgress(i, allMangas.length, title, `Descargando manga ${i + 1} de ${allMangas.length}...`);
try {
// Obtener URLs de imágenes
const imageUrls = await getImageUrlsForManga(manga);
console.log(`${manga.title}: ${imageUrls.length} imágenes encontradas`);
// Enviar al background para descarga
const response = await chrome.runtime.sendMessage({
action: 'downloadManga',
metadata: manga,
imageUrls: imageUrls
});
if (!response.success) {
console.error(`❌ Error descargando ${manga.title}:`, response.error);
} else {
console.log(`✅ Descargado: ${manga.title}`);
}
} catch (error) {
console.error(`❌ Error en manga ${manga.title}:`, error.message);
}
}
updateProgress(allMangas.length, allMangas.length, '¡Completado!', 'Descarga finalizada');
setTimeout(() => {
hideProgress();
}, 2000);
}
function init() { function init() {
if (window.location.href.includes('/g/')) return; if (window.location.href.includes('/g/')) return;