mirror of
https://github.com/Sarsoo/IF.Lastfm.git
synced 2024-10-16 23:13:07 +01:00
Added tag.getTopTracks
This commit is contained in:
parent
e515eb2be1
commit
bdec7c9a35
@ -12,12 +12,12 @@
|
||||
|
||||
namespace IF.Lastfm.Core.Api.Commands.Tag
|
||||
{
|
||||
[ApiMethodName("tag.getTopArtists")]
|
||||
internal class GetTopArtistsCommand: GetAsyncCommandBase<PageResponse<LastArtist>>
|
||||
[ApiMethodName("tag.getTopTracks")]
|
||||
internal class GetTopTracksCommand: GetAsyncCommandBase<PageResponse<LastTrack>>
|
||||
{
|
||||
public string TagName { get; set; }
|
||||
|
||||
public GetTopArtistsCommand(ILastAuth auth, string tagName) : base(auth)
|
||||
public GetTopTracksCommand(ILastAuth auth, string tagName) : base(auth)
|
||||
{
|
||||
TagName = tagName;
|
||||
}
|
||||
@ -29,7 +29,7 @@ public override void SetParameters()
|
||||
DisableCaching();
|
||||
}
|
||||
|
||||
public async override Task<PageResponse<LastArtist>> HandleResponse(HttpResponseMessage response)
|
||||
public async override Task<PageResponse<LastTrack>> HandleResponse(HttpResponseMessage response)
|
||||
{
|
||||
var json = await response.Content.ReadAsStringAsync();
|
||||
|
||||
@ -37,14 +37,14 @@ public async override Task<PageResponse<LastArtist>> HandleResponse(HttpResponse
|
||||
if (LastFm.IsResponseValid(json, out status) && response.IsSuccessStatusCode)
|
||||
{
|
||||
var jtoken = JsonConvert.DeserializeObject<JToken>(json);
|
||||
var resultsToken = jtoken.SelectToken("topartists");
|
||||
var itemsToken = resultsToken.SelectToken("artist");
|
||||
var resultsToken = jtoken.SelectToken("toptracks");
|
||||
var itemsToken = resultsToken.SelectToken("track");
|
||||
|
||||
return PageResponse<LastArtist>.CreateSuccessResponse(itemsToken, resultsToken, LastArtist.ParseJToken, LastPageResultsType.Attr);
|
||||
return PageResponse<LastTrack>.CreateSuccessResponse(itemsToken, resultsToken, LastTrack.ParseJToken, LastPageResultsType.Attr);
|
||||
}
|
||||
else
|
||||
{
|
||||
return LastResponse.CreateErrorResponse<PageResponse<LastArtist>>(status);
|
||||
return LastResponse.CreateErrorResponse<PageResponse<LastTrack>>(status);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
51
src/IF.Lastfm.Core/Api/Commands/Tag/GetTopTracksCommand.cs
Normal file
51
src/IF.Lastfm.Core/Api/Commands/Tag/GetTopTracksCommand.cs
Normal file
@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using IF.Lastfm.Core.Api.Enums;
|
||||
using IF.Lastfm.Core.Api.Helpers;
|
||||
using IF.Lastfm.Core.Objects;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace IF.Lastfm.Core.Api.Commands.Tag
|
||||
{
|
||||
[ApiMethodName("tag.getTopArtists")]
|
||||
internal class GetTopArtistsCommand: GetAsyncCommandBase<PageResponse<LastArtist>>
|
||||
{
|
||||
public string TagName { get; set; }
|
||||
|
||||
public GetTopArtistsCommand(ILastAuth auth, string tagName) : base(auth)
|
||||
{
|
||||
TagName = tagName;
|
||||
}
|
||||
|
||||
public override void SetParameters()
|
||||
{
|
||||
Parameters.Add("tag", TagName);
|
||||
AddPagingParameters();
|
||||
DisableCaching();
|
||||
}
|
||||
|
||||
public async override Task<PageResponse<LastArtist>> HandleResponse(HttpResponseMessage response)
|
||||
{
|
||||
var json = await response.Content.ReadAsStringAsync();
|
||||
|
||||
LastResponseStatus status;
|
||||
if (LastFm.IsResponseValid(json, out status) && response.IsSuccessStatusCode)
|
||||
{
|
||||
var jtoken = JsonConvert.DeserializeObject<JToken>(json);
|
||||
var resultsToken = jtoken.SelectToken("topartists");
|
||||
var itemsToken = resultsToken.SelectToken("artist");
|
||||
|
||||
return PageResponse<LastArtist>.CreateSuccessResponse(itemsToken, resultsToken, LastArtist.ParseJToken, LastPageResultsType.Attr);
|
||||
}
|
||||
else
|
||||
{
|
||||
return LastResponse.CreateErrorResponse<PageResponse<LastArtist>>(status);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -73,6 +73,21 @@ public Task<PageResponse<LastArtist>> GetTopArtistsAsync(string tagName, int pag
|
||||
return command.ExecuteAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the top artists tagged by this tag, ordered by tag count.
|
||||
/// </summary>
|
||||
public Task<PageResponse<LastTrack>> GetTopTracksAsync(string tagName, int page = 1, int itemsPerPage = LastFm.DefaultPageLength)
|
||||
{
|
||||
var command = new GetTopTracksCommand(Auth, tagName)
|
||||
{
|
||||
HttpClient = HttpClient,
|
||||
Page = page,
|
||||
Count = itemsPerPage
|
||||
};
|
||||
|
||||
return command.ExecuteAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fetches the top global tags on Last.fm, sorted by popularity (number of times used).
|
||||
/// </summary>
|
||||
|
@ -68,6 +68,7 @@
|
||||
<Compile Include="Api\Commands\Tag\GetTopAlbumsCommand.cs" />
|
||||
<Compile Include="Api\Commands\Tag\GetTopArtistsCommand.cs" />
|
||||
<Compile Include="Api\Commands\Tag\GetTopTagsCommand.cs" />
|
||||
<Compile Include="Api\Commands\Tag\GetTopTracksCommand.cs" />
|
||||
<Compile Include="Api\Commands\Track\ScrobbleCommand.cs" />
|
||||
<Compile Include="Api\Commands\Track\UpdateNowPlayingCommand.cs" />
|
||||
<Compile Include="Api\Commands\UnauthenticatedPostAsyncCommandBase.cs" />
|
||||
|
Loading…
Reference in New Issue
Block a user