Beispiel #1
0
        private void getBrowserVariables_Tick(object sender, EventArgs eArgs)
        {
            ///////////////////////////////////////
            // - Check Browser Frame Controls
            if (this.bEval("cFrameControlMinimized") == "1")
            {
                this.WindowState = FormWindowState.Minimized;
                this.bEval("cFrameControlMinimized=0");
            }
            if (this.bEval("cFrameControlSettings") == "1")
            {
                this.bEval("cFrameControlSettings=0");

                TagLib.File tagFile        = TagLib.File.Create(filePath);
                settings    settingsDialog = new settings(filePath, cnfSettingsX, cnfSettingsY, borderColorR, borderColorG, borderColorB);

                settingsDialog.base64Cover = currentBase64Cover;
                settingsDialog.sName       = tagFile.Tag.Title != null?tagFile.Tag.Title.ToString() : "";

                settingsDialog.sArtist = tagFile.Tag.Performers.Length > 0 ? tagFile.Tag.Performers[0] : "";
                settingsDialog.sAlbum  = tagFile.Tag.Album != null?tagFile.Tag.Album.ToString() : "";

                settingsDialog.sAlbumArtist = tagFile.Tag.AlbumArtists.Length > 0 ? tagFile.Tag.AlbumArtists[0] : "";
                settingsDialog.sGenre       = tagFile.Tag.Genres.Length > 0 ? tagFile.Tag.Genres[0] : "";
                settingsDialog.sYear        = tagFile.Tag.Year.ToString();

                settingsDialog.ShowDialog();

                if (settingsDialog.saveChanges && filePath == settingsDialog.trackName)
                {
                    TagLib.IPicture[] cover = tagFile.Tag.Pictures;

                    if (settingsDialog.newBase64Cover != "")
                    {
                        currentBase64Cover = settingsDialog.newBase64Cover;
                        borderColorR       = settingsDialog.borderColorR;
                        borderColorG       = settingsDialog.borderColorG;
                        borderColorB       = settingsDialog.borderColorB;
                        ImageConverter converter = new ImageConverter();

                        byte[]       imageBytes = Convert.FromBase64String(settingsDialog.newBase64Cover);
                        MemoryStream ms         = new MemoryStream(imageBytes, 0, imageBytes.Length);
                        Bitmap       coverBmp   = new Bitmap(ms);

                        if (coverBmp.Height > 500)
                        {
                            coverBmp = new Bitmap(coverBmp, new Size(((coverBmp.Width * 500) / coverBmp.Height), 500));
                        }

                        TagLib.IPicture newArt = new TagLib.Picture(new TagLib.ByteVector((byte[])converter.ConvertTo(coverBmp, typeof(byte[]))));
                        tagFile.Tag.Pictures = new TagLib.IPicture[1] {
                            newArt
                        };
                        this.bEval("setNewCover('" + settingsDialog.newBase64Cover + "','" + settingsDialog.borderColorR + "','" + settingsDialog.borderColorG + "','" + settingsDialog.borderColorB + "');");

                        // Create custom tag if not exists to check if default cover used in future
                        TagLib.Id3v2.Tag          tag    = (TagLib.Id3v2.Tag)tagFile.GetTag(TagLib.TagTypes.Id3v2);
                        TagLib.Id3v2.PrivateFrame pFrame = TagLib.Id3v2.PrivateFrame.Get(tag, "isDefaultCover", true);

                        // Set new tag value to yes or no
                        if (settingsDialog.isDefaultCover)
                        {
                            pFrame.PrivateData = Encoding.Unicode.GetBytes("yes");
                        }
                        else
                        {
                            pFrame.PrivateData = Encoding.Unicode.GetBytes("no");
                        }
                    }
                    string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(filePath);
                    fileNameWithoutExtension = fileNameWithoutExtension.Replace(@"'", @"\'");

                    this.bEval("setNewInfo('" + Convert.ToBase64String(ToByteArray(fileNameWithoutExtension)) + "','" + Convert.ToBase64String(ToByteArray(settingsDialog.sArtist)) + "','" + Convert.ToBase64String(ToByteArray(settingsDialog.sName)) + "','" + Convert.ToBase64String(ToByteArray(settingsDialog.sAlbum)) + "');");

                    if (tagFile.Tag.Title == null || !tagFile.Tag.Title.ToString().Equals(settingsDialog.sName))
                    {
                        tagFile.Tag.Title = settingsDialog.sName;
                    }
                    if (tagFile.Tag.Performers.Length <= 0 || !tagFile.Tag.Performers[0].ToString().Equals(settingsDialog.sArtist))
                    {
                        tagFile.Tag.Performers = new string[] { settingsDialog.sArtist };
                    }
                    if (tagFile.Tag.Album == null || !tagFile.Tag.Album.ToString().Equals(settingsDialog.sAlbum))
                    {
                        tagFile.Tag.Album = settingsDialog.sAlbum;
                    }
                    if (tagFile.Tag.AlbumArtists.Length <= 0 || !tagFile.Tag.AlbumArtists[0].ToString().Equals(settingsDialog.sAlbumArtist))
                    {
                        tagFile.Tag.AlbumArtists = new string[] { settingsDialog.sAlbumArtist };
                    }
                    if (tagFile.Tag.Genres.Length <= 0 || !tagFile.Tag.Genres[0].ToString().Equals(settingsDialog.sGenre))
                    {
                        tagFile.Tag.Genres = new string[] { settingsDialog.sGenre };
                    }
                    if (!tagFile.Tag.Year.ToString().Equals(settingsDialog.sYear))
                    {
                        tagFile.Tag.Year = Convert.ToUInt32(settingsDialog.sYear);
                    }

                    this.bEval("pauseMedia();");
                    tagFile.Save();
                    this.bEval("returnMedia();");
                }

                cnfSettingsY = settingsDialog.Top;
                cnfSettingsX = settingsDialog.Left;
            }
            if (this.bEval("cFrameControlClosed") == "1")
            {
                Application.Exit();
            }
            if (this.bEval("isPlayerReady") == "1")
            {
                this.bEval("isPlayerReady=0");
                setMedia(filePath);
            }
            // - End
            ///////////////////////////////////////

            try
            {
                string   configText = File.ReadAllText(Application.StartupPath.ToString() + "/config.ini");
                string[] configArgs = configText.Split(new string[] { "\r\n" }, StringSplitOptions.None);
                foreach (string val in configArgs)
                {
                    if (val.Split(new string[] { "=" }, StringSplitOptions.None)[0] == "new_path")
                    {
                        if (val.Split(new string[] { "=" }, StringSplitOptions.None)[1].ToString() != "")
                        {
                            if (this.filePath == val.Split(new string[] { "=" }, StringSplitOptions.None)[1].ToString())
                            {
                                bEval("playAgain();");
                            }
                            else
                            {
                                setMedia(val.Split(new string[] { "=" }, StringSplitOptions.None)[1].ToString());
                                // Bring window to top.
                                TopMost = true;
                                Focus();
                                BringToFront();
                                TopMost = false;
                            }
                        }
                    }
                }
                setConfig();
            }
            catch (Exception e) { }
        }
