WORK-EKA #25

Merged
emre.kartal merged 2 commits from WORK-EKA into master 2 years ago

@ -42,21 +42,22 @@ class MusicViewModel {
}
}
List<Music> _getMusicsFromResponse(Map<String, dynamic> responseData) {
List<Music> _getMusicsFromResponse(List<dynamic> tracks) {
List<Music> musics = [];
List<dynamic> tracks = responseData['tracks']['items'];
for (var track in tracks) {
List<Artist> artists = List<Artist>.from(track['artists'].map((artist) {
return Artist(artist['id'], artist['name'], '');
}));
DateTime releaseDate = DateTime.parse(track['album']['release_date']);
musics.add(Music(
track['id'],
track['name'],
track['album']['images'][0]['url'],
track['preview_url'],
DateTime.now(),
releaseDate,
track['duration_ms'] / 1000,
track['explicit'],
artists));
@ -77,7 +78,7 @@ class MusicViewModel {
if (response.statusCode == 200) {
Map<String, dynamic> responseData = jsonDecode(response.body);
return _getMusicsFromResponse(responseData);
return _getMusicsFromResponse(responseData['tracks']['items']);
} else {
throw Exception(
'Error while retrieving music : ${response.statusCode} ${response.reasonPhrase}');
@ -96,7 +97,7 @@ class MusicViewModel {
if (response.statusCode == 200) {
Map<String, dynamic> responseData = jsonDecode(response.body);
return _getMusicsFromResponse(responseData);
return _getMusicsFromResponse(responseData['tracks']['items']);
} else {
throw Exception(
'Error while retrieving music : ${response.statusCode} ${response.reasonPhrase}');
@ -175,22 +176,42 @@ class MusicViewModel {
if (response.statusCode == 200) {
Map<String, dynamic> responseData = jsonDecode(response.body);
return _getMusicsFromResponse(responseData['tracks']);
} else {
throw Exception(
'Error while retrieving music : ${response.statusCode} ${response.reasonPhrase}');
}
}
Future<List<Music>> getMusicsWithPlaylistId(String id,
{String market = "FR"}) async {
var accessToken = await _token.getAccessToken();
var response = await http
.get(Uri.parse('$API_URL/playlists/$id?market=$market'), headers: {
'Authorization': 'Bearer $accessToken',
});
if (response.statusCode == 200) {
Map<String, dynamic> responseData = jsonDecode(response.body);
List<Music> musics = [];
List<dynamic> tracks = responseData['tracks'];
List<dynamic> tracks = responseData['tracks']['items'];
for (var track in tracks) {
List<Artist> artists = List<Artist>.from(track['artists'].map((artist) {
List<Artist> artists = List<Artist>.from(track['track']['artists'].map((artist) {
return Artist(artist['id'], artist['name'], '');
}));
DateTime releaseDate = DateTime.parse(track['track']['album']['release_date']);
musics.add(Music(
track['id'],
track['name'],
track['album']['images'][0]['url'],
track['preview_url'],
DateTime.now(),
track['duration_ms'] / 1000,
track['explicit'],
track['track']['id'],
track['track']['name'],
track['track']['album']['images'][0]['url'],
track['track']['preview_url'],
releaseDate,
track['track']['duration_ms'] / 1000,
track['track']['explicit'],
artists));
}
@ -200,4 +221,30 @@ class MusicViewModel {
'Error while retrieving music : ${response.statusCode} ${response.reasonPhrase}');
}
}
Future<List<Music>> getMusicsWithIds(List<String> ids,
{String market = "FR"}) async {
var accessToken = await _token.getAccessToken();
String url = API_URL+'/tracks?market=$market&ids=';
if (ids.length == 0) return [];
url += ids.join('%2C');
print(url);
var response = await http
.get(Uri.parse(url), headers: {
'Authorization': 'Bearer $accessToken',
});
if (response.statusCode == 200) {
Map<String, dynamic> responseData = jsonDecode(response.body);
return _getMusicsFromResponse(responseData['tracks']);
} else {
throw Exception(
'Error while retrieving music : ${response.statusCode} ${response.reasonPhrase}');
}
}
}

@ -57,4 +57,26 @@ Future<void> main() async {
}
}
print('\nPlaylist Musics :');
List<Music> playlistMusics = await musicVM.getMusicsWithPlaylistId('37i9dQZF1DX1X23oiQRTB5');
for (Music m in playlistMusics) {
print("id : ${m.id.toString()}, cover : ${m.cover}, title : ${m.title}");
print("date : ${m.date.toString()}, preview : ${m.previewUrl}, duration : ${m.duration}, explicit : ${m.explicit}");
for (Artist a in m.artists) {
print("id : ${a.id}, name : ${a.name}");
}
}
print('\nMusics With Ids :');
List<Music> musicsIds = await musicVM.getMusicsWithIds(['6D1HiF2e3Z0F8FwQ5uLxwn','6IGg7qsBvA5xbrwz3MNHWK']);
for (Music m in musicsIds) {
print("id : ${m.id.toString()}, cover : ${m.cover}, title : ${m.title}");
print("date : ${m.date.toString()}, preview : ${m.previewUrl}, duration : ${m.duration}, explicit : ${m.explicit}");
for (Artist a in m.artists) {
print("id : ${a.id}, name : ${a.name}");
}
}
}

Loading…
Cancel
Save