You are viewing an archive of Victory Road.
Victory Road closed on January 8, 2018. Thank you for making us a part of your lives since 2006! Please read this thread for details if you missed it.
During some random cleanup of my hard drive I decided I would try to compress my various mangas, etc. into simpler comic book files. The main benefit of these files is saving space, but they also help boost application compatibility.
Creating a file generally entails compresssing all the images as one of so many compression types, then changing the file extension:
| Compression Type | Extension |
|---|---|
| GNU Tar | .cbt |
| ZIP Archive | .cbz |
| RAR Archive | .cbr |
| 7zip Archive | .cb7 |
## CLI-to-GET Functionality (To replace create a file that can handle CLI input and convert it to GET variables, or call file from webserver, replacing this file with a text/plain mimetype. http://www.php.net/manual/en/features.commandline.php#93086 is used by author.
require('clitoget.php');
## Copyright
echo "CBZ Creation Script (c) 2011 Joseph T. Parsons.\n\n";
if (isset($_GET['help'])) {
die("Usage (Standard CLI): php cbz.php [OPTION] --d=[DIR]\nUsage (Web Server): cbz.php?d=[DIR]&[OPTION]\n\nArguments:\n --d\t\tThe directory containing the image files to turn into a comic book.\n --o\t\tThe directory the comic book file should be placed in. If not specified the current working directory will be used.\n --ow\t\tIf specified, any existing comic book file will be overwritten.\n --filetypes\t\tA comma-seperated list (without spaces) containing all accepted file types. By default this is \"png,jpg,jpeg\".\n\n");
}
## Initialize Variables
static $filesQue, $overwrite, $fileOutput;
if (!isset($_GET['d'])) {
if ($cli) {
echo "Please Enter a Directory: ";
$directory = trim(fgets(STDIN));
}
else {
die("No directory specified.\n");
}
}
else
$directory = $_GET['d'];
$directoryNamePieces = explode('/',$directory);
$directoryName = $directoryNamePieces[count($directoryNamePieces) - 1];
if (!isset($_GET['o']))
$outputDirectory = __DIR__;
else
$outputDirectory = $_GET['o'];
if (!isset($_GET['filetypes']))
$fileTypes = 'png|jpg|jpeg';
else
$fileTypes = implode('|',explode(',',$_GET['filetypes'])); // Converts Comma-Seperated-List into Pipe-Seperated-List (Yes, str_replace would probably work just as well)
if (isset($_GET['ow']))
$overwrite = true;
## More Initialization
$zipFile = "$outputDirectory/$directoryName.cbz";
## Check Permissions
if (!is_dir($directory))
die("Directory \"$directory\" does not exist.\n");
elseif (!is_readable($directory))
die("Directory \"$directory\" is not readable.\n");
elseif (!is_dir($outputDirectory))
die("Output Directory \"$outputDirectory\" does not exist.\n");
elseif (!is_writable($outputDirectory))
die("Output Directory \"$outputDirectory\" can not be written to.\n");
else
echo "Directory: $directory.\nOutput File: $zipFile.\n\n";
$files = scandir($directory);
## Read Files
if (count($files) >= 1) {
foreach ($files AS $file) {
// $filePieces = explode('/',$file);
// $file = $filePieces[count($filePieces) - 1];
if (!preg_match("/\.($fileTypes)$/",$file)) {
$fileOutput .= "Ignored $file\n";
}
else {
$filesQue[] = $file;
}
}
}
else {
die("No files found in \"$directory\".\n");
}
## Create Comic Book
if (count($filesQue) >= 1) {
$zip = new ZipArchive
or die("Could not initialize ZipArchive class. Please check to make sure it is installed.\n");
echo "Creating ZIP File \"$zipFile\"... ";
if (file_exists($zipFile) && !$overwrite)
die("Already Exists (Specify --ow to Delete)\n");
elseif (file_exists($zipFile) && $overwrite)
unlink($zipFile) or die("Already Existed (Could Not be Deleted)");
if ($zip->open($zipFile, ZipArchive::CREATE) === true)
echo "Sucess\n";
foreach ($filesQue AS $file) {
$fullPath = "$directory/$file";
echo "Adding file \"$fullPath\" as \"$file\"... ";
if ($zip->addFile($fullPath, $file)) echo "Sucess\n";
else echo "Failed\n";
}
$zip->close();
exit(0);
}
else {
die("No files can be processed. Exiting.\n");
}
function parseArgs($argv){
array_shift($argv);
$out = array();
foreach ($argv as $arg){
if (substr($arg,0,2) == '--'){
$eqPos = strpos($arg,'=');
if ($eqPos === false){
$key = substr($arg,2);
$out[$key] = isset($out[$key]) ? $out[$key] : true;
} else {
$key = substr($arg,2,$eqPos-2);
$out[$key] = substr($arg,$eqPos+1);
}
} else if (substr($arg,0,1) == '-'){
if (substr($arg,2,1) == '='){
$key = substr($arg,1,1);
$out[$key] = substr($arg,3);
} else {
$chars = str_split(substr($arg,1));
foreach ($chars as $char){
$key = $char;
$out[$key] = isset($out[$key]) ? $out[$key] : true;
}
}
} else {
$out[] = $arg;
}
}
return $out;
}
$_GET = parseArgs($argv);
$cli = true;
$cli = false;
header('Content-type: text/plain');