public/Get-BookMetadata.ps1
|
function Get-BookMetadata { [CmdletBinding()] Param( [Parameter(Mandatory)] [String] $ISBN ) end { try { $BookInfo = Invoke-RestMethod -Uri "https://openlibrary.org/isbn/$ISBN.json" -ErrorAction Stop $CoverUrl = if ($BookInfo.covers -and $BookInfo.covers.Count -gt 0) { "https://covers.openlibrary.org/b/id/$($BookInfo.covers[0])-M.jpg" } else { $null } # Create book object $Book = [pscustomobject]@{ ISBN = if ($BookInfo.isbn_13) { $BookInfo.isbn_13[0] } else { $ISBN } Title = $BookInfo.title PublishDate = $BookInfo.publish_date Publishers = $BookInfo.publishers -join ', ' NumberOfPages = $BookInfo.number_of_pages CoverUrl = $CoverUrl FirstSentence = $BookInfo.first_sentence.value ScannedAt = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' } $Book } catch { Write-Warning -Message 'Book not found, writing generic record' $Book = [PSCustomObject]@{ ISBN = $ISBN Title = "Unknown (ISBN: $ISBN)" PublishDate = 'N/A' Publishers = 'N/A' NumberOfPages = $null CoverUrl = $null FirstSentence = 'N/A' ScannedAt = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' } $Book } } } |