Example #1
0
        public async Task <GetTracksResponse> GetTracks(LastfmUser user, CancellationToken cancellationToken, int page = 0, int limit = 200)
        {
            var request = new GetTracksRequest
            {
                User   = user.Username,
                ApiKey = Strings.Keys.LastfmApiKey,
                Method = Strings.Methods.GetTracks,
                Limit  = limit,
                Page   = page
            };

            return(await Get <GetTracksRequest, GetTracksResponse>(request, cancellationToken));
        }
Example #2
0
        public async Task <GetTracksResponse> GetTracks(LastfmUser user, MusicArtist artist, CancellationToken cancellationToken)
        {
            var request = new GetTracksRequest
            {
                User   = user.Username,
                Artist = artist.Name,
                ApiKey = Strings.Keys.LastfmApiKey,
                Method = Strings.Methods.GetTracks,
                Limit  = 1000
            };

            return(await Get <GetTracksRequest, GetTracksResponse>(request, cancellationToken));
        }
Example #3
0
        public GetTracksResult GetTracks(GetTracksRequest request)
        {
            try
            {
                int forPlaylistId;
                if (string.IsNullOrEmpty(request.ForPlaylistId))
                {
                    // no playlist filtering
                    forPlaylistId = Domain.Objects.Playlist.ALL_ID;
                }
                else
                {
                    forPlaylistId = int.Parse(request.ForPlaylistId);
                }

                List <AlbumOrTrackItem> albumOrTracks;
                int totalCount;
                using (DAL.DALManager mgr = new DAL.DALManager(settings.Value.DatabasePath))
                {
                    albumOrTracks = mgr.FindTracks(request.Filter, forPlaylistId, int.Parse(request.AlbumId), request.Offset, request.Size);
                    totalCount    = mgr.FindTracksCount(request.Filter, forPlaylistId, int.Parse(request.AlbumId));
                }

                // set the cover urls
                foreach (var item in albumOrTracks)
                {
                    item.ArtImage = item.CoverId > 0 ? Url.Action("GetCover", new { id = item.CoverId }) : "";
                }

                return(new GetTracksResult()
                {
                    Success = true,
                    Items = albumOrTracks.ToArray(),
                    TotalCount = totalCount
                });
            }
            catch (Exception ex)
            {
                return(GetErrorResultFromException <GetTracksResult>(ex));
            }
        }
        public string GetTracks([FromBody] GetTracksRequest request)
        {
            TracksResponse tracksResponse = new TracksResponse();
            List <Track>   tracks         = new List <Track>();
            WebClient      web            = new WebClient();

            web.Headers.Set("Authorization", $"Bearer {request.authToken}");
            JObject spotifyResponse = JObject.Parse(web.DownloadString(request.playlistUrl));
            JArray  items           = spotifyResponse["items"].ToObject <JArray>();

            foreach (JObject item in items)
            {
                Track track = new Track();
                track.TrackName  = item["track"]["name"].ToString();
                track.ArtistName = item["track"]["artists"][0]["name"].ToString();
                tracks.Add(track);
            }
            tracksResponse.nextUrl     = spotifyResponse["next"].ToString();
            tracksResponse.previousUrl = spotifyResponse["previous"].ToString();
            tracksResponse.Tracks      = tracks;
            return(JsonConvert.SerializeObject(tracksResponse));
        }
        public async Task<GetTracksResponse> GetTracks(LastfmUser user, CancellationToken cancellationToken, int page = 0, int limit = 200)
        {
            var request = new GetTracksRequest
            {
                User   = user.Username,
                ApiKey = Strings.Keys.LastfmApiKey,
                Method = Strings.Methods.GetTracks,
                Limit  = limit,
                Page   = page
            };

            return await Get<GetTracksRequest, GetTracksResponse>(request, cancellationToken);
        }
        public async Task<GetTracksResponse> GetTracks(LastfmUser user, MusicArtist artist, CancellationToken cancellationToken)
        {
            var request = new GetTracksRequest
            {
                User   = user.Username,
                Artist = artist.Name,
                ApiKey = Strings.Keys.LastfmApiKey,
                Method = Strings.Methods.GetTracks,
                Limit  = 1000
            };

            return await Get<GetTracksRequest, GetTracksResponse>(request, cancellationToken);
        }