Example #1
0
        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();
        }
Example #2
0
        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());
        }
Example #3
0
        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);
        }
Example #4
0
        public void ChangeTags()
        {
            var tags          = _dataExtracter.GetTags();
            var prefixesQueue = _dataExtracter.FindAllPrefixes(tags);

            var data = _dataExtracter.GetFullDataFromString(prefixesQueue, Mp3RealName, tags);

            ChangeMp3Tags(data);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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());
        }
Example #9
0
        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);
            }
        }