Ejemplo n.º 1
0
        public void UpdateNowPlayingToLastFM(Domain.Objects.Track info)
        {
            Console.WriteLine("Updating Now playing on last FM");
            if (System.Diagnostics.Debugger.IsAttached)
            {
                return;
            }

            Task.Factory.StartNew(() =>
            {
                lock (scrobbler) // make sure no requests are run at the same time
                {
                    try
                    {
                        var response = scrobbler.NowPlaying(GetLastFmTrackFromAudioInfo(info));
                        if (response.ErrorCode > 0)
                        {
                            Console.Error.WriteLine("Unable to update now playing track " + info.Artists.FirstOrDefault() + " - " + info.Title + " to Last FM" + ": " + response.Exception.Message);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.Error.WriteLine("Unable to update now playing track " + info.Artists.FirstOrDefault() + " - " + info.Title + " to Last FM" + ": " + ex.Message);
                    }
                }
            });
        }
Ejemplo n.º 2
0
        public LinkLibraryInfo RunAfterPlay(string title,
                                            string album,
                                            string artist,
                                            int trackNo,
                                            int duration,
                                            bool isLinkLibraryEnable
                                            )
        {
            LinkLibraryInfo lastFmInfo = new LinkLibraryInfo();

            if (_scrobbler == null)
            {
                return(lastFmInfo);
            }

            CurrentTrack = new Track
            {
                TrackName   = title,
                AlbumName   = album,
                ArtistName  = artist,
                TrackNumber = trackNo,
                Duration    = new TimeSpan(0, 0, 0, duration)
            };
            CurrentTrack.WhenStartedPlaying = DateTime.Now;

            _scrobbler.NowPlaying(CurrentTrack);

            if (isLinkLibraryEnable)
            {
                // トラック情報取得
                var trackInfo = _scrobbler.GetTrackInfo(CurrentTrack, false);

                if (trackInfo != null)
                {
                    lastFmInfo.Listener     = trackInfo.listeners;
                    lastFmInfo.AllPlaycount = trackInfo.playcount;
                    lastFmInfo.Url          = trackInfo.url;
                }

                trackInfo = _scrobbler.GetLibraryTrack(CurrentTrack, true);

                if (trackInfo != null)
                {
                    lastFmInfo.UserPlaycount = trackInfo.playcount;
                }
                else
                {
                    lastFmInfo.UserPlaycount = -1;
                }

                lastFmInfo.SimilarArtists = _scrobbler.GetSimilarArtist(CurrentTrack);
            }

            return(lastFmInfo);
        }
Ejemplo n.º 3
0
        public void NowPlaying_SessionKey_NoException()
        {
            // Arrange
            var scrobbler = new Scrobbler(ApiKey, ApiSecret, SessionKey);
            var track     = new Track
            {
                TrackName   = "Spying Glass",
                AlbumArtist = "Massive Attack",
                ArtistName  = "Massive Attack",
                AlbumName   = "Protection",
                Duration    = new TimeSpan(0, 0, 5, 21),
                TrackNumber = 5,
            };

            // Act
            var response = scrobbler.NowPlaying(track);
        }
        public void NowPlaying_SessionKey_NoException()
        {
            // Arrange
            var scrobbler = new Scrobbler(ApiKey, ApiSecret, SessionKey);
            var track = new Track
            {
                TrackName = "Spying Glass",
                AlbumArtist = "Massive Attack",
                ArtistName = "Massive Attack",
                AlbumName = "Protection",
                Duration = new TimeSpan(0, 0, 5, 21),
                TrackNumber = 5,
            };

            // Act
            var response = scrobbler.NowPlaying(track);
        }
Ejemplo n.º 5
0
        /*
         * public static void SetRegistrySetting(string valueName, string value) {
         *  if (string.IsNullOrEmpty(valueName)) throw new ArgumentException("valueName cannot be empty or null", "valueName");
         *  valueName = valueName.Trim();
         *
         *  Registry.SetValue(LpfmRegistryNameSpace, valueName, value);
         * }*/

        public void Send(int type, string title, string artist, int duration)
        {
            try {
                if (type == 0)   // NowPlaying
                // Send
                {
                    CurrentTrack.TrackName          = title;
                    CurrentTrack.ArtistName         = artist;
                    CurrentTrack.WhenStartedPlaying = DateTime.Now;
                    CurrentTrack.Duration           = new TimeSpan(0, 0, duration);

                    _scrobbler.NowPlaying(CurrentTrack);
                }
                else if (type == 1)     // NowPlaying
                {
                    _scrobbler.Scrobble(CurrentTrack);
                }
            }
            catch (Exception exception) {
                Console.WriteLine(exception.Message);
            }
        }