Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        public QueuedTrack Execute(QueuedTrack trackToQueue)
        {
            logger.Debug("HistoryRandomizer, {0}", trackToQueue.ToLoggerFriendlyTrackName());

            var nextTrack = queuedTrackDataService.GetAll().Random().FirstOrDefault();

            if (nextTrack != null)
            {
                return nextTrack;
            }

            return trackToQueue;
        }
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 6
0
 public QueuedTrack Execute(QueuedTrack trackToQueue)
 {
     logger.Debug("PassThroughRandomizer, {0}", trackToQueue.ToLoggerFriendlyTrackName());
     return trackToQueue;
 }