2024-12-06 13:37:00 -06:00

338 lines
12 KiB
PowerShell

D:\OneDrive\Programs\bin\task.ps1
Clear-Host
#Variables
switch ($env:COMPUTERNAME){
"WORKSTATION"
{
$Env:dirDownload = 'F:\Library'
$Env:dirJson = 'F:\Library\gallery-dl'
}
"SURFACE"
{
$Env:dirDownload = 'C:\Users\JawZ\Downloads'
$Env:dirJson = '\\WORKSTATION\Library\gallery-dl'
}
}
$Env:database = "$Env:dirJson\manga.sqlite3"
$mAll= "$Env:dirJson\manga.json"
$mVol = "$Env:dirJson\manga-i(vol).json"
$list = "$Env:dirJson\manga.txt"
$downloadList_1 = "$Env:dirJson\download_1.txt"
$downloadList_2 = "$Env:dirJson\download_2.txt"
$downloadList_3 = "$Env:dirJson\download_3.txt"
$downloadList_4 = "$Env:dirJson\download_4.txt"
$downloadList_5 = "$Env:dirJson\download_5.txt"
$textInfo = (Get-Culture).TextInfo
function removeEmptyDirectory{
remove-emtpy.ps1 -Path .\ -Remove -VerifyNoEmpty
}
function Write-Separator{Write-Color '---' -Color DarkGray}
function email ($body){
$EmailFrom = "jawzoned@gmail.com"
$EmailTo = "captainjawz@outlook.com"
$Subject = "New files on the library! "
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("jawzoned", "od3g4t!T&yJq");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, "$Body")
}
function automaticManga{#Download manga automatically
foreach ($webtoon in [System.IO.File]::ReadLines("$list")){
if ($webtoon | Select-String -Pattern 'webtoon'){
gallery-dl --sleep 5 --download-archive $Env:database -c "$mAll" --chapter-range '1' "$webtoon"
}
}
foreach ($manga in [System.IO.File]::ReadLines("$list")){
if ($manga | Select-String -Pattern 'manga'){
gallery-dl --sleep 5 --download-archive $Env:database -c "$mAll" --chapter-range '1-5' "$manga"
}
}
Set-Location $Env:dirDownload\New
removeEmptyDirectory
$newDirectories = Get-ChildItem -Path "$Env:dirDownload\New" -Directory -Recurse
if ($newDirectories){
$body = $newDirectories.Name | Out-String
email $body
}
}
function mangaRange($range){#Download manga automatically
$counter = -1
Write-Separator
foreach ($line in [System.IO.File]::ReadLines($list)){
$counter++
if ($line | Select-String -Pattern 'manga'){
$lineName = $line.Substring(($line.LastIndexOf('/')+1)).Replace("-", " ").Replace("_", " ") #Fix the name so it is presentable
$lineName = $textInfo.ToTitleCase($lineName)
Write-Color "$counter) ", "$lineName" -Color White, Yellow
}
}
Write-Separator
Write-Color 'Make a choice:' -C White
Write-Separator
$selection = Read-Host
Clear-Host
#[string]$range = "'" + $range + "'"
$line = [System.IO.File]::ReadLines($list) | Select-Object -Index $selection
gallery-dl --download-archive $Env:database -c $mAll --chapter-range $range $line
Set-Location $Env:dirDownload\New
removeEmptyDirectory
}
$DO = $args[0]
if($DO){
Switch($DO){
'a'{automaticManga}
'edit'{
Write-Color '1) ', 'Edit manga list' -C White, Yellow
Write-Color '2) ', 'Edit download list 1' -C White, Yellow
Write-Color '3) ', 'Edit download list 2' -C White, Yellow
Write-Color '4) ', 'Edit download list 3' -C White, Yellow
Write-Color '5) ', 'Edit download list 4' -C White, Yellow
Write-Color '6) ', 'Edit download list 5' -C White, Yellow
Write-Separator
$selectOperation = Read-Host
switch($selectOperation){
'1'{Invoke-Item $list}
'2'{Invoke-Item $downloadList_1}
'3'{Invoke-Item $downloadList_2}
'4'{Invoke-Item $downloadList_3}
'5'{Invoke-Item $downloadList_4}
'6'{Invoke-Item $downloadList_5}
}
}
}
}
else{
#Menu
Write-Color '1) ', 'Update Manga custom range' -C White, Yellow
Write-Color '2) ', 'Update comic from list' -C White, Yellow
Write-Color '3) ', 'Update everything' -C White, Yellow
Write-Color '4) ', 'Download individual comic/manga' -C White, Yellow
Write-Color '5) ', 'Download individual comic/manga per Volume' -C White, Yellow
Write-Color '6) ', 'Download batch' -C White, Yellow
Write-Color '7) ', 'Sort list file'-C White, Yellow
Write-Separator
#Actions
if ((Test-Path $Env:database) -and (Test-Path $mAll) -and (Test-Path $mVol) -and (Test-Path $list) -and (Test-Path $Env:dirDownload)){
$selectOperation = Read-Host
Write-Separator
switch ($selectOperation){
'1' {
Write-Color 'Insert a custom range ', '(ex 1-10)' -C Gray, DarkGray
Write-Separator
$range = Read-Host
mangaRange $range
}
'2' { #Update comic
$userInput = ''
Do {
Clear-Host
$counter = -1
foreach ($line in [System.IO.File]::ReadLines($list)) { #Print each lines from the list containing Comic pattern
$counter++
if ($line | Select-String -Pattern 'readcomiconline') {
$lineName = $line.Substring(($line.LastIndexOf('/')+1)).Replace("-", " ").Replace("_", " ") #Fix the name so it is presentable
$lineName = $textInfo.ToTitleCase($lineName)
Write-Color "$counter) ", "$lineName" -Color White, Yellow
}
}
Write-Separator
Write-Color 'Make a selection:' -C White
Write-Separator
$selection = Read-Host
Clear-Host
$line = [System.IO.File]::ReadLines($list) | Select-Object -Index $selection
$lineName = $line.Substring(($line.LastIndexOf('/')+1)).Replace("_", " ").Replace("-"," ") #Fix name so it is presentable
$lineName = $textInfo.ToTitleCase($lineName)
Write-Color 'Your selection is: ', $lineName -C White, Yellow
Write-Separator
Write-Color 'Is your choice correct?', '(y/n)' -C White, DarkGray
Write-Separator
$userInput = Read-Host #Ask user if selection is correct
} while (($userInput -eq '') -or ($userInput -eq 'n')) #if selection is incorrect reprint the list
Clear-Host
gallery-dl --download-archive $Env:database -c $mAll --chapter-range '1' "$line"
}
'3'{
Clear-Host
gallery-dl --download-archive $Env:database -c "$mAll" -i "$list"
}
'4'{
Clear-Host
Write-Separator
Write-Color 'Enter link' -C White
Write-Separator
$link = Read-Host
Write-Separator
Write-Color 'Do you want to use the Database?', '(y/n)' -C White, DarkGray
Write-Separator
$useDB = Read-Host
Write-Separator
Clear-Host
if ($useDB -eq 'y'){
gallery-dl --download-archive $Env:database -c "$mAll" "$link"
}
else{
gallery-dl -c "$mAll" "$link"
}
}
'5'{
Clear-Host
Write-Color 'Enter link:' -C White
Write-Separator
$link = Read-Host
Write-Separator
Clear-Host
gallery-dl --download-archive $Env:database -c "$mVol" "$link"
}
'6'{
#$date = get-date -Format '(ddMMyyy_hhmm)'
#$log = "$Env:dirJson\logs\log $date.txt"
Clear-Host
Write-Color 'Which list do you want to use?' -C White
Write-Separator
$listNumber = Read-Host
switch ($listNumber) {
'1'{gallery-dl --sleep 0 -c "$mAll" -i "$downloadList_1"}
'2'{gallery-dl --sleep 0 -c "$mAll" -i "$downloadList_2"}
'3'{gallery-dl --sleep 0 -c "$mAll" -i "$downloadList_3"}
'4'{gallery-dl --sleep 0 -c "$mAll" -i "$downloadList_4"}
'5'{gallery-dl --sleep 2 --download-archive $Env:database -c "$mAll" -i "$downloadList_5"}
}
}
'7'{
$finalContent = @()
$content = (Get-Content $list).ToLower() | Sort-Object | Select-Object -Unique
foreach ($line in $content){
[string]$line = $line
<#$line = $line.Replace('http:', 'https:')
if ($line -Match '\/$'){
$line = $line.TrimEnd('/')
}#>
$finalContent += $line
}
$finalContent -match '\S' > $list
}
}
}
else {
Clear-Host
Write-Output 'ERROR: One of the configuration files is missing'
Write-Output "Database"
Test-Path $Env:database
Write-Output "manga.json"
Test-Path $mAll
Write-Output "manga-1(vol).json"
Test-Path $mVol
Write-Output "Manga list.txt"
Test-Path $list
Write-Output "Download directory"
Test-Path $Env:dirDownload
}
}
function Capitalize{
#Set-Location 'F:\Library\New'
<#foreach ($directory in Get-ChildItem -Recurse -Directory){
Set-Location $directory
$capitalizeFiles = Get-ChildItem -File
ReNamer.exe /silent /rename Capitalize $capitalizeFiles
Wait-Process -Name "ReNamer"
}#>
Set-Location 'F:\Library\New'
foreach ($directory in Get-ChildItem -Directory -Recurse){
$directory.FullName
ReNamer.exe /silent /rename Capitalize $directory.FullName
Wait-Process -Name "ReNamer"
}
}
function moveSeries{
$serieLocationNames= @(
"Amory Wars"
"Batman"
"Borderlands"
"Brit"
"Clive Barker"
"Colder"
"Constantine"
"Critical Role"
"Dark Ark"
"Deadpool"
"Dicks"
"Ether"
"Fables"
"Grimm Fairy Tales"
"Guardians of the Galaxy"
"Gwenpool"
"Hack Slash"
"Harley Quinn"
"Hellboy"
"Hercules"
"Joker"
"Justice League"
"Kick-Ass"
"Lazarus"
"Lobo"
"Mad Max"
"Midnighter"
"Nailbiter"
"Pilot Season"
"Punisher"
"Rumble"
"Sonic"
"Star Wars"
"Suicide Squad"
"The Boys"
"The Last Zombie"
"The Realm"
"The Walking Dead"
"Thor"
"Transformers"
"Venom"
"Vikings"
"WWE"
"X-Men"
"Wolverine"
"Battle Angel Alita"
"Battle Through The Heavens"
"Boku No Hero Academia"
"Dr. Stone"
"Franken Fran"
"Kakegurui"
"Kami-Sama No Iutoori"
"Shaman King"
"Tensei Shitara Slime Datta Ken"
"Touhou"
)
foreach ($serieLocationName in $serieLocationNames){
$testPathComicLocation = 'F:\Library\New\Comic\' + $serieLocationName
$testPathMangaLocation = 'F:\Library\New\Manga\' + $serieLocationName
if(Test-Path $testPathComicLocation){
$files = Get-ChildItem -Path $testPathComicLocation
$newDir = $testPathComicLocation + '\' + $serieLocationName
if(!(Test-Path $newDir)){mkdir $newDir}
Move-Item $files $newDir
}
if(Test-Path $testPathMangaLocation){
$files = Get-ChildItem -Path $testPathMangaLocation
$newDir = $testPathMangaLocation + '\' + $serieLocationName
if(!(Test-Path $newDir)){mkdir $newDir}
Move-Item $files $newDir
}
}
}
Clear-Host
Capitalize
moveSeries