Skip to content

Commit

Permalink
Merge pull request #17 from Nebulino/tag_extension
Browse files Browse the repository at this point in the history
Add capability of applying TagMethods in Tag.
  • Loading branch information
Nebulino authored Apr 16, 2020
2 parents fb8718c + bd77c4e commit 5685028
Show file tree
Hide file tree
Showing 5 changed files with 151 additions and 1 deletion.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## 1.0.4
#### Add capability of applying TagMethods in Tag.

- Created new tag example.
- Changed *lang* in Methods into *language*
- Updated **CHANGELOG.md**.

## 1.0.3
#### Add capability of applying ArtistMethods in Artist.

Expand Down
69 changes: 69 additions & 0 deletions example/applied_methods_example/tag_methods_example.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/**
* Scrobblenaut - A deadly simple Last.FM API Wrapper for Dart.
* Copyright (c) 2020 Nebulino
*/

import 'package:scrobblenaut/lastfm.dart';
import 'package:scrobblenaut/scrobblenaut.dart';

import '../api_values.dart';

// Just an example of use.
void main() async {
print('####################################################################');

final lastFMAuth = await LastFM.authenticate(
apiKey: APIValues.API,
apiSecret: APIValues.secret,
username: APIValues.username,
password: APIValues.password,
sessionKey: APIValues.sessionKey,
);

final scrobblenaut = Scrobblenaut(lastFM: lastFMAuth);

final tagInstance = (await scrobblenaut.tag.getInfo(tag: 'anime'));

print('############################tag.getInfo#############################');

// tag.getInfo
final tagGetInfo = (await tagInstance.getInfo());
print('Tag Name: ${tagGetInfo.name} | Tag total: ${tagGetInfo.total}');

print('############################tag.getSimilar##########################');

// tag.getSimilar
(await tagInstance.getSimilar())?.forEach((Tag tag) {
print('Similar Tag Name: ${tag.name}');
});

print('##########################tag.getTopAlbums##########################');

// tag.getTopAlbums
(await tagInstance.getTopAlbums())?.forEach((Album album) {
print('Top Album Name: ${album.name}');
});

print('########################tag.getTopArtists###########################');

// tag.getTopArtists
(await tagInstance.getTopArtists())?.forEach((Artist artist) {
print('Top Artist Name: ${artist.name}');
});

print('########################tag.getTopTracks############################');

// tag.getTopTracks
(await tagInstance.getTopTracks())?.forEach((Track track) {
print('Top Track Name: ${track.name} | Top Track URL: ${track.url}');
});

print('#######################tag.getWeeklyChartList#######################');

// tag.getWeeklyChartList
(await tagInstance.getWeeklyChartList())?.forEach((Chart chart) {
print('Chart FromDate: ${chart.fromDate} | Chart ToDate: ${chart.toDate}');
});

print('####################################################################');
}
1 change: 1 addition & 0 deletions lib/scrobblenaut.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ export 'package:scrobblenaut/src/scrobblenaut.dart';
// Extensions.
export 'package:scrobblenaut/src/extensions/album_extension.dart';
export 'package:scrobblenaut/src/extensions/artist_extension.dart';
export 'package:scrobblenaut/src/extensions/tag_extension.dart';
73 changes: 73 additions & 0 deletions lib/src/extensions/tag_extension.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/**
* Scrobblenaut - A deadly simple Last.FM API Wrapper for Dart.
* Copyright (c) 2020 Nebulino
*/

import 'package:scrobblenaut/lastfm.dart';
import 'package:scrobblenaut/lastfm_methods.dart';
import 'package:scrobblenaut/scrobblenaut.dart';

/// Give the ability of applying [TagMethods] on [Tag].
extension TagExtension on Tag {
TagMethods get _tagMethods => Scrobblenaut.instance.tag;

/// [TagMethods.getInfo]
Future<Tag> getInfo({
Language language = Language.en,
}) async {
return await _tagMethods.getInfo(
tag: name,
language: language,
);
}

/// [TagMethods.getSimilar]
Future<List<Tag>> getSimilar() async {
return await _tagMethods.getSimilar(
tag: name,
);
}

/// [TagMethods.getTopAlbums]
Future<List<Album>> getTopAlbums({
int page = 1,
int limit = 50,
}) async {
return await _tagMethods.getTopAlbums(
tag: name,
page: page,
limit: limit,
);
}

/// [TagMethods.getTopArtists]
Future<List<Artist>> getTopArtists({
int page = 1,
int limit = 50,
}) async {
return await _tagMethods.getTopArtists(
tag: name,
page: page,
limit: limit,
);
}

/// [TagMethods.getTopTracks]
Future<List<Track>> getTopTracks({
int page = 1,
int limit = 50,
}) async {
return await _tagMethods.getTopTracks(
tag: name,
page: page,
limit: limit,
);
}

/// [TagMethods.getWeeklyChartList]
Future<List<Chart>> getWeeklyChartList() async {
return await _tagMethods.getWeeklyChartList(
tag: name,
);
}
}
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: scrobblenaut
description: A deadly simple LastFM API Wrapper for Dart. So deadly simple that it's gonna hit the mark.
version: 1.0.3
version: 1.0.4
homepage: https://github.com/Nebulino/Scrobblenaut
issue_tracker: https://github.com/Nebulino/Scrobblenaut/issues

Expand Down

0 comments on commit 5685028

Please sign in to comment.