예제 #1
0
        /// <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));
        }
예제 #2
0
        /// <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();
            }
        }