Beta v20180202.1

This commit is contained in:
Steven Hildreth 2019-02-03 09:41:53 -06:00
parent 2a9819a1cc
commit 71b4fb6b9a
3 changed files with 107 additions and 9 deletions

View file

@ -50,6 +50,69 @@ namespace Roadie.Library.Tests
Console.WriteLine($"Log Level [{ e.Level }] Log Message [{ e.Message }] ");
}
[Theory]
[InlineData("1")]
[InlineData("01")]
[InlineData("1/2")]
[InlineData("A1")]
[InlineData("A1/2")]
public void ParseTrackNumberShouldBeOne(string trackNumber)
{
var dn = ID3TagsHelper.ParseTrackNumber(trackNumber);
Assert.NotNull(dn);
Assert.Equal(1, dn.Value);
}
[Theory]
[InlineData("")]
[InlineData("Z")]
[InlineData("-----")]
[InlineData("?")]
public void ParseTrackNumberShouldBeNull(string trackNumber)
{
var dn = ID3TagsHelper.ParseTrackNumber(trackNumber);
Assert.Null(dn);
}
[Theory]
[InlineData("2/5")]
[InlineData("02/05")]
[InlineData("A/5")]
[InlineData("B2/B5")]
public void ParseTotalTrackNumberShouldBeFive(string trackNumber)
{
var dn = ID3TagsHelper.ParseTotalTrackNumber(trackNumber);
Assert.NotNull(dn);
Assert.Equal(5, dn.Value);
}
[Theory]
[InlineData("")]
[InlineData("Z")]
[InlineData("-----")]
[InlineData("?")]
[InlineData("99")]
public void ParseTotalTrackNumberShouldBeNull(string trackNumber)
{
var dn = ID3TagsHelper.ParseTotalTrackNumber(trackNumber);
Assert.Null(dn);
}
[Theory]
[InlineData("2")]
[InlineData("02")]
[InlineData("2/2")]
[InlineData("B2")]
[InlineData("B2/2")]
public void ParseTrackNumberShouldBeTwo(string trackNumber)
{
var dn = ID3TagsHelper.ParseTrackNumber(trackNumber);
Assert.NotNull(dn);
Assert.Equal(2, dn.Value);
}
[Theory]
[InlineData("1")]
[InlineData("01")]

View file

@ -82,6 +82,7 @@ namespace Roadie.Library.Tests
[InlineData("1988/05")]
[InlineData("1988/05/02")]
[InlineData("88")]
[InlineData("1988-06-15T07:00:00Z")]
public void Parse_Datetime_ShouldBe1988(string input)
{
var parsed = SafeParser.ToDateTime(input);

View file

@ -124,12 +124,10 @@ namespace Roadie.Library.MetaData.ID3Tags
MimeType = x.MimeType,
Type = (AudioMetaDataImageType)x.PictureType
}).ToArray();
result.Time = (int)audioFile.TotalSeconds > 0 ? ((decimal?)audioFile.TotalSeconds).ToTimeSpan() : null;
result.Time = audioFile.TotalSeconds > 0 ? ((decimal?)audioFile.TotalSeconds).ToTimeSpan() : null;
result.Title = id3v2.Title.ToTitleCase(false);
var trackparts = id3v2.TrackNumber?.Split('/');
result.TrackNumber = SafeParser.ToNumber<short?>(trackparts[0]);
result.TotalTrackNumbers = trackparts.Length > 1 ? SafeParser.ToNumber<short?>(trackparts[1]) : 0;
result.TrackNumber = ID3TagsHelper.ParseTrackNumber(id3v2.TrackNumber);
result.TotalTrackNumbers = ID3TagsHelper.ParseTotalTrackNumber(id3v2.TrackNumber);
var date = SafeParser.ToDateTime(id3v2.Year);
result.Year = date?.Year ?? SafeParser.ToNumber<int?>(id3v2.Year);
isSuccess = true;
@ -146,11 +144,11 @@ namespace Roadie.Library.MetaData.ID3Tags
result.AudioBitrate = (int?)audioFile.Bitrate;
result.AudioChannels = audioFile.Channels;
result.AudioSampleRate = (int)audioFile.Bitrate;
result.Time = (int)audioFile.TotalSeconds > 0 ? ((decimal?)audioFile.TotalSeconds).ToTimeSpan() : null;
result.Time = audioFile.TotalSeconds > 0 ? ((decimal?)audioFile.TotalSeconds).ToTimeSpan() : null;
result.Title = id3v1.Title.ToTitleCase(false);
result.TrackNumber = (short?)id3v1.TrackNumber;
result.Year = SafeParser.ToNumber<int?>(id3v1.Year);
result.TrackNumber = SafeParser.ToNumber<short?>(id3v1.TrackNumber);
var date = SafeParser.ToDateTime(id3v1.Year);
result.Year = date?.Year ?? SafeParser.ToNumber<int?>(id3v1.Year);
isSuccess = true;
}
}
@ -169,6 +167,42 @@ namespace Roadie.Library.MetaData.ID3Tags
};
}
public static short? ParseTotalTrackNumber(string input)
{
if (string.IsNullOrEmpty(input))
{
return null;
}
var trackparts = input.Split('/');
if(trackparts.Length < 2)
{
return null;
}
var r = trackparts[1];
r = r.ToUpper().Replace("A", "");
r = r.ToUpper().Replace("B", "");
r = r.ToUpper().Replace("C", "");
r = r.ToUpper().Replace("D", "");
r = r.ToUpper().Replace("E", "");
return SafeParser.ToNumber<short?>(r) ?? 0;
}
public static short? ParseTrackNumber(string input)
{
if(string.IsNullOrEmpty(input))
{
return null;
}
var trackparts = input.Split('/');
var r = trackparts[0];
r = r.ToUpper().Replace("A", "");
r = r.ToUpper().Replace("B", "");
r = r.ToUpper().Replace("C", "");
r = r.ToUpper().Replace("D", "");
r = r.ToUpper().Replace("E", "");
return SafeParser.ToNumber<short?>(r);
}
public static int? ParseDiscNumber(string input)
{
var discNumber = SafeParser.ToNumber<int?>(input);