diff --git a/spotify-backup.py b/spotify-backup.py index ab167fa..ce7f7cc 100755 --- a/spotify-backup.py +++ b/spotify-backup.py @@ -157,11 +157,13 @@ def main(): logging.info('Logged in as {display_name} ({id})'.format(**me)) playlists = [] + liked_albums = [] - # List liked songs + # List liked albums and songs if 'liked' in args.dump: - logging.info('Loading liked songs...') + logging.info('Loading liked albums and songs...') liked_tracks = spotify.list('users/{user_id}/tracks'.format(user_id=me['id']), {'limit': 50}) + liked_albums = spotify.list('me/albums', {'limit': 50}) playlists += [{'name': 'Liked Songs', 'tracks': liked_tracks}] # List all playlists and the tracks in each playlist @@ -181,22 +183,38 @@ def main(): with open(args.file, 'w', encoding='utf-8') as f: # JSON file. if args.format == 'json': - json.dump(playlists, f) + json.dump({ + 'playlists': playlists, + 'albums': liked_albums + }, f) # Tab-separated file. else: + f.write('Playlists: \r\n\r\n') for playlist in playlists: f.write(playlist['name'] + '\r\n') for track in playlist['tracks']: if track['track'] is None: continue - f.write('{name}\t{artists}\t{album}\t{uri}\r\n'.format( + f.write('{name}\t{artists}\t{album}\t{uri}\t{release_date}\r\n'.format( uri=track['track']['uri'], name=track['track']['name'], artists=', '.join([artist['name'] for artist in track['track']['artists']]), - album=track['track']['album']['name'] + album=track['track']['album']['name'], + release_date=track['track']['album']['release_date'] )) f.write('\r\n') + if len(liked_albums) > 0: + f.write('Liked Albums: \r\n\r\n') + for album in liked_albums: + uri = album['album']['uri'] + name = album['album']['name'] + artists = ', '.join([artist['name'] for artist in album['album']['artists']]) + release_date = album['album']['release_date'] + album = f'{artists} - {name}' + + f.write(f'{name}\t{artists}\t-\t{uri}\t{release_date}\r\n') + logging.info('Wrote file: ' + args.file) if __name__ == '__main__':