public void PlayTrack(QueuedTrack trackToPlay) { logger.Trace("MusicService.PlayTrack"); logger.Debug("Attempting to play track {0}", trackToPlay.ToLoggerFriendlyTrackName()); //Reset the paused data lastPaused = null; totalPausedDuration = 0; currentProvider = musicProviderFactory.GetMusicProviderByIdentifier(trackToPlay.Track.MusicProvider.Identifier); //Either play the original queued track or the Big Rick if tthe track is rickrolled var rickRollTrack = rickRollService.RickRoll(trackToPlay.Track, trackToPlay.User); currentProvider.PlayTrack(rickRollTrack); trackToPlay.StartedPlayingDateTime = nowHelper.Now; queuedTrackDataService.InsertOrUpdate(trackToPlay); int total; var recentlyPlayed = queuedTrackDataService.GetAll() .GetQueuedTracksByUser(null, 1, 5, out total) .Select(r => alreadyQueuedHelper.ResetAlreadyQueued(r, trackToPlay.User)).ToList(); callbackClient.TrackHistoryChanged(new PagedResult<QueuedTrack> { HasMorePages = false, PageData = recentlyPlayed }); currentlyPlayingTrack = trackToPlay; callbackClient.PlayingTrackChanged(CurrentlyPlayingTrack); logger.Debug("Playing track {0} queued by {1}", trackToPlay.ToLoggerFriendlyTrackName(), trackToPlay.User); }
public QueuedTrack Execute(QueuedTrack trackToQueue) { if (trackToQueue.Track.MusicProvider == null || trackToQueue.Track.MusicProvider.Identifier != "sp") return trackToQueue; if (DateTime.Now.Second%settings.RandomizerRatio == 0) { return trackToQueue; } musicProvider = musicProviderFactory.GetMusicProviderByIdentifier(trackToQueue.Track.MusicProvider.Identifier); var album = trackToQueue.Track.Album; if (album == null) return trackToQueue; var tracks = musicProvider.BrowseAlbum(album.Link, trackToQueue.User); if (tracks.Tracks != null && tracks.Tracks.Any()) { var track = tracks.Tracks.Random().FirstOrDefault(); if (track != null) { logger.Debug("Off Same Album Randomizer, converting track {0}", trackToQueue.ToLoggerFriendlyTrackName()); trackToQueue.Track = track; trackToQueue.Track.Album = album; trackToQueue.User = "******"; trackToQueue.Id = DataObject.GenerateId(); //if you don't do this then the autoplayed song will update over the user requested song } } return trackToQueue; }
public QueuedTrack Execute(QueuedTrack trackToQueue) { logger.Debug("HistoryRandomizer, {0}", trackToQueue.ToLoggerFriendlyTrackName()); var nextTrack = queuedTrackDataService.GetAll().Random().FirstOrDefault(); if (nextTrack != null) { return nextTrack; } return trackToQueue; }
public QueuedTrack Execute(QueuedTrack trackToQueue) { if (DateTime.Now.Second%settings.RandomizerRatio == 0) { return trackToQueue; } if (trackToQueue.Track.MusicProvider == null || trackToQueue.Track.MusicProvider.Identifier != "sp") return trackToQueue; musicProvider = musicProviderFactory.GetMusicProviderByIdentifier(trackToQueue.Track.MusicProvider.Identifier); var browse = musicProvider.BrowseArtist(trackToQueue.Track.Artists.First().Link, false); var artist = browse.Profile.SimilarArtists.Random().FirstOrDefault(); if (artist == null) return trackToQueue; var randomAlbum = musicProvider.BrowseArtist(artist.Link, false).Albums.Random().Take(1).ToList(); if (randomAlbum.Any()) { var albumLink = randomAlbum.Random().First(); var tracks = musicProvider.BrowseAlbum(albumLink.Link, trackToQueue.User); if (tracks.Tracks != null && tracks.Tracks.Any()) { var track = tracks.Tracks.Random().FirstOrDefault(); if (track != null) { logger.Debug("Similar Artist Randomizer, converting track {0}", trackToQueue.ToLoggerFriendlyTrackName()); trackToQueue.Track = track; trackToQueue.Track.Album = albumLink; trackToQueue.User = "******"; trackToQueue.Id = DataObject.GenerateId(); //if you don't do this then the autoplayed song will update over the user requested song } } } return trackToQueue; }
public string QueueTrack(QueuedTrack trackToQueue) { if (trackToQueue == null) return "Track could not be found."; var errors = queueRuleHelper.CannotQueueTrack(trackToQueue.Track, trackToQueue.User).ToList(); if (errors.Any(e => e != string.Empty)) return errors.FirstOrDefault(e => e != string.Empty); trackToQueue.Id = DataObject.GenerateId(); queueManager.Enqueue(trackToQueue); //for some reason no track is playing then dequeue and play this track if (musicPlayer.CurrentlyPlayingTrack == null) PlayNextTrack(); logger.Debug("Track {0} queued by {1}", trackToQueue.ToLoggerFriendlyTrackName(), trackToQueue.User); callbackClient.QueueChanged(GetQueue()); return string.Empty; }
public QueuedTrack Execute(QueuedTrack trackToQueue) { logger.Debug("PassThroughRandomizer, {0}", trackToQueue.ToLoggerFriendlyTrackName()); return trackToQueue; }