mirror of
https://github.com/sphildreth/roadie
synced 2025-02-16 13:08:25 +00:00
Beta v20180202.1
This commit is contained in:
parent
2a9819a1cc
commit
71b4fb6b9a
3 changed files with 107 additions and 9 deletions
|
@ -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")]
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue