Example #1
0
 public static Boolean Savev1tag(Track mytrack)
 {
     if (!File.Exists(mytrack.Filename))
     {
         MessageBox.Show("File Does not exist " + mytrack.Filename);
         return(false);
     }
     try
     {
         var trackxml = new XMLutils(appPath + "\\trackxml.xml");
         removeID3v1(mytrack.Filename);
         var id3 = new ID3v1Tag(mytrack.Filename);
         if (!String.IsNullOrEmpty(mytrack.Filename) && File.Exists(mytrack.Filename))
         {
             id3.Album  = mytrack.Album;
             id3.Artist = mytrack.Artist;
             id3.Title  = mytrack.Title;
             if (mytrack.Trackno.Contains("/"))
             {
                 id3.TrackNumber = Convert.ToInt16(mytrack.Trackno.Substring(0, mytrack.Trackno.IndexOf("/")));
             }
             else
             {
                 id3.TrackNumber = Convert.ToInt16(mytrack.Trackno);
             }
             id3.Year       = mytrack.Year;
             id3.GenreIndex = GenreHelper.GetGenreIndex(mytrack.Genre);
             // id3.Comment = comment;
             id3.Save(mytrack.Filename);
             trackxml.ModifyRecord(mytrack);
         }
         if (ID3v1Tag.DoesTagExist(mytrack.Filename))
         {
             trackxml.Updaterecord(mytrack.Filename);
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
         return(false);
     }
 }
Example #2
0
        /// <summary>Saves the tag to the specified path.</summary>
        /// <param name="path">The full path of the file.</param>
        private void Save(string path)
        {
            if (string.IsNullOrEmpty(path))
            {
                throw new ArgumentNullException("path");
            }

            if (VorbisComment.VorbisComment.IsFlac(path))
            {
                VorbisComment.VorbisComment vc = new VorbisComment.VorbisComment(path);
                vc.Title       = Title;
                vc.Artist      = Artist;
                vc.Album       = Album;
                vc.Year        = Year;
                vc.Genre       = Genre;
                vc.TrackNumber = TrackNumber;
                vc.Comment     = Comment;
                vc.Save(path);

                ID3v2Tag.RemoveTag(path);
                ID3v1Tag.RemoveTag(path);
            }
            else
            {
                ID3v2Tag id3v2 = new ID3v2Tag(path);
                id3v2.Title       = Title;
                id3v2.Artist      = Artist;
                id3v2.Album       = Album;
                id3v2.Year        = Year;
                id3v2.Genre       = Genre;
                id3v2.TrackNumber = TrackNumber;

                if (id3v2.CommentsList.Count > 0)
                {
                    id3v2.CommentsList[0].Description = Comment;
                }
                else
                {
                    if (!string.IsNullOrEmpty(Comment))
                    {
                        id3v2.CommentsList.AddNew().Description = Comment;
                    }
                }

                ID3v1Tag id3v1 = new ID3v1Tag(path);
                id3v1.Title      = Title;
                id3v1.Artist     = Artist;
                id3v1.Album      = Album;
                id3v1.Year       = Year;
                id3v1.GenreIndex = GenreHelper.GetGenreIndex(Genre);
                id3v1.Comment    = Comment;
                int trackNumber;
                if (int.TryParse(TrackNumber, out trackNumber))
                {
                    id3v1.TrackNumber = trackNumber;
                }
                else
                {
                    // Handle ##/## format
                    if (TrackNumber.Contains("/"))
                    {
                        if (int.TryParse(TrackNumber.Split('/')[0], out trackNumber))
                        {
                            id3v1.TrackNumber = trackNumber;
                        }
                        else
                        {
                            id3v1.TrackNumber = 0;
                        }
                    }
                    else
                    {
                        id3v1.TrackNumber = 0;
                    }
                }

                id3v2.Save(path);
                id3v1.Save(path);
            }

            Read(path);
        }
Example #3
0
        private void CopyAndSplitMP3s(bool p_bIsReSpliting = false)
        {
            // Get the Split size in bytes (from megabytes)
            Int64 iSplitSize = ((Convert.ToInt64(numSplitSize.Value /* Megabytes */) * 1024 /* Kilobytes */) * 1024 /* Bytes */);

            if (!p_bIsReSpliting)
            {
                if (chkSplitRandomly.Checked)
                {
                    if (!bCopyCompletedOnce)
                    {
                        iaRandOrder = new int[finalTrackList.Count];
                        for (int i = 0; i < iaRandOrder.Length; i++)
                        {
                            iaRandOrder[i] = i;
                        }
                        Shuffle(iaRandOrder);
                    }

                    orderedTrackList = new List <Track>();
                    foreach (int iIndx in iaRandOrder)
                    {
                        orderedTrackList.Add(finalTrackList[iIndx]);
                    }

                    iaRandOrder = null;
                }
                else
                {
                    orderedTrackList = finalTrackList;
                }
            }

            // Split the MP3s into Size folders
            Int64 iCurrentTotalSize = 0;
            int   iSplitCount       = 1;
            int   iTrackCount       = 0;

            foreach (Track rwTrack in orderedTrackList)
            {
                if (chkSplitSize.Checked && (iCurrentTotalSize + rwTrack.FileSize) > iSplitSize)
                {
                    iCurrentTotalSize = 0;
                    iSplitCount++;
                }

                // Copy MP3s into Folder
                FileInfo oFile       = new FileInfo(rwTrack.FileName);
                string   sDestFolder = Path.Combine(txtDestFolder.Text, (chkSplitSize.Checked ? "Disc_" + iSplitCount.ToString("D2") : ""));
                if (!Directory.Exists(sDestFolder))
                {
                    Directory.CreateDirectory(sDestFolder);
                }
                string sDestPath = Path.Combine(sDestFolder, rwTrack.DestFileName);
                if (!File.Exists(sDestPath))
                {
                    oFile.CopyTo(sDestPath);

                    // Now that we have a copy of the MP3 file we should re-tag it to match the tags retrieved from Rainwave.
                    // The Rainwave tags are much better than the OCRemix tags!!
                    IID3v1Tag id3v1 = new ID3v1Tag(sDestPath);
                    id3v1.Album  = rwTrack.Album;
                    id3v1.Artist = rwTrack.Artist;
                    id3v1.Title  = rwTrack.Title;
                    id3v1.Save(sDestPath);

                    IID3v2Tag id3v2 = new ID3v2Tag(sDestPath);
                    id3v2.Album  = rwTrack.Album;
                    id3v2.Artist = rwTrack.Artist;
                    id3v2.Title  = rwTrack.Title;
                    id3v2.Save(sDestPath);

                    if (chkSplitSize.Checked)
                    {
                        iCurrentTotalSize += rwTrack.FileSize;
                    }

                    iTrackCount++;
                    UpdateFolderProgress(iTrackCount, orderedTrackList.Count);
                }
            }

            bCopyCompletedOnce = true;
        }