/// <summary> /// Update function for CD /// </summary> /// <param name="track">Track</param> /// <param name="notify">send notification or not</param> /// <param name="size">File size in bytes</param> private void UpdateCDFlags(int track, bool notify, int size) { FileName = string.Format("CD Track #{0}", track); //GetFileSize(size); Cover = new BitmapImage(new Uri("/TCPlayer;component/Style/Images/disk.png", UriKind.Relative)); var Year = "unknown"; var Artist = "Track"; var Title = string.Format("#{0}", track); var Album = "Audio CD"; if (App.CdData.Count > 0) { Artist = App.CdData[string.Format("PERFORMER{0}", track)]; Title = App.CdData[string.Format("TITLE{0}", track)]; Album = App.CdData["TITLE0"]; TryDownloadingCover($"{Artist} - {Title}", new Uri("/TCPlayer;component/Style/Images/disk.png", UriKind.Relative)); } if (notify) { SetupMenu(true, Artist, Title); SongChangeNotification.DisplaySongChangeNotification("CD Track" + track, Artist, Title); //App.NotifyIcon.ShowNotification("CD Track" + track, Artist, Title); } SetInfoText(Artist, Title, Album, Year, GetFileSize(size)); }
/// <summary> /// Main entry point for media info update /// </summary> /// <param name="file">File</param> public void UpdateMediaInfo(string file) { FileName = file; var notify = Properties.Settings.Default.TrackChangeNotification; if (file.StartsWith("http://") || file.StartsWith("https://")) { Cover = new BitmapImage(new Uri("/TCPlayer;component/Style/Images/network.png", UriKind.Relative)); SetInfoText(Path.GetFileName(file), "Stream", "", DateTime.Now.Year.ToString(), "stream"); if (notify) { SongChangeNotification.DisplaySongChangeNotification(file); //App.NotifyIcon.ShowNotification(file); } return; } else if (file.StartsWith("cd://")) { string[] info = file.Replace("cd://", "").Split('/'); var drive = Convert.ToInt32(info[0]); var track = Convert.ToInt32(info[1]); var size = ManagedBass.Cd.BassCd.GetTrackLength(drive, track); UpdateCDFlags(track + 1, notify, size); return; } try { var fi = new FileInfo(file); var Size = GetFileSize(fi.Length); if (Helpers.IsMidi(file)) { Cover = new BitmapImage(new Uri("/TCPlayer;component/Style/Images/midi.png", UriKind.Relative)); SetInfoText("", fi.Name, "", Properties.Resources.SongData_Unknown, Size); if (notify) { SetupMenu(false); SongChangeNotification.DisplaySongChangeNotification(FileName); //App.NotifyIcon.ShowNotification(FileName); } return; } TagLib.File tags = TagLib.File.Create(file); var Year = tags.Tag.Year.ToString(); var Artist = ""; if (tags.Tag.Performers != null && tags.Tag.Performers.Length != 0) { Artist = tags.Tag.Performers[0]; } var Album = tags.Tag.Album; var Title = tags.Tag.Title; if (tags.Tag.Pictures.Length > 0) { var picture = tags.Tag.Pictures[0].Data; MemoryStream ms = new MemoryStream(picture.Data); BitmapImage ret = new BitmapImage(); ret.BeginInit(); ret.StreamSource = ms; ret.DecodePixelWidth = 200; ret.CacheOption = BitmapCacheOption.OnLoad; ret.EndInit(); ms.Close(); Cover = ret; } else { var query = $"{Artist} - {Title}"; if (!string.IsNullOrEmpty(query)) { TryDownloadingCover(query, new Uri("/TCPlayer;component/Style/Images/unknown.png", UriKind.Relative)); } } if (notify && _fullscreen.Visibility != Visibility.Visible) { SetupMenu(true, Artist, Title); SongChangeNotification.DisplaySongChangeNotification(FileName, Artist, Title); //App.NotifyIcon.ShowNotification(FileName, Artist, Title); } SetInfoText(Artist, Title, Album, Year, Size); if (_fullscreen.Visibility == Visibility.Visible) { _fullscreen.UpdateMetaData(InfoText.Text, Cover); } } catch (Exception) { Reset(); } }