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);
|
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) {
|
} catch (e) {
|
||||||
console.error('❌ Erro Deep Clone:', e);
|
console.error('❌ Erro Deep Clone:', e);
|
||||||
return { success: false, error: e.message };
|
return { success: false, error: e.message };
|
||||||
|
|||||||
@@ -112,6 +112,8 @@ class WgetCloner {
|
|||||||
'--convert-links', // Converter links para locais
|
'--convert-links', // Converter links para locais
|
||||||
'--restrict-file-names=windows', // Nomes compatíveis com Windows
|
'--restrict-file-names=windows', // Nomes compatíveis com Windows
|
||||||
'--domains=' + urlObj.hostname, // Apenas este domínio
|
'--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-parent', // Não subir diretórios
|
||||||
'--no-check-certificate', // Ignorar SSL
|
'--no-check-certificate', // Ignorar SSL
|
||||||
'-e', 'robots=off', // Ignorar robots.txt
|
'-e', 'robots=off', // Ignorar robots.txt
|
||||||
@@ -161,6 +163,15 @@ class WgetCloner {
|
|||||||
console.log(`${'='.repeat(60)}`);
|
console.log(`${'='.repeat(60)}`);
|
||||||
console.log(`📁 Localização: ${siteDir}`);
|
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
|
// Baixar imagens faltantes manualmente
|
||||||
console.log(`\n🔍 Verificando imagens faltantes...`);
|
console.log(`\n🔍 Verificando imagens faltantes...`);
|
||||||
this.downloadMissingImages(siteDir, url).then(() => {
|
this.downloadMissingImages(siteDir, url).then(() => {
|
||||||
@@ -203,6 +214,8 @@ class WgetCloner {
|
|||||||
directory: siteDir,
|
directory: siteDir,
|
||||||
method: 'wget',
|
method: 'wget',
|
||||||
exitCode: code,
|
exitCode: code,
|
||||||
|
files: stats.fileCount,
|
||||||
|
size: stats.totalSize,
|
||||||
cloneInfo: info
|
cloneInfo: info
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -329,9 +329,8 @@ async function startCloning(url, options) {
|
|||||||
progressMessage.textContent = '✅ Clonagem concluída com sucesso!';
|
progressMessage.textContent = '✅ Clonagem concluída com sucesso!';
|
||||||
|
|
||||||
// Update stats
|
// Update stats
|
||||||
// Update stats
|
const files = data.data?.files || data.data?.cloneInfo?.fileCount || data.data?.resources || data.files || 0;
|
||||||
const files = data.data.resources || data.data.files || 0;
|
const size = data.data?.size || data.data?.cloneInfo?.totalSize || data.size || 0;
|
||||||
const size = data.data.size || 0; // Smart clone might not return size yet
|
|
||||||
|
|
||||||
filesDownloaded.textContent = files;
|
filesDownloaded.textContent = files;
|
||||||
sizeDownloaded.textContent = formatBytes(size);
|
sizeDownloaded.textContent = formatBytes(size);
|
||||||
|
|||||||
Reference in New Issue
Block a user