示例#1
0
        // TODO: prevent cycles
        private async Task <List <Artist> > DiscoveryChainArtistLoop(string artist, int iterations)
        {
            Debug.Assert(iterations <= 10);

            var discovered = new List <Artist>();

            string originalArtistName = artist;

            for (int i = 0; i < iterations; i++)
            {
                XDocument     xml     = await new LastFmClient(this.config[Common.Constants.ConfigKey.LastFmApiKey]).GetSimilarArtistsAsync(originalArtistName);
                List <Artist> similar = LastFmXmlParser.GetSimilarArtistNames(xml, out originalArtistName, true, 1);

                if (i == 0)
                {
                    discovered.Add(new Artist(originalArtistName));
                }

                if (similar.Any())
                {
                    discovered.Add(similar.First());
                    originalArtistName = similar.First().Name;
                }
                else
                {
                    break;
                }
            }

            return(discovered);
        }
示例#2
0
        // TODO: prevent cycles
        private async Task <List <Track> > DiscoveryChainTrackLoop(string artist, string track, int iterations)
        {
            Debug.Assert(iterations <= 10);

            var discovered        = new List <Track>();
            var originalTrackName = new Track(artist, track);

            for (int i = 0; i < iterations; i++)
            {
                XDocument    xml     = await new LastFmClient(this.config[Common.Constants.ConfigKey.LastFmApiKey]).GetSimilarTracksAsync(originalTrackName.Artist, originalTrackName.TrackName);
                List <Track> similar = LastFmXmlParser.GetSimilarTracks(xml, out originalTrackName, true, 1);

                if (i == 0)
                {
                    discovered.Add(originalTrackName);
                }

                if (similar.Any())
                {
                    discovered.Add(similar.First());
                }
                else
                {
                    break;
                }
            }

            return(discovered.ToList());
        }
示例#3
0
            public static string CreateHypedTracksResponse(XDocument xml, bool isRandomized = false, int limit = 25)
            {
                List <Track> trackNames = LastFmXmlParser.GetTracks(xml, isRandomized, limit);

                var response = new StringBuilder();

                response
                .Append("Hyped tracks:\r\n")
                .Append(String.Join("\r\n", trackNames));

                return(response.ToString());
            }
示例#4
0
            public static string CreateTopAlbumsResponse(XDocument xml, string artist = null, bool isRandomized = false, int limit = 25)
            {
                List <Album> albumNames = LastFmXmlParser.GetAlbums(xml, isRandomized, limit);

                var response = new StringBuilder();

                response
                .Append("Top albums")
                .Append(String.IsNullOrEmpty(artist) ? String.Empty : " by " + artist)
                .Append(":\r\n")
                .Append(String.Join("\r\n", albumNames));

                return(response.ToString());
            }
示例#5
0
            public static string CreateSimilarTracksResponse(XDocument xml, bool isRandomized = false, int limit = 25)
            {
                Track        originalTrack;
                List <Track> similarTrackNames = LastFmXmlParser.GetSimilarTracks(xml, out originalTrack, isRandomized, limit);

                var response = new StringBuilder();

                response
                .Append("Similar songs to ")
                .Append(originalTrack)
                .Append(":\r\n")
                .Append(String.Join("\r\n", similarTrackNames));

                return(response.ToString());
            }
示例#6
0
            public static string CreateSimilarArtistsResponse(XDocument xml, bool isRandomized = true, int limit = 10)
            {
                string        originalArtistName;
                List <Artist> similarArtists = LastFmXmlParser.GetSimilarArtistNames(xml, out originalArtistName, isRandomized, limit);

                var response = new StringBuilder();

                response
                .Append("Similar artists to ")
                .Append(originalArtistName)
                .Append(": ")
                .Append(String.Join(", ", similarArtists))
                .Append(".");

                return(response.ToString());
            }