public void ReceiveNotification(string sourceFileUrl, NotificationType type)
        {
            if (mediaChannel != null)
            {
                switch (type)
                {
                case NotificationType.PlayStateChanged:

                    //Play and pause the chromecast from the MB player
                    if (mediaChannel.Status != null)
                    {
                        switch (mbApiInterface.Player_GetPlayState())
                        {
                        case PlayState.Paused:
                            mediaChannel.PauseAsync().WaitWithoutException();
                            break;

                        case PlayState.Playing:
                            mediaChannel.PlayAsync().WaitWithoutException();
                            break;
                        }
                    }

                    break;

                case NotificationType.NowPlayingListChanged:
                    //natural = false;
                    //progressTimer.Enabled = false;
                    break;

                case NotificationType.PluginStartup:
                    break;

                case NotificationType.VolumeLevelChanged:
                    break;

                case NotificationType.TrackChanged:

                    if (!PrerequisitesMet())
                    {
                        return;
                    }

                    fileDeletionTimer.Enabled = false;
                    fileDeletionTimer.Enabled = true;

                    CalculateHash(mbApiInterface.NowPlaying_GetFileUrl(), "current").WaitWithoutException();

                    var info = CopySong(sourceFileUrl, songHash.Current).WaitAndUnwrapException();
                    _ = LoadSong(info.Item1, info.Item2);

                    break;
                }
            }
        }
 public void CreateFileHash()
 {
     using (var md5 = MD5.Create())
     {
         using (var stream = File.OpenRead(mbApiInterface.NowPlaying_GetFileUrl()))
         {
             var temp = md5.ComputeHash(stream);
             _fileHash = BitConverter.ToString(temp).Replace("-", "").ToLowerInvariant();
         }
     }
 }
예제 #3
0
        private void SetDisplayValues()
        {
            displayUpdater.ClearAll();
            displayUpdater.Type = MediaPlaybackType.Music;
            SetArtworkThumbnail(null);
            string url = mbApiInterface.NowPlaying_GetFileUrl();

            if (url != null)
            {
                musicProperties.AlbumArtist = mbApiInterface.NowPlaying_GetFileTag(MetaDataType.AlbumArtist);
                musicProperties.AlbumTitle  = mbApiInterface.NowPlaying_GetFileTag(MetaDataType.Album);
                uint value;
                if (UInt32.TryParse(mbApiInterface.NowPlaying_GetFileTag(MetaDataType.TrackCount), out value))
                {
                    musicProperties.AlbumTrackCount = value;
                }
                musicProperties.Artist = mbApiInterface.NowPlaying_GetFileTag(MetaDataType.Artist);
                musicProperties.Title  = mbApiInterface.NowPlaying_GetFileTag(MetaDataType.TrackTitle);
                if (string.IsNullOrEmpty(musicProperties.Title))
                {
                    musicProperties.Title = url.Substring(url.LastIndexOfAny(new char[] { '/', '\\' }) + 1);
                }
                if (UInt32.TryParse(mbApiInterface.NowPlaying_GetFileTag(MetaDataType.TrackNo), out value))
                {
                    musicProperties.TrackNumber = value;
                }
                //musicProperties.Genres = mbApiInterface.NowPlaying_GetFileTag(MetaDataType.Genres).Split(new string[] {"; "}, StringSplitOptions.RemoveEmptyEntries);
                PictureLocations pictureLocations;
                string           pictureUrl;
                byte[]           imageData;
                mbApiInterface.Library_GetArtworkEx(url, 0, true, out pictureLocations, out pictureUrl, out imageData);
                SetArtworkThumbnail(imageData);
            }
            displayUpdater.Update();
        }
        public void changeRating(float number)
        {
            String url = mbApiInterface_.NowPlaying_GetFileUrl();

            mbApiInterface_.Library_SetFileTag(url, MetaDataType.Rating, number.ToString());

            mbApiInterface_.Library_CommitTagsToFile(url);
            mbApiInterface_.MB_RefreshPanels();
        }
예제 #5
0
 // receive event notifications from MusicBee
 // you need to set about.ReceiveNotificationFlags = PlayerEvents to receive all notifications, and not just the startup event
 public void ReceiveNotification(string sourceFileUrl, NotificationType type)
 {
     if (type == NotificationType.PlayCountersChanged)
     {
         string file = _mbApiInterface.NowPlaying_GetFileUrl();
         if (file.Length > 0)
         {
             UpdateAutoRating(file);
         }
     }
 }
