コード例 #1
0
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)