Private/Scraper.Aventertainment.ps1

function Get-AventertainmentId {
    param (
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [Object]$Webrequest
    )

    process {
        try {
            $id = ($Webrequest.Content | Select-String -Pattern '<span class="tag-title">(.*)<\/span>').Matches.Groups[1].Value
        } catch {
            return
        }

        if ($id -eq '') {
            $id = $null
        }

        Write-Output $Id
    }
}

function Get-AventertainmentTitle {
    param (
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [Object]$Webrequest
    )

    process {
        try {
            $title = ($Webrequest.Content | Select-String -Pattern '<title>(.*)\s?(\| AVentertainments\.com)<\/title>').Matches.Groups[1].Value
        } catch {
            return
        }

        $title = Convert-HtmlCharacter -String $title

        if ($title -eq '') {
            $title = $null
        }

        Write-Output $Title
    }
}

function Get-AventertainmentReleaseDate {
    param (
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [Object]$Webrequest
    )

    process {
        try {
            $releaseDate = ($Webrequest.Content | Select-String -Pattern '<span class="value">(\d*\/\d*\/\d*)\s*<span class="text-warning">').Matches.Groups[1].Value
        } catch {
            return
        }

        $releaseDate = Get-Date $releaseDate -Format "yyyy-MM-dd"

        Write-Output $releaseDate
    }
}

function Get-AventertainmentReleaseYear {
    param (
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [Object]$Webrequest
    )

    process {
        $releaseYear = Get-AventertainmentReleaseDate -WebRequest $Webrequest
        $releaseYear = ($releaseYear -split '-')[0]

        Write-Output $releaseYear
    }
}

function Get-AventertainmentRuntime {
    param (
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [Object]$Webrequest
    )

    process {
        try {
            $length = ($Webrequest.Content | Select-String -Pattern '<span class="value">(\d*:\d*:.*)<\/span>').Matches.Groups[1].Value
            [Int]$hours, [Int]$minutes, [Int]$seconds = $length -split ':'
            $length = ($hours * 60 + $minutes).ToString()
        } catch {
            try {
                $length = ($Webrequest.Content | Select-String -Pattern 'Apx\.? (\d*) Min\.?').Matches.Groups[1].Value
            } catch {
                return
            }
        }

        Write-Output $length
    }
}

function Get-AventertainmentMaker {
    param (
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [Object]$Webrequest
    )

    process {
        try {
            $maker = ($Webrequest.Content | Select-String -Pattern '<a href=".*\/studio_products\.aspx\?StudioID=.*">(.*)<\/a><\/span>').Matches.Groups[1].Value
        } catch {
            try {
                $maker = ($Webrequest.Content | Select-String -Pattern '<a href=.*\/ppv_studioproducts.*>(.*)<\/a><\/span>').Matches.Groups[1].Value
            } catch {
                return
            }
        }

        $maker = Convert-HtmlCharacter -String $maker

        if ($maker -eq '') {
            $maker = $null
        }

        Write-Output $maker
    }
}

function Get-AventertainmentGenre {
    param (
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [Object]$Webrequest
    )

    process {
        $genreArray = @()

        try {
            $genres = (((($Webrequest.Content -split '<span class="value-category">')[1]) -split '<\/span>')[0] | Select-String -Pattern '<a href=".*subdept_products.*>(.*)<\/a>' -AllMatches).Matches | ForEach-Object { $_.Groups[1].Value }
        } catch {
            try {
                $genres = (((($Webrequest.Content -split '<span class="value-category">')[1]) -split '<\/span>')[0] | Select-String -Pattern '<a href=".*cat_id.*>(.*)<\/a>' -AllMatches).Matches | ForEach-Object { $_.Groups[1].Value }
            } catch {
                return
            }
        }

        foreach ($genre in $genres) {
            $genre = Convert-HtmlCharacter -String $genre
            $genreArray += $genre
        }

        if ($genreArray.Count -eq 0) {
            $genreArray = $null
        }

        Write-Output $genreArray
    }
}

