public static void UpdateId3(Music objEntity) { string path = string.Empty; if (string.IsNullOrWhiteSpace(objEntity.FilePath) == false && string.IsNullOrWhiteSpace(objEntity.FileName) == false) { path = Path.Combine(objEntity.FilePath, objEntity.FileName); } else if (string.IsNullOrWhiteSpace(objEntity.FilePath) == true && string.IsNullOrWhiteSpace(objEntity.FileName) == false) { path = objEntity.FileName; } else if (string.IsNullOrWhiteSpace(objEntity.FilePath) == false && string.IsNullOrWhiteSpace(objEntity.FileName) == true) { path = objEntity.FilePath; } if (string.IsNullOrWhiteSpace(path) == false) { if (Directory.Exists(path)) { int index; byte[] cover = RessourcesServices.GetDefaultCover(objEntity, out index); DirectoryInfo folder = new DirectoryInfo(path); FileInfo[] files = folder.GetFiles("*.mp3", SearchOption.TopDirectoryOnly); files = files.Concat(folder.GetFiles("*.flc", SearchOption.TopDirectoryOnly)).ToArray(); files = files.Concat(folder.GetFiles("*.flac", SearchOption.TopDirectoryOnly)).ToArray(); if (files.Any()) { foreach (FileInfo file in files) { switch (file.Extension) { case ".mp3": IID3v2 objMp3Tag = ID3v2Helper.CreateID3v2(file.FullName); if (objMp3Tag != null) { objMp3Tag.Album = objEntity.Album; objMp3Tag.Artist = objEntity.Artists.First().FulleName; objMp3Tag.Accompaniment = objEntity.Artists.First().FulleName; Genre genre = objEntity.Genres.FirstOrDefault(); if (genre != null) { objMp3Tag.Genre = genre.DisplayName; } if (cover != null) { while (objMp3Tag.PictureList.Any()) { objMp3Tag.PictureList.Remove(objMp3Tag.PictureList[0]); } IAttachedPicture picture = objMp3Tag.PictureList.AddNew(); if (picture != null) { picture.PictureData = cover; picture.PictureType = PictureType.CoverFront; // optional } } objMp3Tag.Save(file.FullName); } break; case ".flac": case ".flc": FlacTagger flacTaggerTag = new FlacTagger(file.FullName); flacTaggerTag.Album = objEntity.Album; flacTaggerTag.Artist = objEntity.Artists.First().FulleName; flacTaggerTag.Performer = objEntity.Artists.First().FulleName; Genre musicGenre = objEntity.Genres.FirstOrDefault(); if (musicGenre != null) { flacTaggerTag.Genre = musicGenre.DisplayName; } if (cover != null) { while (flacTaggerTag.Arts.Any()) { flacTaggerTag.RemoveArt(flacTaggerTag.Arts[0]); } ID3PictureFrame picture = new ID3PictureFrame(cover, ID3PictureType.FrontCover); flacTaggerTag.AddArt(picture); } flacTaggerTag.SaveMetadata(); break; } } } } } }
public static void ParseNfo(Music objEntity, out string errorMessage) { errorMessage = string.Empty; if (string.IsNullOrWhiteSpace(objEntity.FilePath)) { errorMessage = "Nfo File not found"; } else { string strFilePath; if (objEntity.FilePath.EndsWith(@"\", StringComparison.OrdinalIgnoreCase) == true) { strFilePath = objEntity.FilePath + objEntity.FileName; } else { strFilePath = objEntity.FilePath + @"\" + objEntity.FileName; } //FIX 2.8.2.0 if (Directory.Exists(strFilePath)) { DirectoryInfo objFolder = new DirectoryInfo(strFilePath); FileInfo[] lstFile = objFolder.GetFiles("*.nfo", SearchOption.AllDirectories); if (lstFile.Any()) { Hashtable objNfoValue = Dal.ParseNfo(lstFile[0].FullName); #region Artist //FIX 2.8.9.0 if (objEntity.Artists == null || objEntity.Artists.Count == 0) { if (objNfoValue.ContainsKey("Artist") == true) { ArtistServices.AddArtist(objNfoValue["Artist"].ToString().Trim(), objEntity); } } #endregion #region Publisher if (objEntity.Publisher == null) { if (objNfoValue.ContainsKey("Editor") == true) { Publisher objEditor = Dal.GetInstance.GetPublisher(objNfoValue["Editor"].ToString().Trim(), "Music_Studio", "Name"); if (objEditor == null) { objEditor = new Publisher(); objEditor.Name = objNfoValue["Editor"].ToString().Trim(); } objEntity.Publisher = objEditor; } } #endregion #region Genres if (objEntity.Genres == null || objEntity.Genres.Count == 0) { if (objNfoValue.ContainsKey("Type") == true) { Genre objType = Dal.GetInstance.GetGenre(objNfoValue["Type"].ToString().Trim(), "Music_Genre"); if (objType == null) { objType = new Genre(objNfoValue["Type"].ToString().Trim(), objNfoValue["Type"].ToString().Trim()); } if (objEntity.Genres == null) { objEntity.Genres = new List <Genre>(); } objEntity.Genres.Add(objType); } } #endregion #region Links if (objNfoValue.ContainsKey("Links") == true) { LinksServices.AddLinks(objNfoValue["Links"].ToString().Trim(), objEntity, false); } #endregion #region Released if (objEntity.ReleaseDate == null) { if (objNfoValue.ContainsKey("Released") == true) { DateTime objConverted; if (DateTime.TryParse(objNfoValue["Released"].ToString().Trim(), out objConverted) == true) { objEntity.ReleaseDate = objConverted; } } } #endregion } else { errorMessage = "Nfo File not found : " + strFilePath; } } else { errorMessage = "Nfo File not found : " + strFilePath; } } }