Only extract comic if it isn't already extracted (muuuuch faster for large comics)

This commit is contained in:
Junior 2026-02-16 14:34:42 -05:00
parent ee02a15182
commit 6460cfca37

View File

@ -47,41 +47,52 @@ if ( $row = $sth->fetch(PDO::FETCH_ASSOC) ) {
} }
$data["startindex"] = $currentpage; $data["startindex"] = $currentpage;
$extracted = false;
if ( !is_dir($comicoutputfull) ) { if ( !is_dir($comicoutputfull) ) {
mkdir($comicoutputfull, 0755, true); mkdir($comicoutputfull, 0755, true);
} else {
touch($comicoutputfull);
$extracted = true;
} }
$files = array(); $files = array();
if ( $ext == "cbz" ) { if ( $extracted ) {
$zip = new ZipArchive(); $contents = glob($comicoutputfull . "*");
$opened = $zip->open($comicfull); foreach ( $contents as $i ) {
for ( $i=0; $i<$zip->numFiles; $i++ ) { $files[] = basename($i);
$imgname = basename($zip->getNameIndex($i));
//$myext = substr($imgname, -3);
if ( ! isset(pathinfo($imgname)['extension']) ) continue;
$myext = strtolower(pathinfo($imgname)['extension']);
if ( ($myext == "jpeg") || ($myext == "jpg") || ($myext == "png") || ($myext == "webp") ) {
$imgname = str_replace("#", "", $imgname);
$imgcontents = $zip->getFromIndex($i);
$written = file_put_contents($comicoutputfull . $imgname, $imgcontents);
if ( $written ) $files[] = $imgname;
}
} }
} elseif ( $ext == "cbr" ) {
$rar = RarArchive::open($comicfull);
$entries = $rar->getEntries();
foreach ( $entries as $entry ) {
$outfile = str_replace("#", "", basename($entry->getName()));
$entry->extract(false, $comicoutputfull . $outfile);
if ( ! isset(pathinfo($outfile)['extension']) ) continue;
$myext = strtolower(pathinfo($outfile)['extension']);
if ( ($myext == "jpeg") || ($myext == "jpg") || ($myext == "png") || ($myext == "webp") ) {
$files[] = basename($outfile);
}
}
unset($entry);
} else { } else {
exit(); if ( $ext == "cbz" ) {
$zip = new ZipArchive();
$opened = $zip->open($comicfull);
for ( $i=0; $i<$zip->numFiles; $i++ ) {
$imgname = basename($zip->getNameIndex($i));
//$myext = substr($imgname, -3);
if ( ! isset(pathinfo($imgname)['extension']) ) continue;
$myext = strtolower(pathinfo($imgname)['extension']);
if ( ($myext == "jpeg") || ($myext == "jpg") || ($myext == "png") || ($myext == "webp") ) {
$imgname = str_replace("#", "", $imgname);
$imgcontents = $zip->getFromIndex($i);
$written = file_put_contents($comicoutputfull . $imgname, $imgcontents);
if ( $written ) $files[] = $imgname;
}
}
} elseif ( $ext == "cbr" ) {
$rar = RarArchive::open($comicfull);
$entries = $rar->getEntries();
foreach ( $entries as $entry ) {
$outfile = str_replace("#", "", basename($entry->getName()));
$entry->extract(false, $comicoutputfull . $outfile);
if ( ! isset(pathinfo($outfile)['extension']) ) continue;
$myext = strtolower(pathinfo($outfile)['extension']);
if ( ($myext == "jpeg") || ($myext == "jpg") || ($myext == "png") || ($myext == "webp") ) {
$files[] = basename($outfile);
}
}
unset($entry);
} else {
exit();
}
} }
natsort($files); natsort($files);