public async void PlaybackEnded(PlaybackEndedEvent data) { await Task.Run(() => ProccesPlaybackEnded(data)); }
async Task ProccesPlaybackEnded(PlaybackEndedEvent data) { try { if (data.Position < 3) { return; } var song = Database.Main.GetObject <Song, TempSong>(data.SongId); if (song == null) { return; } if (!string.IsNullOrWhiteSpace(song?.Id)) { song.LastPlayed = (long)(DateTime.Now - new System.DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds; song.PlayedCount++; Database.Main.Update(song); } var track = Database.Main.GetObject <Track, TempTrack>(data.TrackId); if (track == null) { track = await MusicManager.Shared.GetTrack(data.SongId); if (track == null) { LogManager.Shared.Report(new Exception("Null track during Record Track. This should not happen!!!")); return; } data.TrackId = track.Id; } track.PlayCount++; Database.Main.Update(track); data.Duration = track.Duration; data.ServiceType = track.ServiceType; LogManager.Shared.LogPlay(song); Task <bool> lastFmTask = null; Task <bool> recordPlayTask; List <Task <bool> > tasks = new List <Task <bool> >(); if (Settings.LastFmEnabled) { tasks.Add(lastFmTask = SubmitScrobbleToLastFm(song, data.Position, data.Duration)); } if (Settings.TwitterEnabled) { SubmitScrobbleToTwitter(song); } tasks.Add(recordPlayTask = MusicManager.Shared.RecordPlayback(data)); await Task.WhenAll(tasks); data.Scrobbled = lastFmTask?.Result ?? false; data.Submitted = recordPlayTask?.Result ?? false; if (!data.Submitted || (!data.Scrobbled) && Settings.LastFmEnabled) { data.Save(); } } catch (Exception ex) { Console.WriteLine(ex); } }
public override async Task <bool> RecordPlayack(PlaybackEndedEvent data) { //App.ShowNotImplmented(); return(true); }