public void SaveFile(String path) { if (m_ID3v2 == null) { MessageBox.Show("Nothing to save!"); return; } if (cmbID3v2.SelectedIndex == cmbID3v2.Items.IndexOf("ID3v2.2")) { m_ID3v2.Header.TagVersion = ID3v2TagVersion.ID3v22; } else if (cmbID3v2.SelectedIndex == cmbID3v2.Items.IndexOf("ID3v2.3")) { m_ID3v2.Header.TagVersion = ID3v2TagVersion.ID3v23; } else if (cmbID3v2.SelectedIndex == cmbID3v2.Items.IndexOf("ID3v2.4")) { m_ID3v2.Header.TagVersion = ID3v2TagVersion.ID3v24; } else { throw new Exception("Unknown tag version"); } m_ID3v2.Artist = txtArtist.Text; m_ID3v2.Title = txtTitle.Text; m_ID3v2.Album = txtAlbum.Text; m_ID3v2.Genre = cmbGenre.Text; m_ID3v2.Year = txtYear.Text; m_ID3v2.TrackNumber = txtTrackNumber.Text; m_ID3v2.Save(path); }
public void SaveFile(FileInfo file) { PropertyInfo[] infos = this.m_ID3v2.GetType().GetProperties(); foreach (PropertyInfo info in infos) { if (info.PropertyType.Name == "String") { info.SetValue(this.m_ID3v2, (object)m_tagdict[info.Name], null); } } m_ID3v2.Save(file.FullName); /* * if (m_ID3v2 == null) * { * MessageBox.Show("Nothing to save!"); * return; * } * * if (cmbID3v2.SelectedIndex == cmbID3v2.Items.IndexOf("ID3v2.2")) * m_ID3v2.Header.TagVersion = ID3v2TagVersion.ID3v22; * else if (cmbID3v2.SelectedIndex == cmbID3v2.Items.IndexOf("ID3v2.3")) * m_ID3v2.Header.TagVersion = ID3v2TagVersion.ID3v23; * else if (cmbID3v2.SelectedIndex == cmbID3v2.Items.IndexOf("ID3v2.4")) * m_ID3v2.Header.TagVersion = ID3v2TagVersion.ID3v24; * else * throw new Exception("Unknown tag version"); * * m_ID3v2.Artist = txtArtist.Text; * m_ID3v2.Title = txtTitle.Text; * m_ID3v2.Album = txtAlbum.Text; * m_ID3v2.Genre = cmbGenre.Text; * m_ID3v2.Year = txtYear.Text; * m_ID3v2.TrackNumber = txtTrackNumber.Text; * * m_ID3v2.Save(path); */ }
public void SyncTagsToFiles() { using (var dataContext = new MusicEntities1()) { IQueryable <SONG> songs = dataContext.SONG.OrderByDescending(s => s.UPDATED).Take(5000); SONG[] songArray = songs.ToArray(); foreach (SONG song in songArray) { try { if (Regex.IsMatch(song.LOCATION, ".mp3", RegexOptions.IgnoreCase)) { FileInfo fileInfo = new FileInfo(song.LOCATION); string directoryRoot = Directory.GetDirectoryRoot(song.LOCATION); string filename = song.LOCATION; if (directoryRoot.ToLower().IndexOf("e:\\") == -1) { filename = filename.Substring(1); filename = "e" + filename; } string genre = null; IID3v2 iD3v2 = ID3v2Helper.CreateID3v2(filename); genre = iD3v2.Genre; UltraID3 ultraID3 = new UltraID3(); ultraID3.Read(filename); if (string.IsNullOrWhiteSpace(genre)) { genre = ultraID3.Genre; } else if (ultraID3.Genre != genre) { // ultraID3.Genre = genre; } IID3v1 iD3v1 = ID3v1Helper.CreateID3v1(filename); if (Regex.IsMatch(genre, "(")) { genre = GenreHelper.GenreByIndex[iD3v1.GenreIndex]; } // ID3v2Tag id3v2Tag = ultraID3.ID3v2Tag; if ((genre != song.GENRE) && (!string.IsNullOrWhiteSpace(song.GENRE)) //&& (song.GENRE.ToLower().IndexOf("blues")==-1) //&& (song.GENRE.ToLower().IndexOf("other") == -1) //&& (song.GENRE.ToLower().IndexOf("unknown") == -1) ) { testContextInstance.WriteLine("{0}, DB genre: {1}, Disk genre: {2}", filename, song.GENRE, genre); try { ultraID3.Genre = song.GENRE; iD3v2.Genre = song.GENRE; } catch (Exception e1) { testContextInstance.WriteLine("Exception, song: {0}, {1}, {2}", song.LOCATION, e1.Message, e1.StackTrace); } iD3v2.Save(filename); ultraID3.Write(); } } } catch (System.IO.DirectoryNotFoundException) { testContextInstance.WriteLine("Exception, file not found, song: {0}", song.LOCATION); } catch (System.IO.FileNotFoundException) { testContextInstance.WriteLine("Exception, file not found, song: {0}", song.LOCATION); } catch (Exception ex) { testContextInstance.WriteLine("Exception, song: {0}, {1}, {2}", song.LOCATION, ex.Message, ex.StackTrace); } } } }
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; } } } } } }