예제 #6
0
        // return lyrics for the requested artist/title from the requested provider
        // only required if PluginType = LyricsRetrieval
        // return null if no lyrics are found
        public string RetrieveLyrics(string sourceFileUrl, string artist, string trackTitle, string album, bool synchronisedPreferred, string provider)
        {
            if (!provider.Contains("LocalLyricsLoader"))
            {
                return(null);
            }
            if (sourceFileUrl == "")
            {
                sourceFileUrl = mbApiInterface.NowPlaying_GetFileUrl();
            }
            ;
            var loader = LoaderManager.GetLyricsLoader(provider.Replace("(LocalLyricsLoader)", ""));
            var lyrics = loader.RetrieveLyrics(sourceFileUrl, artist, trackTitle, album, synchronisedPreferred, provider);

            return(lyrics);
        }
예제 #7
0
        /// <inheritdoc/>
        public NowPlayingTrack GetPlayingTrackInfoLegacy()
        {
            var url   = _api.NowPlaying_GetFileUrl().Cleanup();
            var title = _api.NowPlaying_GetFileTag(MetaDataType.TrackTitle).Cleanup();

            var nowPlayingTrack = new NowPlayingTrack
            {
                Artist = _api.NowPlaying_GetFileTag(MetaDataType.Artist).Cleanup(),
                Album  = _api.NowPlaying_GetFileTag(MetaDataType.Album).Cleanup(),
                Year   = _api.NowPlaying_GetFileTag(MetaDataType.Year).Cleanup(),
            };

            nowPlayingTrack.SetTitle(title, url);
            return(nowPlayingTrack);
        }
예제 #8
0
        private void SetDisplayValues()
        {
            // displayUpdater.ClearAll();
            if (displayUpdater.Type != MediaPlaybackType.Music)
            {
                displayUpdater.Type = MediaPlaybackType.Music;
            }
            // SetArtworkThumbnail(null);
            var url = mbApiInterface.NowPlaying_GetFileUrl();

            if (url != null)
            {
                musicProperties.AlbumArtist = mbApiInterface.NowPlaying_GetFileTag(MetaDataType.AlbumArtist);
                musicProperties.AlbumTitle  = mbApiInterface.NowPlaying_GetFileTag(MetaDataType.Album);

                if (TryParse(mbApiInterface.NowPlaying_GetFileTag(MetaDataType.TrackCount), out var value))
                {
                    musicProperties.AlbumTrackCount = value;
                }

                musicProperties.Artist = mbApiInterface.NowPlaying_GetFileTag(MetaDataType.MultiArtist);
                musicProperties.Title  = mbApiInterface.NowPlaying_GetFileTag(MetaDataType.TrackTitle);

                if (string.IsNullOrEmpty(musicProperties.Title))
                {
                    musicProperties.Title = url.Substring(url.LastIndexOfAny(new[] { '/', '\\' }) + 1);
                }

                if (TryParse(mbApiInterface.NowPlaying_GetFileTag(MetaDataType.TrackNo), out value))
                {
                    musicProperties.TrackNumber = value;
                }
                // musicProperties.Genres = mbApiInterface.NowPlaying_GetFileTag(MetaDataType.Genres).Split(new string[] {"; "}, StringSplitOptions.RemoveEmptyEntries);
                mbApiInterface.Library_GetArtworkEx(url, 0, true, out _, out _, out var imageData);
                SetArtworkThumbnail(imageData);
            }
            else
            {
                SetArtworkThumbnail(null);
            }

            displayUpdater.Update();
        }
예제 #9
0
        public Dictionary <string, string> GenerateMetaDataDictionary(string fileUrl = null)
        {
            var ret = new Dictionary <string, string>(Enum.GetNames(typeof(MetaDataType)).Length + Enum.GetNames(typeof(FilePropertyType)).Length);

            foreach (MetaDataType elem in Enum.GetValues(typeof(MetaDataType)))
            {
                ret.Add(elem.ToString(), string.IsNullOrWhiteSpace(fileUrl) ? _mbApiInterface.NowPlaying_GetFileTag(elem) : _mbApiInterface.Library_GetFileTag(fileUrl, elem));
            }
            foreach (FilePropertyType elem in Enum.GetValues(typeof(FilePropertyType)))
            {
                ret.Add(elem.ToString(), string.IsNullOrWhiteSpace(fileUrl) ? _mbApiInterface.NowPlaying_GetFileProperty(elem) : _mbApiInterface.Library_GetFileProperty(fileUrl, elem));
            }
            ret.Add("Extension", Path.GetExtension(string.IsNullOrWhiteSpace(fileUrl) ? _mbApiInterface.NowPlaying_GetFileUrl() : fileUrl).TrimStart('.').ToUpper());
            ret.Add("PlayState", _mbApiInterface.Player_GetPlayState().ToString());
            ret.Add("Volume", Convert.ToInt32(_mbApiInterface.Player_GetVolume() * 100.0f).ToString());

            return(ret);
        }