getRecentTracks method
Get a list of the recent tracks listened to by this user.
NOTE: the output list is already ordered by last listened first.
Implementation
Future<List<Track>?> getRecentTracks({
required String user,
int page = 1,
int limit = 50, // MAX 200
DateTime? fromDate,
DateTime? toDate,
bool extended = false,
}) async {
if (limit > 200) {
return Future.error(
ScrobblenautException(description: 'The max limit is 200'),
);
}
final parameters = {
'user': user,
'page': page,
'limit': limit,
'from': LastFMValueNormalizer.DateTimeToUnixTime(fromDate),
'to': LastFMValueNormalizer.DateTimeToUnixTime(toDate),
'extended': (extended ? 1 : 0),
};
final request = Request(
api: _api,
method: 'user.getRecentTracks',
parameters: parameters,
);
final response = await request.send(mode: RequestMode.GET);
final recentTracks = response['recenttracks']['track'];
// View Issue in Github.
// https://github.com/Nebulino/Scrobblenaut/issues/24
if (recentTracks == null) {
return null;
} else {
return parseLastFMList<Track>(recentTracks, (track) {
if (track['artist'] is Map) {
track['artist']['name'] ??=
isValidParsableStringField(track['artist']['#text'])
? track['artist']['#text']
: null;
}
return Track.fromJson(track);
});
}
}