145 lines
5.3 KiB
PowerShell

Import-Module PSWriteColor
#Set-Location 'F:\Library\Graphic Novels' #Resets location to root
#Set-Location 'E:\Comic'
#$txtDelete = 'F:\Library\Delete.txt'
function removeEmptyDirectory{
remove-emtpy.ps1 -Path .\ -Remove -VerifyNoEmpty
}
function renamePages{
# Parameter help description
param (
[string]$dirLocation,
[int]$issuePart
)
Set-Location $dirLocation #Set location to the issue directory
$files = Get-ChildItem * -Include '*.jpg', '*.png', '*.jpeg', '*.gif'
for($i = 1; $i -le $files.Count; $i++){ #creates a serialized array of the new file names
$newName = ([string]$issuePart).PadLeft(4,'0') + ([string]$i).PadLeft(4,'0') + $files[$i-1].Extension
#$newName
Rename-Item $files[$i-1] -NewName $newName
}
}
function unzipCBZ{
param (
$cbzFiles
)
$removeEmptyDirectoryDef = $Function:removeEmptyDirectory.ToString()
$renamePagesDef = $Function:renamePages.ToString()
$cbzFiles | ForEach-Object -parallel { #Creates a list of CBZ files on all the subdirectories and runs for each one
#define functions inside the thrad
$Function:removeEmptyDirectory = $using:removeEmptyDirectoryDef
$Function:renamePages = $using:renamePagesDef
Set-Location $_.DirectoryName #Changes location to a children directory to avoid uncompressing into the wrong folders
7z x $_ -o* > $txtDelete
Remove-Item $_.FullName #Removes the CBZ file after extracted
Set-Location $_.BaseName #Set the location to the uncompressed directory
$issueDirectoryLocation = Get-Location #store the issue location for later use
#Remove emtpy directories and creates a check variable
removeEmptyDirectory
$dirDirectories = Get-ChildItem -Directory
#If statements to check and rename files according to how many directories they contain
if (($dirDirectories).Count -gt 0){
for ($i = 0; $i -le ($dirDirectories).Count; $i++){ #system to rename every file according with an increment of which "part" directory of the TPB they belong to
renamePages $dirDirectories[$i] $i
}
Set-Location $issueDirectoryLocation
Get-ChildItem -Recurse -File -Exclude 'ComicInfo.xml' | Move-Item -Destination $issueDirectoryLocation #move files to the root
removeEmptyDirectory
if ((Get-ChildItem -Directory).Count -gt 0){
Get-ChildItem -Recurse -File 'ComicInfo.xml' | Remove-Item
Set-Location $issueDirectoryLocation
removeEmptyDirectory
}
}
elseif (($dirDirectories).Count -eq 0){
$dirLocation = Get-Location
renamePages $dirLocation 0
}
} -ThrottleLimit 15
}
function convertFiles{
Get-ChildItem -Recurse *.jpg | ForEach-Object -parallel { #convert PNG
Set-Location $_.Directory
$fileName = $_.BaseName
magick convert -quality 100 $_ "$fileName.png"
Remove-Item $_
}
Get-ChildItem -Recurse *.png | ForEach-Object -parallel { #convert JPG
Set-Location $_.Directory
$fileName = $_.BaseName
magick convert -quality 100 $_ "$fileName.jpg"
Remove-Item $_
}
}
function partDirs{
param (
$workingDir
)
$dirParts = Get-ChildItem -Directory -Recurse | Where-Object {$_.Name -match 'Part'}
foreach ($dirPart in $dirParts){
Set-Location $dirPart.Parent
$TPBname = $dirPart.Name.Split(' (')
if(!(Test-Path $TPBname[0])){
New-Item -ItemType Directory $TPBname[0]
}
else{
$nameFixed = $TPBname[0] + ' '
$nameFixed
$dirMove = Get-ChildItem -Directory -Exclude $TPBname[0] | Where-Object {$_.Name -match $nameFixed}
if ($dirMove){
$dirMove
$TPBname[0]
Move-Item $dirMove -Destination $TPBname[0]
}
}
}
Set-Location $workingDir ################FIX THIS############
#########################
############
foreach ($dir in Get-ChildItem -Recurse -Directory){
if(test-path($dir)){Set-Location $dir}
$issueDirectoryLocation = Get-Location
if(Get-ChildItem -Directory | Where-Object {$_.Name -match 'Part'}){
$dirRename = Get-ChildItem -Directory
for ($i = 0; $i -le ($dirRename).Count; $i++){ #system to rename every file according with an increment of which "part" directory of the TPB they belong to
renamePages $dirRename[$i] $i
}
Set-Location $issueDirectoryLocation
Get-ChildItem -Recurse -File -Exclude 'ComicInfo.xml' | Move-Item -Destination $issueDirectoryLocation #move files to the root
removeEmptyDirectory
}
}
}
switch ($args[0]) {
'1'{
$cbzFiles = Get-ChildItem *.cbz -Recurse -File
unzipCBZ $cbzFiles
}
'2'{
convertFiles
}
'3'{
Set-Location $args[1]
partDirs $args[1]
}
'4'{
Set-Location 'F:\Library\Comic'
foreach ($dir in Get-ChildItem -Recurse -Directory){
renamePages $dir 0
}
}
}