public ValueTask <Recording> ProcessFileAsync(TargetInformation information, Recording recording) { var stream = information.FileStream; var tryWamdData = Wamd.ExtractMetadata(stream); if (tryWamdData.IsSucc) { Wamd wamdData = (Wamd)tryWamdData; int numMicrophones = wamdData.MicrophoneType.Length; // Update recording information with wamd metadata recording = recording with { StartDate = recording.StartDate ?? (wamdData.StartDate.IsLeft ? (OffsetDateTime?)wamdData.StartDate : null), LocalStartDate = recording.LocalStartDate ?? (wamdData.StartDate.IsRight ? (LocalDateTime?)wamdData.StartDate : null), Sensor = (recording.Sensor ?? new Sensor()) with { Name = recording.Sensor?.Name ?? wamdData.Name, SerialNumber = recording.Sensor?.SerialNumber ?? wamdData.SerialNumber, Firmware = recording.Sensor?.Firmware ?? wamdData.Firmware, Temperature = recording.Sensor?.Temperature ?? wamdData.Temperature, Microphones = recording.Sensor?.Microphones ?? new Microphone[numMicrophones], },
public void HasVersion1WamdChunkTest() { Stream wamdFile = this.RealFileSystem.File.Open(Helpers.FixturesRoot + "/WA_SM4BAT/2.2.1_Normal/S4U09523_20210621_205706.wav", FileMode.Open, FileAccess.Read, FileShare.Read); bool hasWamd = Wamd.HasVersion1WamdChunk(wamdFile).IfFail(false); Assert.True(hasWamd); Stream noWamdFile = this.RealFileSystem.File.Open(Helpers.FixturesRoot + "/FL_BAR_LT/3.14_Normal/20191026T000000+1000_REC.flac", FileMode.Open, FileAccess.Read, FileShare.Read); hasWamd = Wamd.HasVersion1WamdChunk(noWamdFile).IfFail(false); Assert.False(hasWamd); }
public void ExtractMetadataTest() { Stream stream = this.RealFileSystem.File.Open(Helpers.FixturesRoot + "/WA_SM4BAT/2.2.1_Normal/S4U09523_20210621_205706.wav", FileMode.Open, FileAccess.Read, FileShare.Read); var tryWamdData = Wamd.ExtractMetadata(stream); Assert.True(tryWamdData.IsSucc); Wamd wamdData = (Wamd)tryWamdData; ((OffsetDateTime)wamdData.StartDate).Should().Be(OffsetDateTimePattern.CreateWithInvariantCulture("G").Parse("2021-06-21T20:57:06-03:00").Value); wamdData.Name.Should().Be("SM4BAT-FS"); wamdData.SerialNumber.Should().Be("S4U09523"); wamdData.Firmware.Should().Be("2.2.1"); wamdData.Temperature.Should().Be(24.25); wamdData.MicrophoneType.Should().AllBe("U2"); wamdData.MicrophoneSensitivity.Should().AllBeEquivalentTo(13.0); wamdData.Latitude.Should().Be(45.7835); wamdData.Longitude.Should().Be(-64.23352); }