338 lines
12 KiB
PowerShell
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 |