Skip to content

Instantly share code, notes, and snippets.

@go2tom42
Created October 8, 2024 04:39
Show Gist options
  • Save go2tom42/fa8102f32883183dcc6950436bdb8a5e to your computer and use it in GitHub Desktop.
Save go2tom42/fa8102f32883183dcc6950436bdb8a5e to your computer and use it in GitHub Desktop.
Converts Comic Book Metadata, ComicInfo.xml to ComicBookInfo.txt
#Usage Convert-CIX2CBI -in "Path\ComicInfo.xml" -out "Path\ComicBookInfo.txt"
function Convert-CIX2CBI {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)]
$Infile,
[Parameter(Mandatory = $false)]
$Outfile = $Input.replace('xml','json')
)
[xml]$ComicInfoData = Get-Content $Infile
$Writers = @()
if ($ComicInfoData.ComicInfo.Writer) {
if ($ComicInfoData.ComicInfo.Writer.split(",").count -gt 1) {
foreach ($Writer in $ComicInfoData.ComicInfo.Writer.split(",")) {
$tempObject = [PSCustomObject]@{ person = $Writer ; role = 'Writer'; primary = $false }
$writers += $tempObject
}
} elseif ($ComicInfoData.ComicInfo.Writer.split(",").count -eq 1) {
$tempObject = [PSCustomObject]@{ person = $ComicInfoData.ComicInfo.Writer ; role = 'Writer'; primary = $false }
$Writers += $tempObject
}
}
$Editors = @()
if ($ComicInfoData.ComicInfo.Editor) {
if ($ComicInfoData.ComicInfo.Editor.split(",").count -gt 1) {
foreach ($Editor in $ComicInfoData.ComicInfo.Editor.split(",")) {
$tempObject = [PSCustomObject]@{ person = $Editor ; role = 'Editor'; primary = $false }
$Editors += $tempObject
}
} elseif ($ComicInfoData.ComicInfo.Editor.split(",").count -eq 1) {
$tempObject = [PSCustomObject]@{ person = $ComicInfoData.ComicInfo.Editor ; role = 'Editor'; primary = $false }
$Editors += $tempObject
}
}
$Pencillers = @()
if ($ComicInfoData.ComicInfo.Penciller) {
if ($ComicInfoData.ComicInfo.Penciller.split(",").count -gt 1) {
foreach ($Penciller in $ComicInfoData.ComicInfo.Penciller.split(",")) {
$tempObject = [PSCustomObject]@{ person = $Penciller ; role = 'Penciller'; primary = $false }
$Pencillers += $tempObject
}
} elseif ($ComicInfoData.ComicInfo.Penciller.split(",").count -eq 1) {
$tempObject = [PSCustomObject]@{ person = $ComicInfoData.ComicInfo.Penciller ; role = 'Penciller'; primary = $false }
$Pencillers += $tempObject
}
}
$Inkers = @()
if ($ComicInfoData.ComicInfo.Inker) {
if ($ComicInfoData.ComicInfo.Inker.split(",").count -gt 1) {
foreach ($Inker in $ComicInfoData.ComicInfo.Inker.split(",")) {
$tempObject = [PSCustomObject]@{ person = $Inker ; role = 'Inker'; primary = $false }
$Inkers += $tempObject
}
} elseif ($ComicInfoData.ComicInfo.Inker.split(",").count -eq 1) {
$tempObject = [PSCustomObject]@{ person = $ComicInfoData.ComicInfo.Inker ; role = 'Inker'; primary = $false }
$Inkers += $tempObject
}
}
$Colorists = @()
if ($ComicInfoData.ComicInfo.Colorist) {
if ($ComicInfoData.ComicInfo.Colorist.split(",").count -gt 1) {
foreach ($Colorist in $ComicInfoData.ComicInfo.Colorist.split(",")) {
$tempObject = [PSCustomObject]@{ person = $Colorist ; role = 'Colorist'; primary = $false }
$Colorists += $tempObject
}
} elseif ($ComicInfoData.ComicInfo.Colorist.split(",").count -eq 1) {
$tempObject = [PSCustomObject]@{ person = $ComicInfoData.ComicInfo.Colorist ; role = 'Colorist'; primary = $false }
$Colorists += $tempObject
}
}
$Letterers = @()
if ($ComicInfoData.ComicInfo.Letterer) {
if ($ComicInfoData.ComicInfo.Letterer.split(",").count -gt 1) {
foreach ($Letterer in $ComicInfoData.ComicInfo.Letterer.split(",")) {
$tempObject = [PSCustomObject]@{ person = $Letterer ; role = 'Letterer'; primary = $false }
$Letterers += $tempObject
}
} elseif ($ComicInfoData.ComicInfo.Letterer.split(",").count -eq 1) {
$tempObject = [PSCustomObject]@{ person = $ComicInfoData.ComicInfo.Letterer ; role = 'Letterer'; primary = $false }
$Letterers += $tempObject
}
}
$credits = @()
$credits += $Writers; $credits += $Pencillers; $credits += $Inkers; $credits += $Colorists; $credits += $Letterers ; $credits += $Editors
$gold = [PSCustomObject]@{
series = $ComicInfoData.ComicInfo.Series
title = $ComicInfoData.ComicInfo.Title
issue = $ComicInfoData.ComicInfo.Number
publisher = $ComicInfoData.ComicInfo.Publisher
publicationMonth = $ComicInfoData.ComicInfo.Month
publicationYear = $ComicInfoData.ComicInfo.Year
numberOfIssues = $ComicInfoData.ComicInfo.Count
comments = $ComicInfoData.ComicInfo.Summary
genre = $ComicInfoData.ComicInfo.Genre
volume = $ComicInfoData.ComicInfo.Volume
language = $ComicInfoData.ComicInfo.LanguageISO
credits = $credits
tags = @()
}
$tempObject = [PSCustomObject]@{ appID = 'ComicTagger/1.0.0' ; lastModified = $(Get-Date -Format "yyyy-MM-dd HH:mm:ss.ffffff"); 'ComicBookInfo/1.0' = $gold }
($tempObject | ConvertTo-Json -depth 99).replace("`n","").replace("`r","").replace(" ","") | Out-File $Outfile
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment