Public/Get-JVNfo.ps1
#Requires -PSEdition Core function Get-JVNfo { [CmdletBinding()] param( [Parameter(ValueFromPipelineByPropertyName = $true)] [AllowEmptyString()] [String]$Id, [Parameter(ValueFromPipelineByPropertyName = $true)] [AllowEmptyString()] [String]$DisplayName, [Parameter(ValueFromPipelineByPropertyName = $true)] [AllowEmptyString()] [String]$Title, [Parameter(ValueFromPipelineByPropertyName = $true)] [AllowEmptyString()] [String]$AlternateTitle, [Parameter(ValueFromPipelineByPropertyName = $true)] [AllowEmptyString()] [String]$Description, [Parameter(ValueFromPipelineByPropertyName = $true)] [PSObject]$Rating, [Parameter(ValueFromPipelineByPropertyName = $true)] [AllowEmptyString()] [String]$ReleaseDate, [Parameter(ValueFromPipelineByPropertyName = $true)] [AllowEmptyString()] [String]$Runtime, [Parameter(ValueFromPipelineByPropertyName = $true)] [AllowEmptyString()] [String]$Director, [Parameter(ValueFromPipelineByPropertyName = $true)] [AllowEmptyString()] [String]$Maker, [Parameter(ValueFromPipelineByPropertyName = $true)] [AllowEmptyString()] [String]$Label, [Parameter(ValueFromPipelineByPropertyName = $true)] [AllowEmptyString()] [String]$Series, [Parameter(ValueFromPipelineByPropertyName = $true)] [PSObject]$Actress, [Parameter(ValueFromPipelineByPropertyName = $true)] [Array]$Genre, [Parameter(ValueFromPipelineByPropertyName = $true)] [String]$CoverUrl, [Parameter(ValueFromPipelineByPropertyName = $true)] [Array]$ScreenshotUrl, [Parameter(ValueFromPipelineByPropertyName = $true)] [AllowEmptyString()] [String]$TrailerUrl, [Parameter()] [Boolean]$ActressLanguageJa, [Parameter()] [Boolean]$NameOrder, [Parameter()] [Boolean]$AddTag ) process { function Convert-NfoChar { [CmdletBinding()] param ( [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)] [AllowEmptyString()] [String]$String ) process { $newString = ((($String -replace '&', '&') -replace '<', '(') -replace '>', ')') -replace '/', '-' Write-Output $newString } } $DisplayName = Convert-NfoChar -String $DisplayName -ErrorAction SilentlyContinue $AlternateTitle = Convert-NfoChar -String $AlternateTitle -ErrorAction SilentlyContinue $Title = Convert-NfoChar -String $Title -ErrorAction SilentlyContinue $Description = Convert-NfoChar -String $Description -ErrorAction SilentlyContinue $Director = Convert-NfoChar -String $Director -ErrorAction SilentlyContinue $Maker = Convert-NfoChar -String $Maker -ErrorAction SilentlyContinue $Label = Convert-NfoChar -String $Label -ErrorAction SilentlyContinue $Series = Convert-NfoChar -String $Series -ErrorAction SilentlyContinue $releaseYear = ($ReleaseDate -split '-')[0] $nfoString = @" <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <movie> <title>$DisplayName</title> <originaltitle>$AlternateTitle</originaltitle> <id>$Id</id> <releasedate>$ReleaseDate</releasedate> <year>$releaseYear</year> <director>$Director</director> <studio>$Maker</studio> <rating>$($Rating.Rating)</rating> <votes>$($Rating.Votes)</votes> <plot>$Description</plot> <runtime>$Runtime</runtime> <trailer>$TrailerUrl</trailer> <mpaa>XXX</mpaa> <set>$Series</set> "@ if ($AddTag) { $tagNfoString = @" <tag>$Series</tag> "@ $nfoString = $nfoString + $tagNfoString } foreach ($item in $Genre) { $item = Convert-NfoChar -String $item $genreNfoString = @" <genre>$item</genre> "@ $nfoString = $nfoString + $genreNfoString } foreach ($item in $Actress) { $actressName = $null if ($ActressLanguageJa) { if ($null -ne $item.JapaneseName) { $actressName = ($item.JapaneseName) } if ($null -eq $actressName) { if ($null -ne $item.FirstName -or $null -ne $item.LastName) { if ($NameOrder) { $actressName = ("$($item.FirstName) $($item.LastName)").Trim() } else { $actressName = ("$($item.LastName) $($item.FirstName)").Trim() } } } } else { if ($null -ne $item.FirstName -or $null -ne $item.LastName) { if ($NameOrder) { $actressName = ("$($item.FirstName) $($item.LastName)").Trim() } else { $actressName = ("$($item.LastName) $($item.FirstName)").Trim() } } if ($null -eq $actressName) { if ($null -ne $item.JapaneseName) { $actressName = ($item.JapaneseName).Trim() } } } $actressNfoString = @" <actor> <name>$actressName</name> <altname>$($item.JapaneseName)</altname> <thumb>$($item.ThumbUrl)</thumb> <role>Actress</role> </actor> "@ $nfoString = $nfoString + $actressNfoString } $endNfoString = @" </movie> "@ $nfoString = $nfoString + $endNfoString Write-Output $nfoString } } |