public void SendProgressUpdate(Song song, QueryTrackProgress progress)
        {
            foreach (var obj in _pcqList)
            {
                var prog = new QueryProgress()
                {
                    Song = new QuerySong()
                    {
                        Artist = song.Artist,
                        Album  = song.Album,
                        Title  = song.SongTitle,
                        Meta   = song.GetMetaObject(obj)
                    },
                    Progress = progress
                };

                obj.ProgressUpdateReciever(prog);
            }
        }
        public void SendProgressUpdate(Song song, QueryTrackProgress progress)
        {
            foreach (var obj in _pcqList)
            {
                var prog = new QueryProgress()
                {
                    Song = new QuerySong()
                    {
                        Artist = song.Artist,
                        Album = song.Album,
                        Title = song.SongTitle,
                        Meta = song.GetMetaObject(obj)
                    },
                    Progress = progress
                };

                obj.ProgressUpdateReciever(prog);
            }
        }
 private Track QueryProgressToTrack(QueryProgress prog)
 {
     var track = new Track
     {
         TrackName = prog.Song.Title,
         AlbumName = prog.Song.Album,
         ArtistName = prog.Song.Artist,
         Duration = prog.Progress.TotalTime,
         WhenStartedPlaying = DateTime.Now.Subtract(prog.Progress.ElapsedTime),
     };
     return track;
 }
        public void ProgressUpdateReciever(QueryProgress progress)
        {
            if (!IsEnabled || !_scrobbler.BaseScrobbler.HasSession) return;

            try
            {
                if (progress.Progress.Percent < PercentNowPlaying && !_doneNowPlaying)
                {
                    _doneScrobble = false;
                    Log.O("LastFM, Now Playing: {0} - {1}", progress.Song.Artist, progress.Song.Title);
                    _currentSong = progress.Song;
                    _scrobbler.NowPlaying(QueryProgressToTrack(progress));
                    _doneNowPlaying = true;
                }

                //A track should only be scrobbled when the following conditions have been met:
                //The track must be longer than 30 seconds.
                //And the track has been played for at least half its duration,
                //or for 4 minutes (whichever occurs earlier).
                //See http://www.last.fm/api/scrobbling
                //This is enforced by LPFM so might as well enforce it here to avoid issues
                if (progress.Progress.TotalTime.TotalSeconds >= MinTrackLength &&
                    (progress.Progress.ElapsedTime.TotalSeconds >= SecondsBeforeScrobble || progress.Progress.Percent > PercentBeforeScrobble) &&
                    !_doneScrobble)
                {
                    _doneNowPlaying = false;
                    Log.O("LastFM, Scrobbling: {0} - {1}", progress.Song.Artist, progress.Song.Title);
                    _scrobbler.Scrobble(QueryProgressToTrack(progress));
                    _doneScrobble = true;
                }

                if (_scrobbler.QueuedCount > 0) ProcessScrobbles();
            }
            catch (Exception ex)
            {
                Log.O("Last.FM Error!: " + ex.ToString());
            }
        }
Beispiel #5
0
 public void ProgressUpdateReciever(QueryProgress progress)
 {
 }