initial commit, completed
This commit is contained in:
commit
e53e58f1f4
|
@ -0,0 +1,102 @@
|
||||||
|
param(
|
||||||
|
[parameter(mandatory=$true)]
|
||||||
|
[string]$seriesId,
|
||||||
|
[switch]$completeSeries,
|
||||||
|
[string]$seriesName,
|
||||||
|
[string]$outputFolder=(Resolve-Path .),
|
||||||
|
[int]$startChapter=1,
|
||||||
|
[int]$endChapter=$startChapter
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
### Init ###
|
||||||
|
$baseUrl = "https://www.mangareader.net"
|
||||||
|
|
||||||
|
$usedVarsDownloadChapter = @("chapterNr",
|
||||||
|
"outputPath",
|
||||||
|
"chapterUrl",
|
||||||
|
"chapterBaseHtml",
|
||||||
|
"chapterPattern",
|
||||||
|
"chapterPages",
|
||||||
|
"chapterPage")
|
||||||
|
|
||||||
|
$usedVarsForeachChapterPage = @("pageUrl",
|
||||||
|
"pageFormat",
|
||||||
|
"pageHtml")
|
||||||
|
|
||||||
|
$usedVarsCurrentChapter = @("chapterFormat",
|
||||||
|
"chapterPath",
|
||||||
|
"ebookName")
|
||||||
|
|
||||||
|
### Functions ###
|
||||||
|
Function DownloadChapter($chapterNr,$outputPath){
|
||||||
|
$chapterUrl = "${seriesUrl}/${chapterNr}"
|
||||||
|
|
||||||
|
$chapterBaseHtml = Invoke-WebRequest -UseBasicParsing -Uri $chapterUrl
|
||||||
|
|
||||||
|
# Download first image, continue afterwards
|
||||||
|
Invoke-WebRequest -UseBasicParsing -Uri $chapterBaseHtml.Images.src -OutFile (Join-Path -Path $outputPath -ChildPath "01.jpg") #"${outputPath}\01.jpg"
|
||||||
|
|
||||||
|
# evaluate regex
|
||||||
|
$chapterPattern = '(?<=<option value=\"\/' + [Regex]::Escape("${seriesId}") + '\/' + [Regex]::Escape("${chapterNr}") + '\/)\d+(?=\">\d+<\/option>)'
|
||||||
|
|
||||||
|
$chapterPages = $chapterBaseHtml.Content | Select-String -Pattern $chapterPattern -AllMatches | ForEach-Object {$_.Matches} | ForEach-Object {$_.Value}
|
||||||
|
|
||||||
|
foreach($chapterPage in $chapterPages) {
|
||||||
|
$pageUrl = "${chapterUrl}/${chapterPage}"
|
||||||
|
|
||||||
|
# Download every page and save in target file
|
||||||
|
$pageFormat = ('{0:d2}' -f [int]$chapterPage)
|
||||||
|
$pageHtml = Invoke-WebRequest -UseBasicParsing -Uri $pageUrl
|
||||||
|
Invoke-WebRequest -UseBasicParsing -Uri $pageHtml.Images.src -OutFile (Join-Path -Path $outputPath -ChildPath "${pageFormat}.jpg") #"${outputPath}\${pageFormat}.jpg"
|
||||||
|
|
||||||
|
Remove-Variable $usedVarsForeachChapterPage
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-Variable $usedVarsDownloadChapter
|
||||||
|
}
|
||||||
|
|
||||||
|
### Main ###
|
||||||
|
$currentChapter = $startChapter
|
||||||
|
$seriesUrl = "${baseUrl}/${seriesId}"
|
||||||
|
$basePath = (Resolve-Path $outputFolder)
|
||||||
|
$seriesPath = (Join-Path -Path $basePath -ChildPath $seriesId)
|
||||||
|
|
||||||
|
If (!(Test-Path $seriesPath)) {
|
||||||
|
New-Item -Path $seriesPath -ItemType Directory
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($completeSeries) {
|
||||||
|
$seriesHtml = Invoke-WebRequest -UseBasicParsing -Uri $seriesUrl
|
||||||
|
$seriesHtmlCut1 = $seriesHtml.Content.Substring($seriesHtml.Content.IndexOf("<table id=`"listing`">"))
|
||||||
|
$seriesHtmlCut2 = $seriesHtmlCut1.Substring(0, ($seriesHtmlCut1.IndexOf("</table>")-1))
|
||||||
|
$seriesPattern = '(?<=<a href=\"\/' + [Regex]::Escape("${seriesId}") +'\/)\d+(?=\">)'
|
||||||
|
$seriesListing = $seriesHtmlCut2 | Select-String -Pattern $seriesPattern -AllMatches | % {$_.Matches} | % {$_.Value}
|
||||||
|
$endChapter = $seriesListing.Count
|
||||||
|
}
|
||||||
|
|
||||||
|
While ($currentChapter -le $endChapter) {
|
||||||
|
[string]$chapterFormat = ('{0:d3}' -f [int]$currentChapter)
|
||||||
|
[string]$chapterPath = (Join-Path -Path $seriesPath -ChildPath $chapterFormat)
|
||||||
|
|
||||||
|
If (!(Test-Path $chapterPath)) {
|
||||||
|
New-Item -ItemType Directory -Path $chapterPath
|
||||||
|
}
|
||||||
|
|
||||||
|
DownloadChapter -chapterNr $currentChapter -outputPath $chapterPath
|
||||||
|
|
||||||
|
if ($seriesName) {
|
||||||
|
$ebookName = "${seriesName} - Chapter ${chapterFormat}"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$ebookName = "${chapterFormat}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Dependency on ImageMagick 'convert.exe' being in $PATH
|
||||||
|
convert "${chapterPath}\*.jpg" "${seriesPath}\${ebookName}.pdf"
|
||||||
|
|
||||||
|
Remove-Item -Path "${chapterPath}" -Recurse
|
||||||
|
|
||||||
|
Remove-Variable $usedVarsCurrentChapter
|
||||||
|
$currentChapter++
|
||||||
|
}
|
Loading…
Reference in New Issue