diff --git a/SabreTools.Serialization/ArchiveDotOrg.Deserializer.cs b/SabreTools.Serialization/ArchiveDotOrg.Deserializer.cs index e08f409e..f34ebbff 100644 --- a/SabreTools.Serialization/ArchiveDotOrg.Deserializer.cs +++ b/SabreTools.Serialization/ArchiveDotOrg.Deserializer.cs @@ -8,120 +8,95 @@ namespace SabreTools.Serialization /// public partial class ArchiveDotOrg : XmlSerializer { + // TODO: Add deserialization of entire Files #region Internal /// - /// Convert from to + /// Convert from to an array of /// - public static Models.Internal.MetadataFile ConvertToInternalModel(Files item) + public static File[]? ConvertFromInternalModel(Models.Internal.Machine? item) { - var metadataFile = new Models.Internal.MetadataFile - { - [Models.Internal.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), - }; + if (item == null) + return null; - if (item?.File != null && item.File.Any()) - metadataFile[Models.Internal.MetadataFile.MachineKey] = item.File.Select(ConvertMachineToInternalModel).ToArray(); - - return metadataFile; + var roms = item.Read(Models.Internal.Machine.RomKey); + return roms?.Select(ConvertFromInternalModel)?.ToArray(); } /// - /// Convert from to + /// Convert from to /// - private static Models.Internal.Header ConvertHeaderToInternalModel(Files item) + private static File? ConvertFromInternalModel(Models.Internal.Rom? item) { - var header = new Models.Internal.Header + if (item == null) + return null; + + var file = new File { - [Models.Internal.Header.NameKey] = "archive.org", + Name = item.ReadString(Models.Internal.Rom.NameKey), + Source = item.ReadString(Models.Internal.Rom.SourceKey), + BitTorrentMagnetHash = item.ReadString(Models.Internal.Rom.BitTorrentMagnetHashKey), + LastModifiedTime = item.ReadString(Models.Internal.Rom.LastModifiedTimeKey), + Size = item.ReadString(Models.Internal.Rom.SizeKey), + MD5 = item.ReadString(Models.Internal.Rom.MD5Key), + CRC32 = item.ReadString(Models.Internal.Rom.CRCKey), + SHA1 = item.ReadString(Models.Internal.Rom.SHA1Key), + FileCount = item.ReadString(Models.Internal.Rom.FileCountKey), + Format = item.ReadString(Models.Internal.Rom.FormatKey), + Original = item.ReadString(Models.Internal.Rom.OriginalKey), + Summation = item.ReadString(Models.Internal.Rom.SummationKey), + MatrixNumber = item.ReadString(Models.Internal.Rom.MatrixNumberKey), + CollectionCatalogNumber = item.ReadString(Models.Internal.Rom.CollectionCatalogNumberKey), + Comment = item.ReadString(Models.Internal.Rom.CommentKey), + + ASRDetectedLang = item.ReadString(Models.Internal.Rom.ASRDetectedLangKey), + ASRDetectedLangConf = item.ReadString(Models.Internal.Rom.ASRDetectedLangConfKey), + ASRTranscribedLang = item.ReadString(Models.Internal.Rom.ASRTranscribedLangKey), + WhisperASRModuleVersion = item.ReadString(Models.Internal.Rom.WhisperASRModuleVersionKey), + WhisperModelHash = item.ReadString(Models.Internal.Rom.WhisperModelHashKey), + WhisperModelName = item.ReadString(Models.Internal.Rom.WhisperModelNameKey), + WhisperVersion = item.ReadString(Models.Internal.Rom.WhisperVersionKey), + + ClothCoverDetectionModuleVersion = item.ReadString(Models.Internal.Rom.ClothCoverDetectionModuleVersionKey), + hOCRCharToWordhOCRVersion = item.ReadString(Models.Internal.Rom.hOCRCharToWordhOCRVersionKey), + hOCRCharToWordModuleVersion = item.ReadString(Models.Internal.Rom.hOCRCharToWordModuleVersionKey), + hOCRFtsTexthOCRVersion = item.ReadString(Models.Internal.Rom.hOCRFtsTexthOCRVersionKey), + hOCRFtsTextModuleVersion = item.ReadString(Models.Internal.Rom.hOCRFtsTextModuleVersionKey), + hOCRPageIndexhOCRVersion = item.ReadString(Models.Internal.Rom.hOCRPageIndexhOCRVersionKey), + hOCRPageIndexModuleVersion = item.ReadString(Models.Internal.Rom.hOCRPageIndexModuleVersionKey), + TesseractOCR = item.ReadString(Models.Internal.Rom.TesseractOCRKey), + TesseractOCRConverted = item.ReadString(Models.Internal.Rom.TesseractOCRConvertedKey), + TesseractOCRDetectedLang = item.ReadString(Models.Internal.Rom.TesseractOCRDetectedLangKey), + TesseractOCRDetectedLangConf = item.ReadString(Models.Internal.Rom.TesseractOCRDetectedLangConfKey), + TesseractOCRDetectedScript = item.ReadString(Models.Internal.Rom.TesseractOCRDetectedScriptKey), + TesseractOCRDetectedScriptConf = item.ReadString(Models.Internal.Rom.TesseractOCRDetectedScriptConfKey), + TesseractOCRModuleVersion = item.ReadString(Models.Internal.Rom.TesseractOCRModuleVersionKey), + TesseractOCRParameters = item.ReadString(Models.Internal.Rom.TesseractOCRParametersKey), + PDFModuleVersion = item.ReadString(Models.Internal.Rom.PDFModuleVersionKey), + WordConfidenceInterval0To10 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval0To10Key), + WordConfidenceInterval11To20 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval11To20Key), + WordConfidenceInterval21To30 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval21To30Key), + WordConfidenceInterval31To40 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval31To40Key), + WordConfidenceInterval41To50 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval41To50Key), + WordConfidenceInterval51To60 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval51To60Key), + WordConfidenceInterval61To70 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval61To70Key), + WordConfidenceInterval71To80 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval71To80Key), + WordConfidenceInterval81To90 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval81To90Key), + WordConfidenceInterval91To100 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval91To100Key), + + Album = item.ReadString(Models.Internal.Rom.AlbumKey), + Artist = item.ReadString(Models.Internal.Rom.ArtistKey), + Bitrate = item.ReadString(Models.Internal.Rom.BitrateKey), + Creator = item.ReadString(Models.Internal.Rom.CreatorKey), + Height = item.ReadString(Models.Internal.Rom.HeightKey), + Length = item.ReadString(Models.Internal.Rom.LengthKey), + PreviewImage = item.ReadString(Models.Internal.Rom.PreviewImageKey), + Rotation = item.ReadString(Models.Internal.Rom.RotationKey), + Title = item.ReadString(Models.Internal.Rom.TitleKey), + Track = item.ReadString(Models.Internal.Rom.TrackKey), + Width = item.ReadString(Models.Internal.Rom.WidthKey), }; - return header; - } - - /// - /// Convert from to - /// - private static Models.Internal.Machine ConvertMachineToInternalModel(File item) - { - var machine = new Models.Internal.Machine - { - [Models.Internal.Machine.RomKey] = ConvertToInternalModel(item), - }; - return machine; - } - - /// - /// Convert from to - /// - private static Models.Internal.Rom ConvertToInternalModel(File item) - { - var rom = new Models.Internal.Rom - { - [Models.Internal.Rom.NameKey] = item.Name, - [Models.Internal.Rom.SourceKey] = item.Source, - [Models.Internal.Rom.BitTorrentMagnetHashKey] = item.BitTorrentMagnetHash, - [Models.Internal.Rom.LastModifiedTimeKey] = item.LastModifiedTime, - [Models.Internal.Rom.SizeKey] = item.Size, - [Models.Internal.Rom.MD5Key] = item.MD5, - [Models.Internal.Rom.CRCKey] = item.CRC32, - [Models.Internal.Rom.SHA1Key] = item.SHA1, - [Models.Internal.Rom.FileCountKey] = item.FileCount, - [Models.Internal.Rom.FormatKey] = item.Format, - [Models.Internal.Rom.OriginalKey] = item.Original, - [Models.Internal.Rom.SummationKey] = item.Summation, - [Models.Internal.Rom.MatrixNumberKey] = item.MatrixNumber, - [Models.Internal.Rom.CollectionCatalogNumberKey] = item.CollectionCatalogNumber, - [Models.Internal.Rom.PublisherKey] = item.Publisher, - [Models.Internal.Rom.CommentKey] = item.Comment, - - [Models.Internal.Rom.ASRDetectedLangKey] = item.ASRDetectedLang, - [Models.Internal.Rom.ASRDetectedLangConfKey] = item.ASRDetectedLangConf, - [Models.Internal.Rom.ASRTranscribedLangKey] = item.ASRTranscribedLang, - [Models.Internal.Rom.WhisperASRModuleVersionKey] = item.WhisperASRModuleVersion, - [Models.Internal.Rom.WhisperModelHashKey] = item.WhisperModelHash, - [Models.Internal.Rom.WhisperModelNameKey] = item.WhisperModelName, - [Models.Internal.Rom.WhisperVersionKey] = item.WhisperVersion, - - [Models.Internal.Rom.ClothCoverDetectionModuleVersionKey] = item.ClothCoverDetectionModuleVersion, - [Models.Internal.Rom.hOCRCharToWordhOCRVersionKey] = item.hOCRCharToWordhOCRVersion, - [Models.Internal.Rom.hOCRCharToWordModuleVersionKey] = item.hOCRCharToWordModuleVersion, - [Models.Internal.Rom.hOCRFtsTexthOCRVersionKey] = item.hOCRFtsTexthOCRVersion, - [Models.Internal.Rom.hOCRFtsTextModuleVersionKey] = item.hOCRFtsTextModuleVersion, - [Models.Internal.Rom.hOCRPageIndexhOCRVersionKey] = item.hOCRPageIndexhOCRVersion, - [Models.Internal.Rom.hOCRPageIndexModuleVersionKey] = item.hOCRPageIndexModuleVersion, - [Models.Internal.Rom.TesseractOCRKey] = item.TesseractOCR, - [Models.Internal.Rom.TesseractOCRConvertedKey] = item.TesseractOCRConverted, - [Models.Internal.Rom.TesseractOCRDetectedLangKey] = item.TesseractOCRDetectedLang, - [Models.Internal.Rom.TesseractOCRDetectedLangConfKey] = item.TesseractOCRDetectedLangConf, - [Models.Internal.Rom.TesseractOCRDetectedScriptKey] = item.TesseractOCRDetectedScript, - [Models.Internal.Rom.TesseractOCRDetectedScriptConfKey] = item.TesseractOCRDetectedScriptConf, - [Models.Internal.Rom.TesseractOCRModuleVersionKey] = item.TesseractOCRModuleVersion, - [Models.Internal.Rom.TesseractOCRParametersKey] = item.TesseractOCRParameters, - [Models.Internal.Rom.PDFModuleVersionKey] = item.PDFModuleVersion, - [Models.Internal.Rom.WordConfidenceInterval0To10Key] = item.WordConfidenceInterval0To10, - [Models.Internal.Rom.WordConfidenceInterval11To20Key] = item.WordConfidenceInterval11To20, - [Models.Internal.Rom.WordConfidenceInterval21To30Key] = item.WordConfidenceInterval21To30, - [Models.Internal.Rom.WordConfidenceInterval31To40Key] = item.WordConfidenceInterval31To40, - [Models.Internal.Rom.WordConfidenceInterval41To50Key] = item.WordConfidenceInterval41To50, - [Models.Internal.Rom.WordConfidenceInterval51To60Key] = item.WordConfidenceInterval51To60, - [Models.Internal.Rom.WordConfidenceInterval61To70Key] = item.WordConfidenceInterval61To70, - [Models.Internal.Rom.WordConfidenceInterval71To80Key] = item.WordConfidenceInterval71To80, - [Models.Internal.Rom.WordConfidenceInterval81To90Key] = item.WordConfidenceInterval81To90, - [Models.Internal.Rom.WordConfidenceInterval91To100Key] = item.WordConfidenceInterval91To100, - - [Models.Internal.Rom.AlbumKey] = item.Album, - [Models.Internal.Rom.ArtistKey] = item.Artist, - [Models.Internal.Rom.BitrateKey] = item.Bitrate, - [Models.Internal.Rom.CreatorKey] = item.Creator, - [Models.Internal.Rom.HeightKey] = item.Height, - [Models.Internal.Rom.LengthKey] = item.Length, - [Models.Internal.Rom.PreviewImageKey] = item.PreviewImage, - [Models.Internal.Rom.RotationKey] = item.Rotation, - [Models.Internal.Rom.TitleKey] = item.Title, - [Models.Internal.Rom.TrackKey] = item.Track, - [Models.Internal.Rom.WidthKey] = item.Width, - }; - return rom; + return file; } #endregion diff --git a/SabreTools.Serialization/ArchiveDotOrg.Serializer.cs b/SabreTools.Serialization/ArchiveDotOrg.Serializer.cs index d74fc484..161e5c35 100644 --- a/SabreTools.Serialization/ArchiveDotOrg.Serializer.cs +++ b/SabreTools.Serialization/ArchiveDotOrg.Serializer.cs @@ -8,95 +8,120 @@ namespace SabreTools.Serialization /// public partial class ArchiveDotOrg : XmlSerializer { - // TODO: Add serialization of entire Files #region Internal /// - /// Convert from to an array of + /// Convert from to /// - public static File[]? ConvertFromInternalModel(Models.Internal.Machine? item) + public static Models.Internal.MetadataFile ConvertToInternalModel(Files item) { - if (item == null) - return null; + var metadataFile = new Models.Internal.MetadataFile + { + [Models.Internal.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + }; - var roms = item.Read(Models.Internal.Machine.RomKey); - return roms?.Select(ConvertFromInternalModel)?.ToArray(); + if (item?.File != null && item.File.Any()) + metadataFile[Models.Internal.MetadataFile.MachineKey] = item.File.Select(ConvertMachineToInternalModel).ToArray(); + + return metadataFile; } /// - /// Convert from to + /// Convert from to /// - private static File? ConvertFromInternalModel(Models.Internal.Rom? item) + private static Models.Internal.Header ConvertHeaderToInternalModel(Files item) { - if (item == null) - return null; - - var file = new File + var header = new Models.Internal.Header { - Name = item.ReadString(Models.Internal.Rom.NameKey), - Source = item.ReadString(Models.Internal.Rom.SourceKey), - BitTorrentMagnetHash = item.ReadString(Models.Internal.Rom.BitTorrentMagnetHashKey), - LastModifiedTime = item.ReadString(Models.Internal.Rom.LastModifiedTimeKey), - Size = item.ReadString(Models.Internal.Rom.SizeKey), - MD5 = item.ReadString(Models.Internal.Rom.MD5Key), - CRC32 = item.ReadString(Models.Internal.Rom.CRCKey), - SHA1 = item.ReadString(Models.Internal.Rom.SHA1Key), - FileCount = item.ReadString(Models.Internal.Rom.FileCountKey), - Format = item.ReadString(Models.Internal.Rom.FormatKey), - Original = item.ReadString(Models.Internal.Rom.OriginalKey), - Summation = item.ReadString(Models.Internal.Rom.SummationKey), - MatrixNumber = item.ReadString(Models.Internal.Rom.MatrixNumberKey), - CollectionCatalogNumber = item.ReadString(Models.Internal.Rom.CollectionCatalogNumberKey), - Comment = item.ReadString(Models.Internal.Rom.CommentKey), - - ASRDetectedLang = item.ReadString(Models.Internal.Rom.ASRDetectedLangKey), - ASRDetectedLangConf = item.ReadString(Models.Internal.Rom.ASRDetectedLangConfKey), - ASRTranscribedLang = item.ReadString(Models.Internal.Rom.ASRTranscribedLangKey), - WhisperASRModuleVersion = item.ReadString(Models.Internal.Rom.WhisperASRModuleVersionKey), - WhisperModelHash = item.ReadString(Models.Internal.Rom.WhisperModelHashKey), - WhisperModelName = item.ReadString(Models.Internal.Rom.WhisperModelNameKey), - WhisperVersion = item.ReadString(Models.Internal.Rom.WhisperVersionKey), - - ClothCoverDetectionModuleVersion = item.ReadString(Models.Internal.Rom.ClothCoverDetectionModuleVersionKey), - hOCRCharToWordhOCRVersion = item.ReadString(Models.Internal.Rom.hOCRCharToWordhOCRVersionKey), - hOCRCharToWordModuleVersion = item.ReadString(Models.Internal.Rom.hOCRCharToWordModuleVersionKey), - hOCRFtsTexthOCRVersion = item.ReadString(Models.Internal.Rom.hOCRFtsTexthOCRVersionKey), - hOCRFtsTextModuleVersion = item.ReadString(Models.Internal.Rom.hOCRFtsTextModuleVersionKey), - hOCRPageIndexhOCRVersion = item.ReadString(Models.Internal.Rom.hOCRPageIndexhOCRVersionKey), - hOCRPageIndexModuleVersion = item.ReadString(Models.Internal.Rom.hOCRPageIndexModuleVersionKey), - TesseractOCR = item.ReadString(Models.Internal.Rom.TesseractOCRKey), - TesseractOCRConverted = item.ReadString(Models.Internal.Rom.TesseractOCRConvertedKey), - TesseractOCRDetectedLang = item.ReadString(Models.Internal.Rom.TesseractOCRDetectedLangKey), - TesseractOCRDetectedLangConf = item.ReadString(Models.Internal.Rom.TesseractOCRDetectedLangConfKey), - TesseractOCRDetectedScript = item.ReadString(Models.Internal.Rom.TesseractOCRDetectedScriptKey), - TesseractOCRDetectedScriptConf = item.ReadString(Models.Internal.Rom.TesseractOCRDetectedScriptConfKey), - TesseractOCRModuleVersion = item.ReadString(Models.Internal.Rom.TesseractOCRModuleVersionKey), - TesseractOCRParameters = item.ReadString(Models.Internal.Rom.TesseractOCRParametersKey), - PDFModuleVersion = item.ReadString(Models.Internal.Rom.PDFModuleVersionKey), - WordConfidenceInterval0To10 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval0To10Key), - WordConfidenceInterval11To20 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval11To20Key), - WordConfidenceInterval21To30 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval21To30Key), - WordConfidenceInterval31To40 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval31To40Key), - WordConfidenceInterval41To50 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval41To50Key), - WordConfidenceInterval51To60 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval51To60Key), - WordConfidenceInterval61To70 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval61To70Key), - WordConfidenceInterval71To80 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval71To80Key), - WordConfidenceInterval81To90 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval81To90Key), - WordConfidenceInterval91To100 = item.ReadString(Models.Internal.Rom.WordConfidenceInterval91To100Key), - - Album = item.ReadString(Models.Internal.Rom.AlbumKey), - Artist = item.ReadString(Models.Internal.Rom.ArtistKey), - Bitrate = item.ReadString(Models.Internal.Rom.BitrateKey), - Creator = item.ReadString(Models.Internal.Rom.CreatorKey), - Height = item.ReadString(Models.Internal.Rom.HeightKey), - Length = item.ReadString(Models.Internal.Rom.LengthKey), - PreviewImage = item.ReadString(Models.Internal.Rom.PreviewImageKey), - Rotation = item.ReadString(Models.Internal.Rom.RotationKey), - Title = item.ReadString(Models.Internal.Rom.TitleKey), - Track = item.ReadString(Models.Internal.Rom.TrackKey), - Width = item.ReadString(Models.Internal.Rom.WidthKey), + [Models.Internal.Header.NameKey] = "archive.org", }; - return file; + return header; + } + + /// + /// Convert from to + /// + private static Models.Internal.Machine ConvertMachineToInternalModel(File item) + { + var machine = new Models.Internal.Machine + { + [Models.Internal.Machine.RomKey] = ConvertToInternalModel(item), + }; + return machine; + } + + /// + /// Convert from to + /// + private static Models.Internal.Rom ConvertToInternalModel(File item) + { + var rom = new Models.Internal.Rom + { + [Models.Internal.Rom.NameKey] = item.Name, + [Models.Internal.Rom.SourceKey] = item.Source, + [Models.Internal.Rom.BitTorrentMagnetHashKey] = item.BitTorrentMagnetHash, + [Models.Internal.Rom.LastModifiedTimeKey] = item.LastModifiedTime, + [Models.Internal.Rom.SizeKey] = item.Size, + [Models.Internal.Rom.MD5Key] = item.MD5, + [Models.Internal.Rom.CRCKey] = item.CRC32, + [Models.Internal.Rom.SHA1Key] = item.SHA1, + [Models.Internal.Rom.FileCountKey] = item.FileCount, + [Models.Internal.Rom.FormatKey] = item.Format, + [Models.Internal.Rom.OriginalKey] = item.Original, + [Models.Internal.Rom.SummationKey] = item.Summation, + [Models.Internal.Rom.MatrixNumberKey] = item.MatrixNumber, + [Models.Internal.Rom.CollectionCatalogNumberKey] = item.CollectionCatalogNumber, + [Models.Internal.Rom.PublisherKey] = item.Publisher, + [Models.Internal.Rom.CommentKey] = item.Comment, + + [Models.Internal.Rom.ASRDetectedLangKey] = item.ASRDetectedLang, + [Models.Internal.Rom.ASRDetectedLangConfKey] = item.ASRDetectedLangConf, + [Models.Internal.Rom.ASRTranscribedLangKey] = item.ASRTranscribedLang, + [Models.Internal.Rom.WhisperASRModuleVersionKey] = item.WhisperASRModuleVersion, + [Models.Internal.Rom.WhisperModelHashKey] = item.WhisperModelHash, + [Models.Internal.Rom.WhisperModelNameKey] = item.WhisperModelName, + [Models.Internal.Rom.WhisperVersionKey] = item.WhisperVersion, + + [Models.Internal.Rom.ClothCoverDetectionModuleVersionKey] = item.ClothCoverDetectionModuleVersion, + [Models.Internal.Rom.hOCRCharToWordhOCRVersionKey] = item.hOCRCharToWordhOCRVersion, + [Models.Internal.Rom.hOCRCharToWordModuleVersionKey] = item.hOCRCharToWordModuleVersion, + [Models.Internal.Rom.hOCRFtsTexthOCRVersionKey] = item.hOCRFtsTexthOCRVersion, + [Models.Internal.Rom.hOCRFtsTextModuleVersionKey] = item.hOCRFtsTextModuleVersion, + [Models.Internal.Rom.hOCRPageIndexhOCRVersionKey] = item.hOCRPageIndexhOCRVersion, + [Models.Internal.Rom.hOCRPageIndexModuleVersionKey] = item.hOCRPageIndexModuleVersion, + [Models.Internal.Rom.TesseractOCRKey] = item.TesseractOCR, + [Models.Internal.Rom.TesseractOCRConvertedKey] = item.TesseractOCRConverted, + [Models.Internal.Rom.TesseractOCRDetectedLangKey] = item.TesseractOCRDetectedLang, + [Models.Internal.Rom.TesseractOCRDetectedLangConfKey] = item.TesseractOCRDetectedLangConf, + [Models.Internal.Rom.TesseractOCRDetectedScriptKey] = item.TesseractOCRDetectedScript, + [Models.Internal.Rom.TesseractOCRDetectedScriptConfKey] = item.TesseractOCRDetectedScriptConf, + [Models.Internal.Rom.TesseractOCRModuleVersionKey] = item.TesseractOCRModuleVersion, + [Models.Internal.Rom.TesseractOCRParametersKey] = item.TesseractOCRParameters, + [Models.Internal.Rom.PDFModuleVersionKey] = item.PDFModuleVersion, + [Models.Internal.Rom.WordConfidenceInterval0To10Key] = item.WordConfidenceInterval0To10, + [Models.Internal.Rom.WordConfidenceInterval11To20Key] = item.WordConfidenceInterval11To20, + [Models.Internal.Rom.WordConfidenceInterval21To30Key] = item.WordConfidenceInterval21To30, + [Models.Internal.Rom.WordConfidenceInterval31To40Key] = item.WordConfidenceInterval31To40, + [Models.Internal.Rom.WordConfidenceInterval41To50Key] = item.WordConfidenceInterval41To50, + [Models.Internal.Rom.WordConfidenceInterval51To60Key] = item.WordConfidenceInterval51To60, + [Models.Internal.Rom.WordConfidenceInterval61To70Key] = item.WordConfidenceInterval61To70, + [Models.Internal.Rom.WordConfidenceInterval71To80Key] = item.WordConfidenceInterval71To80, + [Models.Internal.Rom.WordConfidenceInterval81To90Key] = item.WordConfidenceInterval81To90, + [Models.Internal.Rom.WordConfidenceInterval91To100Key] = item.WordConfidenceInterval91To100, + + [Models.Internal.Rom.AlbumKey] = item.Album, + [Models.Internal.Rom.ArtistKey] = item.Artist, + [Models.Internal.Rom.BitrateKey] = item.Bitrate, + [Models.Internal.Rom.CreatorKey] = item.Creator, + [Models.Internal.Rom.HeightKey] = item.Height, + [Models.Internal.Rom.LengthKey] = item.Length, + [Models.Internal.Rom.PreviewImageKey] = item.PreviewImage, + [Models.Internal.Rom.RotationKey] = item.Rotation, + [Models.Internal.Rom.TitleKey] = item.Title, + [Models.Internal.Rom.TrackKey] = item.Track, + [Models.Internal.Rom.WidthKey] = item.Width, + }; + return rom; } #endregion diff --git a/SabreTools.Serialization/AttractMode.Deserializer.cs b/SabreTools.Serialization/AttractMode.Deserializer.cs index 83de3bdb..ac5b5ab4 100644 --- a/SabreTools.Serialization/AttractMode.Deserializer.cs +++ b/SabreTools.Serialization/AttractMode.Deserializer.cs @@ -120,5 +120,82 @@ namespace SabreTools.Serialization dat.Row = rows.ToArray(); return dat; } + + // TODO: Add deserialization of entire MetadataFile + #region Internal + + /// + /// Convert from to + /// + public static MetadataFile? ConvertHeaderToInternalModel(Models.Internal.Header? item) + { + if (item == null) + return null; + + var metadataFile = new MetadataFile + { + Header = item.ReadStringArray(Models.Internal.Header.HeaderKey), + }; + return metadataFile; + } + + /// + /// Convert from to an array of + /// + public static Row?[]? ConvertMachineToInternalModel(Models.Internal.Machine? item) + { + if (item == null) + return null; + + var roms = item.Read(Models.Internal.Machine.RomKey); + return roms?.Select(rom => + { + if (rom == null) + return null; + + var rowItem = ConvertToInternalModel(rom); + + rowItem.Name = item.ReadString(Models.Internal.Machine.NameKey); + rowItem.Emulator = item.ReadString(Models.Internal.Machine.EmulatorKey); + rowItem.CloneOf = item.ReadString(Models.Internal.Machine.CloneOfKey); + rowItem.Year = item.ReadString(Models.Internal.Machine.YearKey); + rowItem.Manufacturer = item.ReadString(Models.Internal.Machine.ManufacturerKey); + rowItem.Category = item.ReadString(Models.Internal.Machine.CategoryKey); + rowItem.Players = item.ReadString(Models.Internal.Machine.PlayersKey); + rowItem.Rotation = item.ReadString(Models.Internal.Machine.RotationKey); + rowItem.Control = item.ReadString(Models.Internal.Machine.ControlKey); + rowItem.Status = item.ReadString(Models.Internal.Machine.StatusKey); + rowItem.DisplayCount = item.ReadString(Models.Internal.Machine.DisplayCountKey); + rowItem.DisplayType = item.ReadString(Models.Internal.Machine.DisplayTypeKey); + rowItem.Extra = item.ReadString(Models.Internal.Machine.ExtraKey); + rowItem.Buttons = item.ReadString(Models.Internal.Machine.ButtonsKey); + rowItem.Favorite = item.ReadString(Models.Internal.Machine.FavoriteKey); + rowItem.Tags = item.ReadString(Models.Internal.Machine.TagsKey); + rowItem.PlayedCount = item.ReadString(Models.Internal.Machine.PlayedCountKey); + rowItem.PlayedTime = item.ReadString(Models.Internal.Machine.PlayedTimeKey); + + return rowItem; + })?.ToArray(); + } + + /// + /// Convert from to + /// + private static Row? ConvertToInternalModel(Models.Internal.Rom? item) + { + if (item == null) + return null; + + var row = new Row + { + Title = item.ReadString(Models.Internal.Rom.NameKey), + AltRomname = item.ReadString(Models.Internal.Rom.AltRomnameKey), + AltTitle = item.ReadString(Models.Internal.Rom.AltTitleKey), + FileIsAvailable = item.ReadString(Models.Internal.Rom.FileIsAvailableKey), + }; + return row; + } + + #endregion } } \ No newline at end of file diff --git a/SabreTools.Serialization/AttractMode.Serializer.cs b/SabreTools.Serialization/AttractMode.Serializer.cs index 28ab85fd..34cea23e 100644 --- a/SabreTools.Serialization/AttractMode.Serializer.cs +++ b/SabreTools.Serialization/AttractMode.Serializer.cs @@ -99,5 +99,83 @@ namespace SabreTools.Serialization writer.Flush(); } } + + #region Internal + + /// + /// Convert from to + /// + public static Models.Internal.MetadataFile ConvertToInternalModel(MetadataFile item) + { + var metadataFile = new Models.Internal.MetadataFile + { + [Models.Internal.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + }; + + if (item?.Row != null && item.Row.Any()) + metadataFile[Models.Internal.MetadataFile.MachineKey] = item.Row.Select(ConvertMachineToInternalModel).ToArray(); + + return metadataFile; + } + + /// + /// Convert from to + /// + private static Models.Internal.Header ConvertHeaderToInternalModel(MetadataFile item) + { + var header = new Models.Internal.Header + { + [Models.Internal.Header.HeaderKey] = item.Header, + }; + return header; + } + + /// + /// Convert from to + /// + private static Models.Internal.Machine ConvertMachineToInternalModel(Row item) + { + var machine = new Models.Internal.Machine + { + [Models.Internal.Machine.NameKey] = item.Name, + [Models.Internal.Machine.EmulatorKey] = item.Emulator, + [Models.Internal.Machine.CloneOfKey] = item.CloneOf, + [Models.Internal.Machine.YearKey] = item.Year, + [Models.Internal.Machine.ManufacturerKey] = item.Manufacturer, + [Models.Internal.Machine.CategoryKey] = item.Category, + [Models.Internal.Machine.PlayersKey] = item.Players, + [Models.Internal.Machine.RotationKey] = item.Rotation, + [Models.Internal.Machine.ControlKey] = item.Control, + [Models.Internal.Machine.StatusKey] = item.Status, + [Models.Internal.Machine.DisplayCountKey] = item.DisplayCount, + [Models.Internal.Machine.DisplayTypeKey] = item.DisplayType, + [Models.Internal.Machine.ExtraKey] = item.Extra, + [Models.Internal.Machine.ButtonsKey] = item.Buttons, + [Models.Internal.Machine.FavoriteKey] = item.Favorite, + [Models.Internal.Machine.TagsKey] = item.Tags, + [Models.Internal.Machine.PlayedCountKey] = item.PlayedCount, + [Models.Internal.Machine.PlayedTimeKey] = item.PlayedTime, + [Models.Internal.Machine.PlayedTimeKey] = item.PlayedTime, + [Models.Internal.Machine.RomKey] = ConvertToInternalModel(item), + }; + return machine; + } + + /// + /// Convert from to + /// + private static Models.Internal.Rom ConvertToInternalModel(Row item) + { + var rom = new Models.Internal.Rom + { + [Models.Internal.Rom.NameKey] = item.Title, + [Models.Internal.Rom.AltRomnameKey] = item.AltRomname, + [Models.Internal.Rom.AltTitleKey] = item.AltTitle, + [Models.Internal.Rom.FileIsAvailableKey] = item.FileIsAvailable, + }; + return rom; + } + + #endregion } } \ No newline at end of file diff --git a/SabreTools.Serialization/Internal.AttractMode.cs b/SabreTools.Serialization/Internal.AttractMode.cs deleted file mode 100644 index 5d7a75b6..00000000 --- a/SabreTools.Serialization/Internal.AttractMode.cs +++ /dev/null @@ -1,165 +0,0 @@ -using System.Linq; -using SabreTools.Models.Internal; - -namespace SabreTools.Serialization -{ - /// - /// Serializer for AttractMode models to internal structure - /// - public partial class Internal - { - #region Serialize - - /// - /// Convert from to - /// - public static MetadataFile ConvertToInternalModel(Models.AttractMode.MetadataFile item) - { - var metadataFile = new MetadataFile - { - [MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), - }; - - if (item?.Row != null && item.Row.Any()) - metadataFile[MetadataFile.MachineKey] = item.Row.Select(ConvertMachineToInternalModel).ToArray(); - - return metadataFile; - } - - /// - /// Convert from to - /// - private static Header ConvertHeaderToInternalModel(Models.AttractMode.MetadataFile item) - { - var header = new Header - { - [Header.HeaderKey] = item.Header, - }; - return header; - } - - /// - /// Convert from to - /// - private static Machine ConvertMachineToInternalModel(Models.AttractMode.Row item) - { - var machine = new Machine - { - [Machine.NameKey] = item.Name, - [Machine.EmulatorKey] = item.Emulator, - [Machine.CloneOfKey] = item.CloneOf, - [Machine.YearKey] = item.Year, - [Machine.ManufacturerKey] = item.Manufacturer, - [Machine.CategoryKey] = item.Category, - [Machine.PlayersKey] = item.Players, - [Machine.RotationKey] = item.Rotation, - [Machine.ControlKey] = item.Control, - [Machine.StatusKey] = item.Status, - [Machine.DisplayCountKey] = item.DisplayCount, - [Machine.DisplayTypeKey] = item.DisplayType, - [Machine.ExtraKey] = item.Extra, - [Machine.ButtonsKey] = item.Buttons, - [Machine.FavoriteKey] = item.Favorite, - [Machine.TagsKey] = item.Tags, - [Machine.PlayedCountKey] = item.PlayedCount, - [Machine.PlayedTimeKey] = item.PlayedTime, - [Machine.PlayedTimeKey] = item.PlayedTime, - [Machine.RomKey] = ConvertToInternalModel(item), - }; - return machine; - } - - /// - /// Convert from to - /// - private static Rom ConvertToInternalModel(Models.AttractMode.Row item) - { - var rom = new Rom - { - [Rom.NameKey] = item.Title, - [Rom.AltRomnameKey] = item.AltRomname, - [Rom.AltTitleKey] = item.AltTitle, - [Rom.FileIsAvailableKey] = item.FileIsAvailable, - }; - return rom; - } - - #endregion - - #region Deserialize - - /// - /// Convert from to - /// - public static Models.AttractMode.MetadataFile? ConvertHeaderToAttractMode(Header? item) - { - if (item == null) - return null; - - var metadataFile = new Models.AttractMode.MetadataFile - { - Header = item.ReadStringArray(Header.HeaderKey), - }; - return metadataFile; - } - - /// - /// Convert from to an array of - /// - public static Models.AttractMode.Row?[]? ConvertMachineToAttractMode(Machine? item) - { - if (item == null) - return null; - - var roms = item.Read(Machine.RomKey); - return roms?.Select(rom => - { - if (rom == null) - return null; - - var rowItem = ConvertToAttractMode(rom); - - rowItem.Name = item.ReadString(Machine.NameKey); - rowItem.Emulator = item.ReadString(Machine.EmulatorKey); - rowItem.CloneOf = item.ReadString(Machine.CloneOfKey); - rowItem.Year = item.ReadString(Machine.YearKey); - rowItem.Manufacturer = item.ReadString(Machine.ManufacturerKey); - rowItem.Category = item.ReadString(Machine.CategoryKey); - rowItem.Players = item.ReadString(Machine.PlayersKey); - rowItem.Rotation = item.ReadString(Machine.RotationKey); - rowItem.Control = item.ReadString(Machine.ControlKey); - rowItem.Status = item.ReadString(Machine.StatusKey); - rowItem.DisplayCount = item.ReadString(Machine.DisplayCountKey); - rowItem.DisplayType = item.ReadString(Machine.DisplayTypeKey); - rowItem.Extra = item.ReadString(Machine.ExtraKey); - rowItem.Buttons = item.ReadString(Machine.ButtonsKey); - rowItem.Favorite = item.ReadString(Machine.FavoriteKey); - rowItem.Tags = item.ReadString(Machine.TagsKey); - rowItem.PlayedCount = item.ReadString(Machine.PlayedCountKey); - rowItem.PlayedTime = item.ReadString(Machine.PlayedTimeKey); - - return rowItem; - })?.ToArray(); - } - - /// - /// Convert from to - /// - private static Models.AttractMode.Row? ConvertToAttractMode(Rom? item) - { - if (item == null) - return null; - - var row = new Models.AttractMode.Row - { - Title = item.ReadString(Rom.NameKey), - AltRomname = item.ReadString(Rom.AltRomnameKey), - AltTitle = item.ReadString(Rom.AltTitleKey), - FileIsAvailable = item.ReadString(Rom.FileIsAvailableKey), - }; - return row; - } - - #endregion - } -} \ No newline at end of file