Atualização automática: 2026-05-18 12:02:13
This commit is contained in:
@@ -333,7 +333,10 @@ self.addEventListener('fetch', (event) => {
|
||||
`;
|
||||
fs.writeFileSync(path.join(siteDir, 'mock-sw.js'), swCode);
|
||||
|
||||
return { success: true, path: siteDir, pagesCloned: pageCount };
|
||||
var countFiles = function(dir) { var ts=0,fc=0; (function rec(d){if(!fs.existsSync(d))return;fs.readdirSync(d).forEach(function(i){var p=path.join(d,i),s=fs.statSync(p);if(s.isDirectory()&&i.indexOf("cloned-sites")==-1&&i.indexOf(".versions")==-1)rec(p);else if(!s.isDirectory()){ts+=s.size;fc++;}});})(dir);return{fileCount:fc,totalSize:ts};};
|
||||
const stats = countFiles(siteDir);
|
||||
|
||||
return { success: true, path: siteDir, pagesCloned: pageCount, files: stats.fileCount, size: stats.totalSize };
|
||||
} catch (e) {
|
||||
console.error('❌ Erro Deep Clone:', e);
|
||||
return { success: false, error: e.message };
|
||||
|
||||
@@ -112,6 +112,8 @@ class WgetCloner {
|
||||
'--convert-links', // Converter links para locais
|
||||
'--restrict-file-names=windows', // Nomes compatíveis com Windows
|
||||
'--domains=' + urlObj.hostname, // Apenas este domínio
|
||||
'--span-hosts', // Permitir redirecionamentos entre subdomínios/CDN
|
||||
'--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"',
|
||||
'--no-parent', // Não subir diretórios
|
||||
'--no-check-certificate', // Ignorar SSL
|
||||
'-e', 'robots=off', // Ignorar robots.txt
|
||||
@@ -161,6 +163,15 @@ class WgetCloner {
|
||||
console.log(`${'='.repeat(60)}`);
|
||||
console.log(`📁 Localização: ${siteDir}`);
|
||||
|
||||
const { execSync } = require('child_process');
|
||||
// Mover arquivos do subdiretório do domínio para a raiz do siteDir
|
||||
try {
|
||||
const domainDir = path.join(siteDir, urlObj.hostname);
|
||||
if (fs.existsSync(domainDir)) {
|
||||
execSync(`cp -r "${domainDir}"/* "${siteDir}"/ 2>/dev/null && rm -rf "${domainDir}"`);
|
||||
}
|
||||
} catch (e) {}
|
||||
|
||||
// Baixar imagens faltantes manualmente
|
||||
console.log(`\n🔍 Verificando imagens faltantes...`);
|
||||
this.downloadMissingImages(siteDir, url).then(() => {
|
||||
@@ -203,6 +214,8 @@ class WgetCloner {
|
||||
directory: siteDir,
|
||||
method: 'wget',
|
||||
exitCode: code,
|
||||
files: stats.fileCount,
|
||||
size: stats.totalSize,
|
||||
cloneInfo: info
|
||||
});
|
||||
} else {
|
||||
|
||||
@@ -329,9 +329,8 @@ async function startCloning(url, options) {
|
||||
progressMessage.textContent = '✅ Clonagem concluída com sucesso!';
|
||||
|
||||
// Update stats
|
||||
// Update stats
|
||||
const files = data.data.resources || data.data.files || 0;
|
||||
const size = data.data.size || 0; // Smart clone might not return size yet
|
||||
const files = data.data?.files || data.data?.cloneInfo?.fileCount || data.data?.resources || data.files || 0;
|
||||
const size = data.data?.size || data.data?.cloneInfo?.totalSize || data.size || 0;
|
||||
|
||||
filesDownloaded.textContent = files;
|
||||
sizeDownloaded.textContent = formatBytes(size);
|
||||
|
||||
Reference in New Issue
Block a user