getInfo method

Future<Album> getInfo({
  1. String? artist,
  2. String? album,
  3. String? mbid,
  4. bool autoCorrect = false,
  5. String? username,
  6. Language language = Language.en,
})

Get the metadata and tracklist for an album on Last.fm using the album name or a musicbrainz id.

https://www.last.fm/api/show/album.getInfo

Implementation

Future<Album> getInfo({
  String? artist,
  String? album,
  String? mbid,
  bool autoCorrect = false,
  String? username,
  Language language = Language.en,
}) async {
  if ((album == null || artist == null) && mbid == null) {
    return Future.error(
      ScrobblenautException(
        description:
            'At least mbid is required. '
            'Can be used also album and artist.',
      ),
    );
  }

  final parameters = {
    'artist': artist,
    'album': album,
    'mbid': mbid,
    'autocorrect': (autoCorrect ? 1 : 0),
    'username': username,
    'lang': language.code,
  };

  final request = Request(
    api: _api,
    method: 'album.getInfo',
    parameters: parameters,
  );

  final response = await request.send(mode: RequestMode.GET);

  // This operation is necessary because the tracks have different duration
  // from [track.getInfo].
  var albumInfo = Album.fromJson(response['album']);
  albumInfo.tracks?.forEach((Track track) {
    track.duration = track.duration != null ? track.duration! * 1000 : null;
  });

  return albumInfo;
}