#!/usr/bin/python3 import spotipy from spotipy.oauth2 import SpotifyOAuth import json import sys import datetime scope = "user-library-read playlist-modify-public" sp = spotipy.Spotify(auth_manager=SpotifyOAuth(scope=scope, client_id="1034e542fa064c27859b61a6ec5f864e", client_secret="2503172e78ce4d5e9146047db0a39077", redirect_uri="http://b.4a.si:25425/")) playlist = "7IyZWvHG2e7CiGnHGTkFBl" results = {"items": [None]} offset = 0 publicized_uris = [] while len(results["items"]) != 0: results = sp.playlist_items(playlist, None, 100, offset) for idx, item in enumerate(results["items"]): publicized_uris.append(item["track"]["uri"]) offset += 100 results = {"items": [None]} offset = 0 saved_items = [] while len(results["items"]) != 0: results = sp.current_user_saved_tracks(50, offset) to_add = [] for idx, item in enumerate(results['items']): saved_items.append(item) if item["track"]["uri"] not in publicized_uris: to_add.append(item["track"]["uri"]) else: publicized_uris.remove(item["track"]["uri"]) offset += 50 if len(to_add) != 0: sp.playlist_add_items(playlist, to_add) # print(offset, file=sys.stderr) if len(publicized_uris) != 0: sp.playlist_remove_all_occurrences_of_items(playlist, publicized_uris) todaystring = datetime.datetime.now().isoformat().replace("T", " ").split(".")[0] sp.playlist_change_details(playlist, name="public mirror of my liked songs.", public=True, collaborative=False, description=f"updated {todaystring} automatically daily using http://4a.si/spotsync") print(json.dumps(saved_items))