function Get-AventertainmentActress {
    param (
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [Object]$Webrequest,

        [Parameter()]
        [String]$Url
    )

    process {
        function Get-Actress {
            param (
                [Parameter()]
                [Object]$Webrequest
            )

            process {
                try {
                    $actress = (($Webrequest.Content | Select-String -Pattern "<a href=.*\/ActressDetail\.aspx\?languageID=\d&actressname=(.*)>(.*)<\/a>").Matches.Value -split '<\/a>') | ForEach-Object { (($_ -split '>')[1]) }
                    $actress = $actress | Where-Object { $null -ne $_ -and $_ -ne '' } | ForEach-Object { ($_).Trim() }
                } catch {
                    # Do nothing
                }

                if ($null -eq $actress -or $actress -eq '') {
                    try {
                        $actress = (($Webrequest.Content | Select-String -Pattern "<a href=.*\/ppv_ActressDetail\.aspx\?languageID=\d&actressname=(.*)>(.*)<\/a>").Matches.Value -split '<\/a>') | ForEach-Object { (($_ -split '>')[1]) }
                        $actress = $actress | Where-Object { $null -ne $_ -and $_ -ne '' } | ForEach-Object { ($_).Trim() }
                    } catch {
                        return
                    }
                }

                Write-Output $actress
            }
        }

        $movieActressObject = @()
        $enActressUrl = $Url -replace 'languageID=\d', 'languageID=1'
        $jaActressUrl = $Url -replace 'languageID=\d', 'languageID=2'

        if ($Url -match 'languageID=1') {
            $jaWebrequest = Invoke-WebRequest -Uri $jaActressUrl -Method Get -Verbose:$false
            $enActress = Get-Actress -Webrequest $Webrequest
            $jaActress = Get-Actress -Webrequest $jaWebrequest
        } else {
            $enWebrequest = Invoke-WebRequest -Uri $enActressUrl -Method Get -Verbose:$false
            $enActress = Get-Actress -Webrequest $enWebrequest
            $jaActress = Get-Actress -Webrequest $Webrequest
        }

        for ($x = 0; $x -lt $enActress.Count; $x++) {
            if ($enActress.Count -eq 1) {
                if ($jaActress -notmatch '[\u3040-\u309f]|[\u30a0-\u30ff]|[\uff66-\uff9f]|[\u4e00-\u9faf]') {
                    $jaActress = $null
                }
                $movieActressObject += [PSCustomObject]@{
                    LastName     = ($enActress -split ' ')[1] -replace '\\', ''
                    FirstName    = ($enActress -split ' ')[0] -replace '\\', ''
                    JapaneseName = $jaActress
                    ThumbUrl     = $null
                }
            } else {
                if ($jaActress[$x] -notmatch '[\u3040-\u309f]|[\u30a0-\u30ff]|[\uff66-\uff9f]|[\u4e00-\u9faf]') {
                    $jaActress[$x] = $null
                }
                $movieActressObject += [PSCustomObject]@{
                    LastName     = ($enActress[$x] -split ' ')[1] -replace '\\', ''
                    FirstName    = ($enActress[$x] -split ' ')[0] -replace '\\', ''
                    JapaneseName = $jaActress[$x]
                    ThumbUrl     = $null
                }
            }
        }

        if ($movieActressObject.Count -eq 0) {
            $movieActressObject = $null
        }

        Write-Output $movieActressObject
    }
}

function Get-AventertainmentCoverUrl {
    param (
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [Object]$Webrequest
    )

    process {
        try {
            $coverUrl = ($Webrequest.Content | Select-String -Pattern 'href="(.*\/bigcover\/.*\.jpg)" role="button">(ジャケット画像|Cover\sJacket)<\/a>').Matches.Groups[1].Value
        } catch {
            try {
                $coverUrl = ($Webrequest.Content | Select-String -Pattern "<a class='lightbox' href='(.*\/vodimages\/gallery\/large\/.*\.jpg)'>").Matches.Groups[1].Value
            } catch {
                return
            }
        }

        Write-Output $coverUrl
    }
}

function Get-AventertainmentScreenshotUrl {
    param (
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [Object]$Webrequest
    )

    process {
        try {
            $screenshotUrl = ($Webrequest.Content | Select-String -Pattern "<a class='lightbox' href='(.*\/vodimages\/screenshot\/large\/.*\.jpg)'>").Matches.Groups[1].Value
            $screenshotUrl = (($screenshotUrl -split '<img src=' -split 'href=') | Select-String -Pattern "'(.*\/vodimages\/screenshot\/large\/.*\.jpg)" -AllMatches).Matches | ForEach-Object { $_.Groups[1].Value }
        } catch {
            return
        }

        Write-Output $screenshotUrl
    }
}

function Get-AventertainmentTrailerUrl {
    param (
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [Object]$Webrequest
    )

    process {
        Write-Output $trailerUrl
    }
}