public FileDifferences[] GetDifferences() { var list = new List<FileDifferences>(); foreach (var mp3 in _files) { var mp3Data = mp3.GetId3Data(); var extracter = new DataExtracter(_mask); var tags = extracter.GetTags(); var prefixes = extracter.FindAllPrefixes(tags); var diffs = new FileDifferences(mp3); var data = extracter.GetFullDataFromString(prefixes, Path.GetFileNameWithoutExtension(mp3.FilePath), tags); var differenceItems = data.Where(item => mp3Data[item.Key] != item.Value).ToArray(); if (!differenceItems.Any()) continue; foreach (var item in differenceItems) { diffs.Add(item.Key, new Diff { FileNameValue = item.Value, TagValue = mp3Data[item.Key] }); } list.Add(diffs); } return list.ToArray(); }
public FileDifferences[] GetDifferences() { var list = new List <FileDifferences>(); foreach (var mp3 in _files) { var mp3Data = mp3.GetId3Data(); var extracter = new DataExtracter(_mask); var tags = extracter.GetTags(); var prefixes = extracter.FindAllPrefixes(tags); var diffs = new FileDifferences(mp3); var data = extracter.GetFullDataFromString(prefixes, Path.GetFileNameWithoutExtension(mp3.FilePath), tags); var differenceItems = data.Where(item => mp3Data[item.Key] != item.Value).ToArray(); if (!differenceItems.Any()) { continue; } foreach (var item in differenceItems) { diffs.Add(item.Key, new Diff { FileNameValue = item.Value, TagValue = mp3Data[item.Key] }); } list.Add(diffs); } return(list.ToArray()); }
public void Test_GetFullDataFromString_DelimiterExpected() { var extracter = new DataExtracter("{id}{artist} - {title}"); var tags = extracter.GetTags(); var prefixes = extracter.FindAllPrefixes(tags); var data = extracter.GetFullDataFromString(prefixes, "10. test artist - test song name", tags); }
public void ChangeTags() { var tags = _dataExtracter.GetTags(); var prefixesQueue = _dataExtracter.FindAllPrefixes(tags); var data = _dataExtracter.GetFullDataFromString(prefixesQueue, Mp3RealName, tags); ChangeMp3Tags(data); }
public void Test_FindAllPrefixes() { var extracter = new DataExtracter("-this-is-{artist}-prefix-{title}"); var prefixes = extracter.FindAllPrefixes(extracter.GetTags()); var expected = new Queue <string>(); expected.Enqueue("-this-is-"); expected.Enqueue("-prefix-"); CollectionAssert.AreEqual(expected, prefixes); }
public void Test_NotEnoughData() { var extracter = new DataExtracter("{id} {artist} - {title}"); var tags = extracter.GetTags(); var prefixes = extracter.FindAllPrefixes(tags); var data = extracter.GetFullDataFromString(prefixes, "10 art", tags); var expected = new Dictionary <TagType, string> { { TagType.Id, "10" }, { TagType.Artist, "" }, { TagType.Title, "" } }; CollectionAssert.AreEqual(expected, data); }
public void Test_FirstPrefix() { var extracter = new DataExtracter("[{id}] {artist}"); var tags = extracter.GetTags(); var prefixes = extracter.FindAllPrefixes(tags); var data = extracter.GetFullDataFromString(prefixes, "[10] test artist", tags); var expected = new Dictionary <TagType, string> { { TagType.Id, "10" }, { TagType.Artist, "test artist" } }; CollectionAssert.AreEqual(expected, data); }
public string GetNewFileName() { var tags = _dataExtracter.GetTags(); if (_fastChanges && Id3Data.Count == 0) { return(Path.GetFileNameWithoutExtension(_mp3File.FilePath)); } Dictionary <TagType, string> id3Data; if (Id3Data.Count > 0) { id3Data = Id3Data; var keys = _mp3File.GetId3Data().Where(tag => !Id3Data.ContainsKey(tag.Key) && tags.Contains(tag.Key)).ToDictionary(tag => tag.Key, tag => tag.Value); foreach (var item in keys) { id3Data.Add(item.Key, item.Value); } } else { id3Data = _mp3File.GetId3Data(); } var emptyTags = id3Data.Where(tag => string.IsNullOrWhiteSpace(tag.Value)).Select(x => x.Key).ToArray(); var reallyImportantAndEmptyTags = from tag in tags where emptyTags.Contains(tag) select tag; foreach (var tag in reallyImportantAndEmptyTags) { throw new Exception("MP3 Mp3File hasn't tag " + tag); } var resultFileName = new StringBuilder(_dataExtracter.Mask); foreach (var tagInfo in id3Data) { resultFileName.Replace("{" + tagInfo.Key.ToString().ToLower() + "}", tagInfo.Value); } _data = resultFileName; return(resultFileName.ToString()); }
public void Test_GetTags() { var extracter = new DataExtracter("{artist}{id}{title}{year}"); var expected = new Queue <TagType>(); expected.Enqueue(TagType.Artist); expected.Enqueue(TagType.Id); expected.Enqueue(TagType.Title); expected.Enqueue(TagType.Year); var actual = extracter.GetTags(); Assert.AreEqual(actual.Count, expected.Count); for (var i = 0; i < actual.Count; i++) { var act = actual.Dequeue(); var exp = expected.Dequeue(); Assert.AreEqual(act, exp); } }