Пример #1
0
        protected void DetectFile(string name, string filePath, Etiqueta et)
        {
            string[] ext = name.Split('.');

            if ((ext[ext.Length - 1] == "mp3") ||
                (ext[ext.Length - 1] == "MP3"))
            {
                ListViewItem listViewItem = new ListViewItem(new string[] {
                    name, et.GetTitle(), et.GetArtist(), et.GetAlbum(), filePath
                },
                                                             -1, Color.Empty, Color.Empty, null);

                vistalista.Items.AddRange(new ListViewItem[] { listViewItem });
            }
        }
Пример #2
0
        protected void InfoMP(string name, string filePath)
        {
            try
            {
                Etiqueta et  = new Etiqueta();
                string[] ext = name.Split('.');

                //If is a file MP3

                if ((ext[ext.Length - 1] == "mp3") ||
                    (ext[ext.Length - 1] == "MP3"))
                {
                    using (var r = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                    {
                        byte first  = (byte)r.ReadByte();
                        byte second = (byte)r.ReadByte();
                        byte third  = (byte)r.ReadByte();

                        r.Seek(-128, SeekOrigin.End);
                        byte[] data = new byte[128];
                        int    read = r.Read(data, 0, 128);

                        //Reset Basic Info
                        string title   = "";
                        string artist  = "";
                        string album   = "";
                        string year    = "";
                        string comment = "";

                        //Add Title Info
                        for (int i = 3; i < 33; i++)
                        {
                            if (data[i] != 0)
                            {
                                title += Convert.ToChar(data[i]);
                            }
                        }
                        titulotext.Text = title;
                        et.SetTitle(title);

                        //Add Artist Info
                        for (int i = 33; i < 63; i++)
                        {
                            if (data[i] != 0)
                            {
                                artist += Convert.ToChar(data[i]);
                            }
                        }
                        artistatext.Text = artist;
                        et.SetArtist(artist);

                        //Add Album Info
                        for (int i = 63; i < 93; i++)
                        {
                            if (data[i] != 0)
                            {
                                album += Convert.ToChar(data[i]);
                            }
                        }
                        albumtext.Text = album;
                        et.SetAlbum(album);

                        //Add Year Info
                        for (int i = 93; i < 97; i++)
                        {
                            if (data[i] != 0)
                            {
                                year += Convert.ToChar(data[i]);
                            }
                        }
                        anyotext.Text = year;
                        et.SetYear(year);

                        //Add Comment Info
                        for (int i = 97; i < 127; i++)
                        {
                            if (data[i] != 0)
                            {
                                comment += Convert.ToChar(data[i]);
                            }
                        }
                        comtext.Text = comment;
                        et.SetComment(comment);

                        r.Close();
                    }

                    //Add Genre Info
                    TagLib.File tgFile  = TagLib.File.Create(filePath);
                    string[]    toGenre = tgFile.Tag.Genres;
                    foreach (string g in toGenre)
                    {
                        generotext.Text = g;
                        et.SetGenre(g);
                    }

                    if (toGenre == null)
                    {
                        generotext.Text = string.Empty;
                        et.SetGenre(string.Empty);
                    }

                    toGenre = null;

                    //Add Track Number
                    uint   toTrack = tgFile.Tag.Track;
                    string track   = Convert.ToString(toTrack);

                    if (track == "0")
                    {
                        pistatext.Text = string.Empty;
                        et.SetNumber(string.Empty);
                    }
                    else
                    {
                        pistatext.Text = track;
                        et.SetNumber(track);
                    }

                    //Add of Composer
                    string[] toComp = tgFile.Tag.Composers;
                    foreach (string comp in toComp)
                    {
                        comptext.Text = comp;
                        et.SetComp(comp);
                    }

                    if (toComp == null)
                    {
                        comptext.Text = string.Empty;
                        et.SetComp(string.Empty);
                    }

                    toComp = null;

                    //Add of Num CD
                    uint   toNumcd = tgFile.Tag.Disc;
                    string numcd   = Convert.ToString(toNumcd);

                    if (numcd == "0")
                    {
                        numtext.Text = "1";
                        et.SetNumcd("1");
                    }
                    else
                    {
                        numtext.Text = numcd;
                        et.SetNumcd(numcd);
                    }

                    //Add Cover CD (To PictureBox1)
                    MemoryStream img = new MemoryStream(tgFile.Tag.Pictures[0].Data.Data);
                    et.SetImg(img);
                    Image bitmap = new Bitmap(et.GetImg());
                    pictureBox1.Image = bitmap;

                    tgFile.Dispose();

                    DetectFile(name, filePath, et);
                }
                else
                {
                    string message = "Error: " + name + " es un Archivo Incompatible";
                    string caption = "Error";
                    MessageBox.Show(message, caption,
                                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            catch (Exception e)
            {
                string       message = "Error: " + e.Message;
                string       caption = "Error";
                DialogResult result  = MessageBox.Show(message, caption,
                                                       MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Пример #3
0
        private void anyadir_Caratula(object sender, EventArgs e)
        {
            if (vistalista.SelectedItems.Count == 1)
            {
                var fileContent = string.Empty;

                using (OpenFileDialog openFileDialog = new OpenFileDialog())
                {
                    vistalista.Clear();
                    columns();
                    openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                    openFileDialog.Filter           = "All files (*.*)|*.*|PNG files (*.*)|*.png*|JPG files (*.jpg)|*.jpg";
                    openFileDialog.FilterIndex      = 3; //Number Filter of Names and Extensions
                    openFileDialog.RestoreDirectory = true;
                    openFileDialog.Multiselect      = true;

                    if (openFileDialog.ShowDialog() == DialogResult.OK)
                    {
                        string[] filePath  = openFileDialog.FileNames;
                        int      pathLimit = filePath.Length - 1;
                        int      pathCount = 0;

                        foreach (string fileName in openFileDialog.SafeFileNames)
                        {
                            if (pathLimit == -1)
                            {
                                //Get the path of specified file
                                string filePathOne = openFileDialog.FileName;
                                //Read the contents of the file into a stream
                                var fileStream = openFileDialog.OpenFile();

                                string[]    ext    = fileName.Split('.');
                                TagLib.File tgFile = TagLib.File.Create(filePath[pathCount]);

                                //Add Cover CD (To PictureBox1)
                                Image bitmap = Image.FromFile(filePathOne);
                                pictureBox1.Image = bitmap;
                                //And to the file
                                Etiqueta     et         = new Etiqueta();
                                MemoryStream albmStream = new MemoryStream(tgFile.Tag.Pictures[0].Data.Data);
                                if ((ext[ext.Length - 1] == "jpg") ||
                                    (ext[ext.Length - 1] == "JPG"))
                                {
                                    bitmap.Save(albmStream, ImageFormat.Jpeg);
                                }
                                et.SetImg(albmStream);
                                TagLib.Picture picture = new TagLib.Picture(new TagLib.ByteVector(albmStream.ToArray()));
                                TagLib.Id3v2.AttachedPictureFrame albumCoverPictFrame = new TagLib.Id3v2.AttachedPictureFrame(picture);

                                albumCoverPictFrame.Type = TagLib.PictureType.FrontCover;
                                TagLib.IPicture[] pictFrames = { albumCoverPictFrame };

                                tags.Pictures = pictFrames;

                                InfoMP(fileName, filePathOne);
                            }
                            else
                            {
                                if (pathCount <= pathLimit)
                                {
                                    var fileStream = openFileDialog.OpenFile();
                                    InfoMP(fileName, filePath[pathCount]);
                                    pathCount++;

                                    string[] ext = fileName.Split('.');

                                    TagLib.File tgFile = TagLib.File.Create(filePath[pathCount]);

                                    //Add Cover CD (To PictureBox1)
                                    Image bitmap = Image.FromFile(filePath[pathCount]);
                                    pictureBox1.Image = bitmap;
                                    //And to the file
                                    Etiqueta     et         = new Etiqueta();
                                    MemoryStream albmStream = new MemoryStream(tgFile.Tag.Pictures[0].Data.Data);
                                    if ((ext[ext.Length - 1] == "jpg") ||
                                        (ext[ext.Length - 1] == "JPG"))
                                    {
                                        bitmap.Save(albmStream, ImageFormat.Jpeg);
                                    }
                                    et.SetImg(albmStream);
                                    TagLib.Picture picture = new TagLib.Picture(new TagLib.ByteVector(albmStream.ToArray()));
                                    TagLib.Id3v2.AttachedPictureFrame albumCoverPictFrame = new TagLib.Id3v2.AttachedPictureFrame(picture);

                                    albumCoverPictFrame.Type = TagLib.PictureType.FrontCover;
                                    TagLib.IPicture[] pictFrames = { albumCoverPictFrame };

                                    tags.Pictures = pictFrames;
                                }
                            }
                        }
                    }
                }
            }
        }
Пример #4
0
        private void vistalista_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (vistalista.SelectedItems.Count <= 1)
                {
                    if (vistalista.SelectedItems.Count == 1)
                    {
                        menuItem1.Enabled = true;
                        menuItem2.Enabled = true;
                    }
                    else //If is zero Disabled
                    {
                        menuItem1.Enabled = false;
                        menuItem2.Enabled = false;
                    }


                    //Cleaning...

                    titulotext.Text  = String.Empty;
                    artistatext.Text = String.Empty;
                    albumtext.Text   = String.Empty;
                    pistatext.Text   = String.Empty;
                    anyotext.Text    = String.Empty;
                    comtext.Text     = String.Empty;
                    generotext.Text  = String.Empty;
                    comptext.Text    = String.Empty;
                    numtext.Text     = String.Empty;

                    string filePath = vistalista.FocusedItem.SubItems[4].Text;
                    string name     = vistalista.FocusedItem.SubItems[0].Text;

                    string[] ext = name.Split('.');

                    if ((ext[ext.Length - 1] == "mp3") ||
                        (ext[ext.Length - 1] == "MP3"))
                    {
                        Etiqueta et = new Etiqueta();

                        using (var r = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                        {
                            byte first  = (byte)r.ReadByte();
                            byte second = (byte)r.ReadByte();
                            byte third  = (byte)r.ReadByte();

                            r.Seek(-128, SeekOrigin.End);
                            byte[] data = new byte[128];
                            int    read = r.Read(data, 0, 128);

                            //Reset Basic Info
                            string title   = "";
                            string artist  = "";
                            string album   = "";
                            string year    = "";
                            string comment = "";

                            //Add Title Info
                            for (int i = 3; i < 33; i++)
                            {
                                if (data[i] != 0)
                                {
                                    title += Convert.ToChar(data[i]);
                                }
                            }
                            titulotext.Text = title;
                            et.SetTitle(title);

                            //Add Artist Info
                            for (int i = 33; i < 63; i++)
                            {
                                if (data[i] != 0)
                                {
                                    artist += Convert.ToChar(data[i]);
                                }
                            }
                            artistatext.Text = artist;
                            et.SetArtist(artist);

                            //Add Album Info
                            for (int i = 63; i < 93; i++)
                            {
                                if (data[i] != 0)
                                {
                                    album += Convert.ToChar(data[i]);
                                }
                            }
                            albumtext.Text = album;
                            et.SetAlbum(album);

                            //Add Year Info
                            for (int i = 93; i < 97; i++)
                            {
                                if (data[i] != 0)
                                {
                                    year += Convert.ToChar(data[i]);
                                }
                            }
                            anyotext.Text = year;
                            et.SetYear(year);

                            //Add Comment Info
                            for (int i = 97; i < 127; i++)
                            {
                                if (data[i] != 0)
                                {
                                    comment += Convert.ToChar(data[i]);
                                }
                            }
                            comtext.Text = comment;
                            et.SetComment(comment);

                            r.Close();
                        }

                        //Add Genre Info
                        TagLib.File tgFile  = TagLib.File.Create(filePath);
                        string[]    toGenre = tgFile.Tag.Genres;
                        foreach (string g in toGenre)
                        {
                            generotext.Text = g;
                            et.SetGenre(g);
                        }

                        //Add Track Number
                        uint   toTrack = tgFile.Tag.Track;
                        string track   = Convert.ToString(toTrack);

                        pistatext.Text = track;
                        et.SetNumber(track);

                        //Add of Composer
                        string[] toComp = tgFile.Tag.Composers;
                        foreach (string comp in toComp)
                        {
                            comptext.Text = comp;
                            et.SetComp(comp);
                        }

                        //Add of Num CD
                        uint   toNumcd = tgFile.Tag.Disc;
                        string numcd   = Convert.ToString(toNumcd);

                        numtext.Text = numcd;
                        et.SetNumcd(numcd);

                        //Add Cover CD (To PictureBox1)
                        MemoryStream img = new MemoryStream(tgFile.Tag.Pictures[0].Data.Data);
                        et.SetImg(img);
                        Image bitmap = new Bitmap(et.GetImg());

                        pictureBox1.Image = bitmap;

                        tgFile.Dispose();
                    }
                }
                else
                {
                    //Multiple Slections Disabled for now

                    menuItem1.Enabled = false;
                    menuItem2.Enabled = false;

                    titulotext.Text  = "<mantener>";
                    artistatext.Text = "<mantener>";
                    albumtext.Text   = "<mantener>";
                    pistatext.Text   = "<mantener>";
                    anyotext.Text    = "<mantener>";
                    comtext.Text     = "<mantener>";
                    generotext.Text  = "<mantener>";
                    comptext.Text    = "<mantener>";
                    numtext.Text     = "<mantener>";
                }
            }
            catch (Exception e2)
            {
                string       message2 = "Error: " + e2.Message;
                string       caption2 = "Error";
                DialogResult result   = MessageBox.Show(message2, caption2,
                                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Пример #5
0
        private void numtext_TextChanged(object sender, EventArgs e)
        {
            Etiqueta eti = new Etiqueta();

            eti.SetNumcd(numtext.Text);
        }
Пример #6
0
        private void comptext_TextChanged(object sender, EventArgs e)
        {
            Etiqueta eti = new Etiqueta();

            eti.SetComp(comptext.Text);
        }
Пример #7
0
        private void generotext_TextChanged(object sender, EventArgs e)
        {
            Etiqueta eti = new Etiqueta();

            eti.SetGenre(generotext.Text);
        }
Пример #8
0
        private void pistatext_TextChanged(object sender, EventArgs e)
        {
            Etiqueta eti = new Etiqueta();

            eti.SetNumber(pistatext.Text);
        }
Пример #9
0
        private void anyotext_TextChanged(object sender, EventArgs e)
        {
            Etiqueta eti = new Etiqueta();

            eti.SetYear(anyotext.Text);
        }
Пример #10
0
        private void albumtext_TextChanged(object sender, EventArgs e)
        {
            Etiqueta eti = new Etiqueta();

            eti.SetAlbum(albumtext.Text);
        }
Пример #11
0
        private void artistatext_TextChanged(object sender, EventArgs e)
        {
            Etiqueta eti = new Etiqueta();

            eti.SetArtist(artistatext.Text);
        }
Пример #12
0
        private void titulotext_TextChanged(object sender, EventArgs e)
        {
            Etiqueta eti = new Etiqueta();

            eti.SetTitle(titulotext.Text);
        }
Пример #13
0
        //*PARA QUE FUNCIONE EL GUARDADO SE DEBE INICIAR SIN EL MENU DEPURAR

        private void guardarbtn_Click(object sender, EventArgs e)
        {
            try
            {
                string filePath = null;
                string name     = null;

                if (vistalista.SelectedItems.Count == 1)
                {
                    filePath = vistalista.FocusedItem.SubItems[4].Text;
                    name     = vistalista.FocusedItem.SubItems[0].Text;
                    Etiqueta et = new Etiqueta();
                    //Add Save File

                    TagLib.File tagFile = TagLib.File.Create(filePath);
                    TagLib.Id3v2.Tag.DefaultVersion      = 3;
                    TagLib.Id3v2.Tag.ForceDefaultVersion = true;

                    //Change of title
                    tagFile.Tag.Title = null;
                    et.SetTitle(titulotext.Text);
                    tagFile.Tag.Title = et.GetTitle();


                    //Change of Artists
                    et.SetArtist(artistatext.Text);
                    string[] toArtist = et.GetArtist().Split(',');

                    tagFile.Tag.Performers = null;
                    tagFile.Tag.Performers = toArtist; //new string[1]


                    //Change of album
                    tagFile.Tag.Album = null;
                    et.SetAlbum(albumtext.Text);
                    tagFile.Tag.Album = et.GetAlbum();

                    //Change of year
                    et.SetYear(anyotext.Text);
                    uint yesyear;
                    bool probandoanyo = uint.TryParse(et.GetYear(), out yesyear);

                    if (probandoanyo == true)
                    {
                        tagFile.Tag.Year = yesyear;
                    }

                    //Change of Comment
                    tagFile.Tag.Comment = null;
                    et.SetComment(comtext.Text);
                    tagFile.Tag.Comment = et.GetComment();

                    //Change of Genre
                    et.SetGenre(generotext.Text);
                    string[] toGenre = et.GetGenre().Split(',');

                    tagFile.Tag.Genres = null;
                    tagFile.Tag.Genres = toGenre;

                    //Change of Track Number
                    et.SetNumber(pistatext.Text);
                    uint yestrack;
                    bool probandotrack = uint.TryParse(et.GetNumber(), out yestrack);

                    if (probandotrack == true)
                    {
                        tagFile.Tag.Track = yestrack;
                    }

                    //Change of Composer
                    et.SetComp(comptext.Text);
                    string[] toComp = et.GetComp().Split(',');

                    tagFile.Tag.Composers = null;
                    tagFile.Tag.Composers = toComp;

                    //Change of Num CD
                    et.SetNumcd(numtext.Text);
                    uint yesdisc;
                    bool probandodisc = uint.TryParse(et.GetNumcd(), out yesdisc);

                    if (probandodisc == true)
                    {
                        tagFile.Tag.Disc = yesdisc;
                    }

                    tagFile.Save();
                    tagFile.Dispose();

                    string       message = "Etiqueta Guardada";
                    string       caption = "Info";
                    DialogResult result  = MessageBox.Show(message, caption,
                                                           MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else if (vistalista.SelectedItems.Count < 1)
                {
                    string       message = "Aviso: No se ha seleccionado cancion";
                    string       caption = "Aviso";
                    DialogResult result  = MessageBox.Show(message, caption,
                                                           MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    ListView.SelectedListViewItemCollection select =
                        this.vistalista.SelectedItems;

                    int contEt = 0;

                    Etiqueta et     = new Etiqueta();
                    string   titulo = titulotext.Text;
                    et.SetTitle(titulo);
                    string artista = artistatext.Text;
                    et.SetArtist(artista);
                    string album = albumtext.Text;
                    et.SetAlbum(album);
                    string year = anyotext.Text;
                    et.SetYear(year);
                    string comment = comtext.Text;
                    et.SetComment(comment);
                    string genre = generotext.Text;
                    et.SetGenre(genre);
                    string pista = pistatext.Text;
                    et.SetNumber(pista);
                    string comp = comptext.Text;
                    et.SetComp(comp);
                    string numcd = numtext.Text;
                    et.SetNumcd(numcd);

                    foreach (ListViewItem item in select)
                    {
                        int total = select.Count;
                        contEt++;

                        filePath = item.SubItems[4].Text;
                        name     = item.SubItems[0].Text;

                        //Add Save File

                        TagLib.File tagFile = TagLib.File.Create(filePath);
                        TagLib.Id3v2.Tag.DefaultVersion      = 3;
                        TagLib.Id3v2.Tag.ForceDefaultVersion = true;

                        switch (titulo)
                        {
                        case "<mantener>":
                            //Do Nothing
                            break;

                        case "<borrar>":
                            tagFile.Tag.Title = null;
                            break;

                        default:
                            tagFile.Tag.Title = et.GetTitle();
                            break;
                        }

                        switch (artista)
                        {
                        case "<mantener>":
                            //Do Nothing
                            break;

                        case "<borrar>":
                            tagFile.Tag.Performers = null;
                            break;

                        default:
                            string[] toArtist = et.GetArtist().Split(',');
                            tagFile.Tag.Performers = toArtist;
                            toArtist = null;
                            break;
                        }

                        switch (album)
                        {
                        case "<mantener>":
                            //Do Nothing
                            break;

                        case "<borrar>":
                            tagFile.Tag.Album = null;
                            break;

                        default:
                            tagFile.Tag.Album = et.GetAlbum();
                            break;
                        }

                        switch (year)
                        {
                        case "<mantener>":
                            //Do Nothing
                            break;

                        case "<borrar>":
                            tagFile.Tag.Year = 0;
                            break;

                        default:
                            uint yesyear;
                            bool probandoanyo = uint.TryParse(et.GetYear(), out yesyear);

                            if (probandoanyo == true)
                            {
                                tagFile.Tag.Year = yesyear;
                            }
                            break;
                        }

                        switch (comment)
                        {
                        case "<mantener>":
                            //Do Nothing
                            break;

                        case "<borrar>":
                            tagFile.Tag.Comment = null;
                            break;

                        default:
                            tagFile.Tag.Comment = et.GetComment();
                            break;
                        }

                        switch (genre)
                        {
                        case "<mantener>":
                            //Do Nothing
                            break;

                        case "<borrar>":
                            tagFile.Tag.Genres = null;
                            break;

                        default:
                            string[] toGenre = et.GetGenre().Split(',');
                            tagFile.Tag.Genres = toGenre;
                            toGenre            = null;
                            break;
                        }

                        switch (pista)
                        {
                        case "<mantener>":
                            //Do Nothing
                            break;

                        case "<borrar>":
                            tagFile.Tag.Track = 0;
                            break;

                        default:
                            uint yestrack;
                            bool probandotrack = uint.TryParse(et.GetNumber(), out yestrack);

                            if (probandotrack == true)
                            {
                                tagFile.Tag.Track = yestrack;
                            }
                            break;
                        }

                        switch (comp)
                        {
                        case "<mantener>":
                            //Do Nothing
                            break;

                        case "<borrar>":
                            tagFile.Tag.Composers = null;
                            break;

                        default:
                            string[] toComp = et.GetComp().Split(',');
                            tagFile.Tag.Composers = toComp;
                            toComp = null;
                            break;
                        }

                        switch (numcd)
                        {
                        case "<mantener>":
                            //Do Nothing
                            break;

                        case "<borrar>":
                            tagFile.Tag.Disc = 0;
                            break;

                        default:
                            uint yesnumcd;
                            bool probandotrack = uint.TryParse(et.GetNumcd(), out yesnumcd);

                            if (probandotrack == true)
                            {
                                tagFile.Tag.Disc = yesnumcd;
                            }
                            break;
                        }

                        if (contEt < total)
                        {
                            AutoClosingMessageBox.Show("Etiqueta " + contEt + " de " +
                                                       total + " Guardadas", "Info", 500);
                        }
                        else
                        {
                            MessageBox.Show("Etiqueta " + contEt + " de " +
                                            total + " Guardadas", "Info");
                        }

                        tagFile.Save();
                        tagFile.Dispose();
                    }
                }
            }
            catch (Exception e_Save)
            {
                string message = "Error: " + e_Save.Message + ": " + e_Save.Source
                                 + Environment.NewLine +
                                 Environment.NewLine +
                                 "Mas informacion en Ayuda";
                string       caption = "Error";
                DialogResult result  = MessageBox.Show(message, caption,
                                                       MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }