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) { } }
//************************************************// //---------------- 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); }