Example #1
0
        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);
        }
Example #2
0
        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);
             */
        }
Example #3
0
        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);
                    }
                }
            }
        }
Example #4
0
        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;
                            }
                        }
                    }
                }
            }
        }