mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 11:14:25 +00:00
Use Aaru Metadata instead of CICM Metadata and convert to it if found.
This commit is contained in:
@@ -912,7 +912,10 @@ public partial class Dump
|
||||
|
||||
var jsonFs = new FileStream(_outputPrefix + ".metadata.json", FileMode.Create);
|
||||
|
||||
JsonSerializer.Serialize(jsonFs, sidecar, new JsonSerializerOptions
|
||||
JsonSerializer.Serialize(jsonFs, new MetadataJson
|
||||
{
|
||||
AaruMetadata = sidecar
|
||||
}, new JsonSerializerOptions
|
||||
{
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
WriteIndented = true
|
||||
|
||||
@@ -147,7 +147,10 @@ partial class Dump
|
||||
|
||||
var jsonFs = new FileStream(_outputPrefix + ".metadata.json", FileMode.Create);
|
||||
|
||||
JsonSerializer.Serialize(jsonFs, sidecar, new JsonSerializerOptions
|
||||
JsonSerializer.Serialize(jsonFs, new MetadataJson
|
||||
{
|
||||
AaruMetadata = sidecar
|
||||
}, new JsonSerializerOptions
|
||||
{
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
WriteIndented = true
|
||||
|
||||
@@ -876,7 +876,10 @@ partial class Dump
|
||||
|
||||
var jsonFs = new FileStream(_outputPrefix + ".metadata.json", FileMode.Create);
|
||||
|
||||
JsonSerializer.Serialize(jsonFs, sidecar, new JsonSerializerOptions
|
||||
JsonSerializer.Serialize(jsonFs, new MetadataJson
|
||||
{
|
||||
AaruMetadata = sidecar
|
||||
}, new JsonSerializerOptions
|
||||
{
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
WriteIndented = true
|
||||
|
||||
@@ -718,7 +718,10 @@ public partial class Dump
|
||||
|
||||
var jsonFs = new FileStream(_outputPrefix + ".metadata.json", FileMode.Create);
|
||||
|
||||
JsonSerializer.Serialize(jsonFs, sidecar, new JsonSerializerOptions
|
||||
JsonSerializer.Serialize(jsonFs, new MetadataJson
|
||||
{
|
||||
AaruMetadata = sidecar
|
||||
}, new JsonSerializerOptions
|
||||
{
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
WriteIndented = true
|
||||
|
||||
@@ -1450,7 +1450,10 @@ partial class Dump
|
||||
|
||||
var jsonFs = new FileStream(_outputPrefix + ".metadata.json", FileMode.Create);
|
||||
|
||||
JsonSerializer.Serialize(jsonFs, sidecar, new JsonSerializerOptions
|
||||
JsonSerializer.Serialize(jsonFs, new MetadataJson
|
||||
{
|
||||
AaruMetadata = sidecar
|
||||
}, new JsonSerializerOptions
|
||||
{
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
WriteIndented = true
|
||||
|
||||
@@ -1305,7 +1305,10 @@ partial class Dump
|
||||
|
||||
var jsonFs = new FileStream(_outputPrefix + ".metadata.json", FileMode.Create);
|
||||
|
||||
JsonSerializer.Serialize(jsonFs, sidecar, new JsonSerializerOptions
|
||||
JsonSerializer.Serialize(jsonFs, new MetadataJson
|
||||
{
|
||||
AaruMetadata = sidecar
|
||||
}, new JsonSerializerOptions
|
||||
{
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
WriteIndented = true
|
||||
|
||||
@@ -982,7 +982,10 @@ public partial class Dump
|
||||
|
||||
var jsonFs = new FileStream(_outputPrefix + ".metadata.json", FileMode.Create);
|
||||
|
||||
JsonSerializer.Serialize(jsonFs, sidecar, new JsonSerializerOptions
|
||||
JsonSerializer.Serialize(jsonFs, new MetadataJson
|
||||
{
|
||||
AaruMetadata = sidecar
|
||||
}, new JsonSerializerOptions
|
||||
{
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
WriteIndented = true
|
||||
|
||||
@@ -38,6 +38,8 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reactive;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Serialization;
|
||||
@@ -57,7 +59,6 @@ using Avalonia.Threading;
|
||||
using MessageBox.Avalonia;
|
||||
using MessageBox.Avalonia.Enums;
|
||||
using ReactiveUI;
|
||||
using Schemas;
|
||||
using ImageInfo = Aaru.CommonTypes.Structs.ImageInfo;
|
||||
using Track = Aaru.CommonTypes.Structs.Track;
|
||||
using Version = Aaru.CommonTypes.Interop.Version;
|
||||
@@ -150,7 +151,7 @@ public sealed class ImageConvertViewModel : ViewModelBase
|
||||
public string DriveLabel => UI.Title_Drive;
|
||||
public string FirmwareRevisionLabel => UI.Title_Firmware_revision;
|
||||
public string CommentsLabel => UI.Title_Comments;
|
||||
public string CicmXmlLabel => UI.Title_Existing_CICM_XML_sidecar;
|
||||
public string AaruMetadataLabel => UI.Title_Existing_Aaru_Metadata_sidecar;
|
||||
public string FromImageLabel => UI.Title_From_image;
|
||||
public string ResumeFileLabel => UI.Title_Existing_resume_file;
|
||||
public string StartLabel => UI.ButtonLabel_Start;
|
||||
@@ -179,7 +180,7 @@ public sealed class ImageConvertViewModel : ViewModelBase
|
||||
DriveFirmwareRevisionCommand = ReactiveCommand.Create(ExecuteDriveFirmwareRevisionCommand);
|
||||
CommentsCommand = ReactiveCommand.Create(ExecuteCommentsCommand);
|
||||
AaruMetadataFromImageCommand = ReactiveCommand.Create(ExecuteAaruMetadataFromImageCommand);
|
||||
CicmXmlCommand = ReactiveCommand.Create(ExecuteCicmXmlCommand);
|
||||
AaruMetadataCommand = ReactiveCommand.Create(ExecuteAaruMetadataCommand);
|
||||
ResumeFileFromImageCommand = ReactiveCommand.Create(ExecuteResumeFileFromImageCommand);
|
||||
ResumeFileCommand = ReactiveCommand.Create(ExecuteResumeFileCommand);
|
||||
StartCommand = ReactiveCommand.Create(ExecuteStartCommand);
|
||||
@@ -570,7 +571,7 @@ public sealed class ImageConvertViewModel : ViewModelBase
|
||||
public ReactiveCommand<Unit, Unit> DriveFirmwareRevisionCommand { get; }
|
||||
public ReactiveCommand<Unit, Unit> CommentsCommand { get; }
|
||||
public ReactiveCommand<Unit, Unit> AaruMetadataFromImageCommand { get; }
|
||||
public ReactiveCommand<Unit, Task> CicmXmlCommand { get; }
|
||||
public ReactiveCommand<Unit, Task> AaruMetadataCommand { get; }
|
||||
public ReactiveCommand<Unit, Unit> ResumeFileFromImageCommand { get; }
|
||||
public ReactiveCommand<Unit, Task> ResumeFileCommand { get; }
|
||||
public ReactiveCommand<Unit, Task> StartCommand { get; }
|
||||
@@ -2005,7 +2006,7 @@ public sealed class ImageConvertViewModel : ViewModelBase
|
||||
_aaruMetadata = _inputFormat.AaruMetadata;
|
||||
}
|
||||
|
||||
async Task ExecuteCicmXmlCommand()
|
||||
async Task ExecuteAaruMetadataCommand()
|
||||
{
|
||||
_aaruMetadata = null;
|
||||
MetadataJsonText = "";
|
||||
@@ -2020,7 +2021,7 @@ public sealed class ImageConvertViewModel : ViewModelBase
|
||||
Name = UI.Dialog_Aaru_Metadata,
|
||||
Extensions = new List<string>(new[]
|
||||
{
|
||||
".xml"
|
||||
".json"
|
||||
})
|
||||
});
|
||||
|
||||
@@ -2030,14 +2031,17 @@ public sealed class ImageConvertViewModel : ViewModelBase
|
||||
result.Length != 1)
|
||||
return;
|
||||
|
||||
var sidecarXs = new XmlSerializer(typeof(CICMMetadataType));
|
||||
|
||||
try
|
||||
{
|
||||
var sr = new StreamReader(result[0]);
|
||||
var fs = new FileStream(result[0], FileMode.Open);
|
||||
|
||||
// _aaruMetadata = (CICMMetadataType)sidecarXs.Deserialize(sr);
|
||||
sr.Close();
|
||||
_aaruMetadata = JsonSerializer.Deserialize<MetadataJson>(fs, new JsonSerializerOptions
|
||||
{
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
PropertyNameCaseInsensitive = true
|
||||
})?.AaruMetadata;
|
||||
|
||||
fs.Close();
|
||||
MetadataJsonText = result[0];
|
||||
}
|
||||
catch
|
||||
@@ -2065,7 +2069,7 @@ public sealed class ImageConvertViewModel : ViewModelBase
|
||||
|
||||
dlgMetadata.Filters?.Add(new FileDialogFilter
|
||||
{
|
||||
Name = UI.Dialog_Aaru_Metadata,
|
||||
Name = UI.Dialog_Choose_existing_resume_file,
|
||||
Extensions = new List<string>(new[]
|
||||
{
|
||||
".xml"
|
||||
|
||||
@@ -62,7 +62,6 @@ using JetBrains.Annotations;
|
||||
using MessageBox.Avalonia;
|
||||
using MessageBox.Avalonia.Enums;
|
||||
using ReactiveUI;
|
||||
using Schemas;
|
||||
using DeviceInfo = Aaru.Core.Devices.Info.DeviceInfo;
|
||||
using Dump = Aaru.Core.Devices.Dumping.Dump;
|
||||
using File = System.IO.File;
|
||||
@@ -515,7 +514,7 @@ public sealed class MediaDumpViewModel : ViewModelBase
|
||||
Name = UI.Dialog_Aaru_Metadata,
|
||||
Extensions = new List<string>(new[]
|
||||
{
|
||||
".xml"
|
||||
".json"
|
||||
})
|
||||
});
|
||||
|
||||
@@ -528,14 +527,17 @@ public sealed class MediaDumpViewModel : ViewModelBase
|
||||
return;
|
||||
}
|
||||
|
||||
var sidecarXs = new XmlSerializer(typeof(CICMMetadataType));
|
||||
|
||||
try
|
||||
{
|
||||
var sr = new StreamReader(result[0]);
|
||||
var fs = new FileStream(result[0], FileMode.Open);
|
||||
|
||||
// _sidecar = (CICMMetadataType)sidecarXs.Deserialize(sr);
|
||||
sr.Close();
|
||||
_sidecar = JsonSerializer.Deserialize<MetadataJson>(fs, new JsonSerializerOptions
|
||||
{
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
PropertyNameCaseInsensitive = true
|
||||
})?.AaruMetadata;
|
||||
|
||||
fs.Close();
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
@@ -191,14 +191,14 @@
|
||||
</StackPanel>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
<TextBlock Text="{Binding CicmXmlLabel}" />
|
||||
<TextBlock Text="{Binding AaruMetadataLabel}" />
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBox Text="{Binding MetadataJsonText}" IsReadOnly="True" />
|
||||
<Button Command="{Binding AaruMetadataFromImageCommand}"
|
||||
IsVisible="{Binding AaruMetadataFromImageVisible}">
|
||||
<TextBlock Text="{Binding FromImageLabel}" />
|
||||
</Button>
|
||||
<Button Command="{Binding CicmXmlCommand}">
|
||||
<Button Command="{Binding AaruMetadataCommand}">
|
||||
<TextBlock Text="{Binding ChooseLabel}" />
|
||||
</Button>
|
||||
</StackPanel>
|
||||
|
||||
@@ -34,11 +34,13 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
using Aaru.CommonTypes;
|
||||
using Aaru.CommonTypes.AaruMetadata;
|
||||
using Aaru.CommonTypes.Enums;
|
||||
using Aaru.CommonTypes.Interfaces;
|
||||
using Aaru.CommonTypes.Structs;
|
||||
using Aaru.CommonTypes.Structs.Devices.ATA;
|
||||
using Aaru.CommonTypes.Structs.Devices.SCSI;
|
||||
using Aaru.Console;
|
||||
@@ -48,8 +50,10 @@ using Aaru.Decoders.SCSI;
|
||||
using Aaru.Helpers;
|
||||
using Schemas;
|
||||
using DMI = Aaru.Decoders.Xbox.DMI;
|
||||
using File = System.IO.File;
|
||||
using Inquiry = Aaru.CommonTypes.Structs.Devices.SCSI.Inquiry;
|
||||
using Session = Aaru.CommonTypes.Structs.Session;
|
||||
using Track = Aaru.CommonTypes.Structs.Track;
|
||||
using TrackType = Aaru.CommonTypes.Enums.TrackType;
|
||||
|
||||
namespace Aaru.DiscImages;
|
||||
@@ -1125,20 +1129,41 @@ public sealed partial class ZZZRawImage
|
||||
|
||||
AaruConsole.VerboseWriteLine(Localization.Raw_disk_image_contains_a_disk_of_type_0, _imageInfo.MediaType);
|
||||
|
||||
var sidecarXs = new XmlSerializer(typeof(CICMMetadataType));
|
||||
|
||||
if(File.Exists(basename + "cicm.xml"))
|
||||
try
|
||||
try
|
||||
{
|
||||
if(File.Exists(basename + ".metadata.json"))
|
||||
{
|
||||
var sr = new StreamReader(basename + "cicm.xml");
|
||||
var fs = new FileStream(basename + ".metadata.json", FileMode.Open);
|
||||
|
||||
AaruMetadata = JsonSerializer.Deserialize<MetadataJson>(fs, new JsonSerializerOptions
|
||||
{
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
PropertyNameCaseInsensitive = true
|
||||
})?.AaruMetadata;
|
||||
|
||||
fs.Close();
|
||||
}
|
||||
else if(File.Exists(basename + ".cicm.xml"))
|
||||
{
|
||||
// The converter to AaruMetadata basically overcomes this (should?)
|
||||
#pragma warning disable IL2026
|
||||
var sidecarXs = new XmlSerializer(typeof(CICMMetadataType));
|
||||
#pragma warning restore IL2026
|
||||
|
||||
var sr = new StreamReader(basename + ".cicm.xml");
|
||||
|
||||
// The converter to AaruMetadata basically overcomes this (should?)
|
||||
#pragma warning disable IL2026
|
||||
AaruMetadata = (CICMMetadataType)sidecarXs.Deserialize(sr);
|
||||
#pragma warning restore IL2026
|
||||
|
||||
// AaruMetadata = (CICMMetadataType)sidecarXs.Deserialize(sr);
|
||||
sr.Close();
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Do nothing.
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
_imageInfo.ReadableMediaTags = new List<MediaTagType>(_mediaTags.Keys);
|
||||
|
||||
|
||||
6
Aaru.Localization/UI.Designer.cs
generated
6
Aaru.Localization/UI.Designer.cs
generated
@@ -6953,11 +6953,11 @@ namespace Aaru.Localization {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Existing CICM XML sidecar.
|
||||
/// Looks up a localized string similar to Existing Aaru Metadata sidecar.
|
||||
/// </summary>
|
||||
public static string Title_Existing_CICM_XML_sidecar {
|
||||
public static string Title_Existing_Aaru_Metadata_sidecar {
|
||||
get {
|
||||
return ResourceManager.GetString("Title_Existing_CICM_XML_sidecar", resourceCulture);
|
||||
return ResourceManager.GetString("Title_Existing_Aaru_Metadata_sidecar", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2703,8 +2703,8 @@ Do you want to continue?</value>
|
||||
<data name="Title_Firmware_revision" xml:space="preserve">
|
||||
<value>Firmware revision</value>
|
||||
</data>
|
||||
<data name="Title_Existing_CICM_XML_sidecar" xml:space="preserve">
|
||||
<value>Existing CICM XML sidecar</value>
|
||||
<data name="Title_Existing_Aaru_Metadata_sidecar" xml:space="preserve">
|
||||
<value>Existing Aaru Metadata sidecar</value>
|
||||
</data>
|
||||
<data name="Title_From_image" xml:space="preserve">
|
||||
<value>From image...</value>
|
||||
|
||||
@@ -37,6 +37,8 @@ using System.CommandLine.NamingConventionBinder;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
using Aaru.CommonTypes;
|
||||
using Aaru.CommonTypes.AaruMetadata;
|
||||
@@ -143,6 +145,11 @@ sealed class ConvertImageCommand : Command
|
||||
"--generate-subchannels"
|
||||
}, () => false, UI.Generates_subchannels_help));
|
||||
|
||||
Add(new Option<string>(new[]
|
||||
{
|
||||
"--aaru-metadata", "-m"
|
||||
}, () => null, "Take metadata from existing Aaru Metadata sidecar."));
|
||||
|
||||
AddArgument(new Argument<string>
|
||||
{
|
||||
Arity = ArgumentArity.ExactlyOne,
|
||||
@@ -167,7 +174,7 @@ sealed class ConvertImageCommand : Command
|
||||
int mediaSequence, string mediaSerialNumber, string mediaTitle, string outputPath,
|
||||
string options, string resumeFile, string format, string geometry,
|
||||
bool fixSubchannelPosition, bool fixSubchannel, bool fixSubchannelCrc,
|
||||
bool generateSubchannels)
|
||||
bool generateSubchannels, string aaruMetadata)
|
||||
{
|
||||
MainClass.PrintCopyright();
|
||||
|
||||
@@ -233,6 +240,7 @@ sealed class ConvertImageCommand : Command
|
||||
AaruConsole.DebugWriteLine("Image convert command", "--fix-subchannel={0}", fixSubchannel);
|
||||
AaruConsole.DebugWriteLine("Image convert command", "--fix-subchannel-crc={0}", fixSubchannelCrc);
|
||||
AaruConsole.DebugWriteLine("Image convert command", "--generate-subchannels={0}", generateSubchannels);
|
||||
AaruConsole.DebugWriteLine("Image convert command", "--aaru-metadata={0}", aaruMetadata);
|
||||
|
||||
Dictionary<string, string> parsedOptions = Core.Options.Parse(options);
|
||||
AaruConsole.DebugWriteLine("Image convert command", UI.Parsed_options);
|
||||
@@ -294,15 +302,44 @@ sealed class ConvertImageCommand : Command
|
||||
Metadata sidecar = null;
|
||||
MediaType mediaType;
|
||||
|
||||
var xs = new XmlSerializer(typeof(CICMMetadataType));
|
||||
if(aaruMetadata != null)
|
||||
|
||||
if(cicmXml != null)
|
||||
if(File.Exists(aaruMetadata))
|
||||
try
|
||||
{
|
||||
var fs = new FileStream(aaruMetadata, FileMode.Open);
|
||||
|
||||
sidecar = JsonSerializer.Deserialize<MetadataJson>(fs, new JsonSerializerOptions
|
||||
{
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
PropertyNameCaseInsensitive = true
|
||||
})?.AaruMetadata;
|
||||
|
||||
fs.Close();
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
AaruConsole.ErrorWriteLine(UI.Incorrect_metadata_sidecar_file_not_continuing);
|
||||
AaruConsole.DebugWriteLine("Image conversion", $"{ex}");
|
||||
|
||||
return (int)ErrorNumber.InvalidSidecar;
|
||||
}
|
||||
else
|
||||
{
|
||||
AaruConsole.ErrorWriteLine(UI.Could_not_find_metadata_sidecar);
|
||||
|
||||
return (int)ErrorNumber.NoSuchFile;
|
||||
}
|
||||
|
||||
else if(cicmXml != null)
|
||||
if(File.Exists(cicmXml))
|
||||
try
|
||||
{
|
||||
var xs = new XmlSerializer(typeof(CICMMetadataType));
|
||||
|
||||
var sr = new StreamReader(cicmXml);
|
||||
|
||||
//sidecar = (CICMMetadataType)xs.Deserialize(sr);
|
||||
sidecar = (CICMMetadataType)xs.Deserialize(sr);
|
||||
sr.Close();
|
||||
}
|
||||
catch(Exception ex)
|
||||
@@ -319,15 +356,31 @@ sealed class ConvertImageCommand : Command
|
||||
return (int)ErrorNumber.NoSuchFile;
|
||||
}
|
||||
|
||||
xs = new XmlSerializer(typeof(Resume));
|
||||
|
||||
if(resumeFile != null)
|
||||
{
|
||||
if(File.Exists(resumeFile))
|
||||
{
|
||||
try
|
||||
{
|
||||
var sr = new StreamReader(resumeFile);
|
||||
resume = (Resume)xs.Deserialize(sr);
|
||||
sr.Close();
|
||||
if(resumeFile.EndsWith(".metadata.json", StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
var fs = new FileStream(resumeFile, FileMode.Open);
|
||||
|
||||
resume = JsonSerializer.Deserialize<ResumeJson>(fs, new JsonSerializerOptions
|
||||
{
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
PropertyNameCaseInsensitive = true
|
||||
})?.Resume;
|
||||
|
||||
fs.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
var xs = new XmlSerializer(typeof(Resume));
|
||||
var sr = new StreamReader(resumeFile);
|
||||
resume = (Resume)xs.Deserialize(sr);
|
||||
sr.Close();
|
||||
}
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
@@ -336,12 +389,14 @@ sealed class ConvertImageCommand : Command
|
||||
|
||||
return (int)ErrorNumber.InvalidResume;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AaruConsole.ErrorWriteLine(UI.Could_not_find_resume_file);
|
||||
|
||||
return (int)ErrorNumber.NoSuchFile;
|
||||
}
|
||||
}
|
||||
|
||||
var filtersList = new FiltersList();
|
||||
IFilter inputFilter = null;
|
||||
@@ -601,7 +656,7 @@ sealed class ConvertImageCommand : Command
|
||||
return (int)ErrorNumber.CannotCreateFormat;
|
||||
}
|
||||
|
||||
var metadata = new ImageInfo
|
||||
var imageInfo = new ImageInfo
|
||||
{
|
||||
Application = "Aaru",
|
||||
ApplicationVersion = Version.GetVersion(),
|
||||
@@ -621,7 +676,7 @@ sealed class ConvertImageCommand : Command
|
||||
MediaTitle = mediaTitle ?? inputFormat.Info.MediaTitle
|
||||
};
|
||||
|
||||
if(!outputFormat.SetImageInfo(metadata))
|
||||
if(!outputFormat.SetImageInfo(imageInfo))
|
||||
{
|
||||
if(!force)
|
||||
{
|
||||
@@ -633,7 +688,7 @@ sealed class ConvertImageCommand : Command
|
||||
AaruConsole.ErrorWriteLine(Localization.Core.Error_0_setting_metadata, outputFormat.ErrorMessage);
|
||||
}
|
||||
|
||||
Metadata aaruMetadata = inputFormat.AaruMetadata;
|
||||
Metadata metadata = inputFormat.AaruMetadata;
|
||||
List<DumpHardware> dumpHardware = inputFormat.DumpHardware;
|
||||
|
||||
foreach(MediaTagType mediaTag in inputFormat.Info.ReadableMediaTags.Where(mediaTag =>
|
||||
@@ -1433,8 +1488,8 @@ sealed class ConvertImageCommand : Command
|
||||
|
||||
ret = false;
|
||||
|
||||
if(sidecar != null ||
|
||||
aaruMetadata != null)
|
||||
if(sidecar != null ||
|
||||
metadata != null)
|
||||
{
|
||||
Core.Spectre.ProgressSingleSpinner(ctx =>
|
||||
{
|
||||
@@ -1442,8 +1497,8 @@ sealed class ConvertImageCommand : Command
|
||||
|
||||
if(sidecar != null)
|
||||
ret = outputFormat.SetMetadata(sidecar);
|
||||
else if(aaruMetadata != null)
|
||||
ret = outputFormat.SetMetadata(aaruMetadata);
|
||||
else if(metadata != null)
|
||||
ret = outputFormat.SetMetadata(metadata);
|
||||
});
|
||||
|
||||
if(ret)
|
||||
|
||||
@@ -218,6 +218,11 @@ sealed class DumpMediaCommand : Command
|
||||
"--dimensions"
|
||||
}, () => 1080, UI.Dump_graph_dimensions_argument_help));
|
||||
|
||||
Add(new Option<string>(new[]
|
||||
{
|
||||
"--aaru-metadata", "-m"
|
||||
}, () => null, "Take metadata from existing Aaru Metadata sidecar."));
|
||||
|
||||
Handler = CommandHandler.Create(GetType().GetMethod(nameof(Invoke)));
|
||||
}
|
||||
|
||||
@@ -228,7 +233,7 @@ sealed class DumpMediaCommand : Command
|
||||
bool fixSubchannelPosition, bool retrySubchannel, bool fixSubchannel,
|
||||
bool fixSubchannelCrc, bool generateSubchannels, bool skipCdiReadyHole, bool eject,
|
||||
uint maxBlocks, bool useBufferedReads, bool storeEncrypted, bool titleKeys,
|
||||
uint ignoreCdrRunOuts, bool createGraph, uint dimensions)
|
||||
uint ignoreCdrRunOuts, bool createGraph, uint dimensions, string aaruMetadata)
|
||||
{
|
||||
MainClass.PrintCopyright();
|
||||
|
||||
@@ -299,6 +304,7 @@ sealed class DumpMediaCommand : Command
|
||||
AaruConsole.DebugWriteLine("Dump-Media command", "--ignore-cdr-runouts={0}", ignoreCdrRunOuts);
|
||||
AaruConsole.DebugWriteLine("Dump-Media command", "--create-graph={0}", createGraph);
|
||||
AaruConsole.DebugWriteLine("Dump-Media command", "--dimensions={0}", dimensions);
|
||||
AaruConsole.DebugWriteLine("Dump-Media command", "--aaru-metadata={0}", aaruMetadata);
|
||||
|
||||
// TODO: Disabled temporarily
|
||||
//AaruConsole.DebugWriteLine("Dump-Media command", "--raw={0}", raw);
|
||||
@@ -468,7 +474,6 @@ sealed class DumpMediaCommand : Command
|
||||
string outputPrefix = Path.Combine(Path.GetDirectoryName(outputPath), responseLine);
|
||||
|
||||
Resume resumeClass = null;
|
||||
var xs = new XmlSerializer(typeof(Resume));
|
||||
|
||||
if(resume)
|
||||
{
|
||||
@@ -491,6 +496,7 @@ sealed class DumpMediaCommand : Command
|
||||
// DEPRECATED: To be removed in Aaru 7
|
||||
else if(File.Exists(outputPrefix + ".resume.xml") && resume)
|
||||
{
|
||||
var xs = new XmlSerializer(typeof(Resume));
|
||||
var sr = new StreamReader(outputPrefix + ".resume.xml");
|
||||
resumeClass = (Resume)xs.Deserialize(sr);
|
||||
sr.Close();
|
||||
@@ -522,16 +528,48 @@ sealed class DumpMediaCommand : Command
|
||||
return (int)ErrorNumber.AlreadyDumped;
|
||||
}
|
||||
|
||||
Metadata sidecar = null;
|
||||
var sidecarXs = new XmlSerializer(typeof(CICMMetadataType));
|
||||
Metadata sidecar = null;
|
||||
|
||||
if(cicmXml != null)
|
||||
if(aaruMetadata != null)
|
||||
if(File.Exists(aaruMetadata))
|
||||
try
|
||||
{
|
||||
var fs = new FileStream(aaruMetadata, FileMode.Open);
|
||||
|
||||
sidecar = JsonSerializer.Deserialize<MetadataJson>(fs, new JsonSerializerOptions
|
||||
{
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
PropertyNameCaseInsensitive = true
|
||||
})?.AaruMetadata;
|
||||
|
||||
fs.Close();
|
||||
}
|
||||
catch
|
||||
{
|
||||
AaruConsole.ErrorWriteLine(UI.Incorrect_metadata_sidecar_file_not_continuing);
|
||||
|
||||
if(isResponse)
|
||||
continue;
|
||||
|
||||
return (int)ErrorNumber.InvalidSidecar;
|
||||
}
|
||||
else
|
||||
{
|
||||
AaruConsole.ErrorWriteLine(UI.Could_not_find_metadata_sidecar);
|
||||
|
||||
if(isResponse)
|
||||
continue;
|
||||
|
||||
return (int)ErrorNumber.NoSuchFile;
|
||||
}
|
||||
else if(cicmXml != null)
|
||||
if(File.Exists(cicmXml))
|
||||
try
|
||||
{
|
||||
var sr = new StreamReader(cicmXml);
|
||||
var sr = new StreamReader(cicmXml);
|
||||
var sidecarXs = new XmlSerializer(typeof(CICMMetadataType));
|
||||
|
||||
//sidecar = (CICMMetadataType)sidecarXs.Deserialize(sr);
|
||||
sidecar = (CICMMetadataType)sidecarXs.Deserialize(sr);
|
||||
sr.Close();
|
||||
}
|
||||
catch
|
||||
|
||||
Reference in New Issue
Block a user