Beispiel #2
0
        //************************************************//
        //---------------- Set Media Code ---------------//
        //************************************************//

        public bool setMedia(string filePath)
        {
            this.filePath = filePath;

            if (filePath != string.Empty && filePath != "")
            {
                // Work With Music ID3 Tag
                TagLib.File tagFile = TagLib.File.Create(filePath);


                string album = tagFile.Tag.Album != null?tagFile.Tag.Album.ToString() : "";

                string[] performers = tagFile.Tag.Performers;
                string   title      = tagFile.Tag.Title != null?tagFile.Tag.Title.ToString() : "";

                string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(filePath);
                string performerByFileName      = "";
                string titleByFileName          = "";

                if (fileNameWithoutExtension.IndexOf("-") != -1)
                {
                    if (fileNameWithoutExtension.Split(new string[] { "-" }, StringSplitOptions.None).Length == 2)
                    {
                        performerByFileName = fileNameWithoutExtension.Split(new string[] { "-" }, StringSplitOptions.None)[0].Trim();
                        titleByFileName     = fileNameWithoutExtension.Split(new string[] { "-" }, StringSplitOptions.None)[1].Trim();
                    }
                }

                if (performerByFileName != "" && titleByFileName != "")
                {
                    if (performers.Length == 0)
                    {
                        tagFile.Tag.Performers = new string[] { performerByFileName };
                    }
                    if (title == null)
                    {
                        tagFile.Tag.Title = titleByFileName;
                    }

                    tagFile.Save();
                }

                performers = tagFile.Tag.Performers;
                title      = tagFile.Tag.Title != null?tagFile.Tag.Title.ToString() : "";

                string performer = performerByFileName;
                if (performers.Length > 0)
                {
                    performer = performers[0].ToString();
                }


                // Generate Cover And Average Color Of Borders
                TagLib.IPicture[] cover       = tagFile.Tag.Pictures;
                string            base64Cover = "";
                int            r         = 210;
                int            g         = 72;
                int            b         = 38;
                Bitmap         coverBmp  = new Bitmap(cPlayer.Properties.Resources.defaultCover);
                ImageConverter converter = new ImageConverter();
                if (cover.Length >= 1)
                {
                    {
                        MemoryStream bmpStr = new MemoryStream((byte[])cover[0].Data.Data);
                        Bitmap       bmp    = new Bitmap(bmpStr);
                        if (bmp.Height > 500)
                        {
                            bmp = new Bitmap(bmp, new Size(((bmp.Width * 500) / bmp.Height), 500));

                            TagLib.IPicture newArt = new TagLib.Picture(new TagLib.ByteVector((byte[])converter.ConvertTo(bmp, typeof(byte[]))));
                            tagFile.Tag.Pictures = new TagLib.IPicture[1] {
                                newArt
                            };
                            tagFile.Save();

                            cover = tagFile.Tag.Pictures;
                        }
                    }

                    base64Cover = Convert.ToBase64String((byte[])cover[0].Data.Data);

                    // Check if default cover is used
                    bool isDefaultCover = false;
                    try
                    {
                        // Get data from custom tag if it exists
                        TagLib.Id3v2.Tag          tag    = (TagLib.Id3v2.Tag)tagFile.GetTag(TagLib.TagTypes.Id3v2);
                        TagLib.Id3v2.PrivateFrame pFrame = TagLib.Id3v2.PrivateFrame.Get(tag, "isDefaultCover", false);
                        isDefaultCover = Encoding.Unicode.GetString(pFrame.PrivateData.Data).Equals("yes") ? true : false;
                    }
                    catch (Exception e) { }

                    if (!isDefaultCover)
                    {
                        MemoryStream bmpStr = new MemoryStream((byte[])cover[0].Data.Data);
                        Bitmap       bmp    = new Bitmap(bmpStr);
                        int          total  = 0;
                        for (int x = 0; x < bmp.Width; x++)
                        {
                            for (int y = 0; y < bmp.Height; y++)
                            {
                                Color clr = bmp.GetPixel(x, y);

                                r += clr.R;
                                g += clr.G;
                                b += clr.B;

                                total++;
                            }
                        }

                        r /= total;
                        g /= total;
                        b /= total;
                    }
                }
                else
                {
                    base64Cover = Convert.ToBase64String((byte[])converter.ConvertTo(coverBmp, typeof(byte[])));
                    TagLib.IPicture newArt = new TagLib.Picture(new TagLib.ByteVector((byte[])converter.ConvertTo(coverBmp, typeof(byte[]))));
                    tagFile.Tag.Pictures = new TagLib.IPicture[1] {
                        newArt
                    };

                    // Create custom tag if not exists to check if default cover used in future
                    TagLib.Id3v2.Tag          tag    = (TagLib.Id3v2.Tag)tagFile.GetTag(TagLib.TagTypes.Id3v2);
                    TagLib.Id3v2.PrivateFrame pFrame = TagLib.Id3v2.PrivateFrame.Get(tag, "isDefaultCover", true);
                    pFrame.PrivateData = Encoding.Unicode.GetBytes("yes");

                    tagFile.Save();
                }

                borderColorR = r;
                borderColorG = g;
                borderColorB = b;

                tagFile = null;

                currentBase64Cover = base64Cover;

                //MessageBox.Show("playMedia('file:\\\\\\\\" + filePath.Replace(@"/", @"\").Replace(@"\", @"\\").Replace(@"'", @"\'") + "','" + base64Cover + "','" + r + "','" + g + "','" + b + "','" + fileNameWithoutExtension + "','" + performer + "','" + title + "','" + album + "');");

                //this.bEval("playMedia('" +  filePath + "','" + r + "','" + g + "','" + b + "','" + Convert.ToBase64String(ToByteArray(fileNameWithoutExtension)) + "','" + Convert.ToBase64String(ToByteArray(performer)) + "','" + Convert.ToBase64String(ToByteArray(title)) + "','" + Convert.ToBase64String(ToByteArray(album)) + "');");
                this.bEval("playMedia('" + Convert.ToBase64String(ToByteArray("file:\\\\\\\\" + filePath)) + "','" + base64Cover + "','" + r + "','" + g + "','" + b + "','" + Convert.ToBase64String(ToByteArray(fileNameWithoutExtension)) + "','" + Convert.ToBase64String(ToByteArray(performer)) + "','" + Convert.ToBase64String(ToByteArray(title)) + "','" + Convert.ToBase64String(ToByteArray(album)) + "');");
            }

            return(true);
        }