0.6.2 - Spotify albums/tracks, album art gradient, languages, minor fixes

This commit is contained in:
exttex 2020-11-09 22:05:47 +01:00
parent f877aa9d7b
commit e9d97986b5
17 changed files with 497 additions and 221 deletions

View file

@ -38,7 +38,13 @@ class SpotifyAPI {
//Parse
dom.Document document = parse(response.body);
dom.Element element = document.getElementById('resource');
return jsonDecode(element.innerHtml);
//Some are URL encoded
try {
return jsonDecode(element.innerHtml);
} catch (e) {
return jsonDecode(Uri.decodeComponent(element.innerHtml));
}
}
Future<SpotifyPlaylist> playlist(String uri) async {
@ -50,6 +56,21 @@ class SpotifyAPI {
return playlist;
}
//Get Deezer track ID from Spotify URI
Future<String> convertTrack(String uri) async {
Map data = await getEmbedData(getEmbedUrl(uri));
SpotifyTrack track = SpotifyTrack.fromJson(data);
Map deezer = await deezerAPI.callPublicApi('track/isrc:' + track.isrc);
return deezer['id'].toString();
}
//Get Deezer album ID by UPC
Future<String> convertAlbum(String uri) async {
Map data = await getEmbedData(getEmbedUrl(uri));
SpotifyAlbum album = SpotifyAlbum.fromJson(data);
Map deezer = await deezerAPI.callPublicApi('album/upc:' + album.upc);
return deezer['id'].toString();
}
Future convertPlaylist(SpotifyPlaylist playlist, {bool downloadOnly = false, BuildContext context, AudioQuality quality}) async {
doneImporting = false;
@ -132,6 +153,17 @@ class SpotifyPlaylist {
);
}
class SpotifyAlbum {
String upc;
SpotifyAlbum({this.upc});
//JSON
factory SpotifyAlbum.fromJson(Map json) => SpotifyAlbum(
upc: json['external_ids']['upc']
);
}
enum TrackImportState {
NONE,
ERROR,