diff = list( filter( lambda track: track['id'] not in [track['id'] for track in lib_tracks], playlist_tracks)) diff_size = len(diff) diff_percent = round(diff_size / playlist_tracks_size * 100) logging.info(f'tracks not covered: {diff_size} ({diff_percent}%)') logging.info('sorting tracks by added at...') diff = sorted(diff, key=lambda track: track['added_at']) unique_diff = [] for track in diff: if not track['id'] in [track['id'] for track in unique_diff]: unique_diff.append(track) logging.info('writing tracks to file...') with open(f'{os.path.dirname(os.path.abspath(__file__))}/tracks.txt', 'w') as file: file.write(pformat(unique_diff)) # add diff to library ids_to_save = [track['id'] for track in unique_diff] if ids_to_save: logging.info('saving tracks...') for i in range(0, len(ids_to_save)): if i % 20 == 0: logging.info(f'{i} done') api.current_user_saved_tracks_add([ids_to_save[i]]) time.sleep(1)