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()); } }
public void ProgressUpdateReciever(QueryProgress progress) { }