#!/usr/bin/env python3 import json from spotify import authentify, get_tracks_bpm, get_playlist_tracks_with_metadata, get_original_release_year import spotipy SCOPE = "user-library-read playlist-read-private playlist-modify-private" CLIENT_ID = "1ad3f973e5924940bec0bcbf1adf7475" CLIENT_SECRET = "e0601efe11ee4e31b27b255c06d70a38" def main(): api = authentify(CLIENT_ID, CLIENT_SECRET, SCOPE) # print(get_tracks_bpm(api,["229hxLehs5xb5EQirOxOqC","0sQfjbECEGyfnrgUS7sbZK"])) print(get_original_release_year(api,"229hxLehs5xb5EQirOxOqC")) if __name__ == "__main__": main() # # Fonction pour récupérer toutes les playlists d'un utilisateur, hors celles qu'il a créées # def get_favorited_playlists_not_owned_by_user(user_id): # playlists = [] # results = api.current_user_playlists() # # Parcours de toutes les playlists # while results: # for playlist in results['items']: # # Vérifie si le propriétaire de la playlist est différent de l'utilisateur # if playlist['owner']['id'] == user_id: # playlists.append({ # 'name': playlist['name'], # 'owner': playlist['owner']['display_name'], # 'url': playlist['external_urls']['spotify'] # }) # # Récupération de la page suivante si elle existe # results = api.next(results) if results['next'] else None # return playlists # # Exécution et affichage des playlists récupérées # playlists = get_favorited_playlists_not_owned_by_user(user_id) # print("Playlists aimées mais non créées par l'utilisateur :") # for playlist in playlists: # print(f"{playlist['name']}") # # Remplacez par les noms de vos playlists # nom_playlists = ["Films","Arabia","Pop Rock","Electrance","Dance Old","Salsa","Reggaeton","Drum&Bass","Asia","Bachata","Dance Old FR","Africa","Française Old","Italia Old","Italia New","Classique","Dance New","Dessins Animés","Electro House","Folk","Humour","Latino","Métal","Pop FR","Pop EN","Pop","Rap","Rap FR","R&B","R&B FR","Reggae","Rock FR","Rock fast","Rock slow","Electro Techno","Trap slow","Trap speed","Disco Soul","Swing"] # # Fonction pour obtenir l'ID d'une playlist par son nom en parcourant toutes les playlists de l'utilisateur # def get_playlist_id(nom): # playlists = [] # results = api.current_user_playlists() # playlists.extend(results['items']) # # Pagination pour récupérer toutes les playlists si l'utilisateur en a plus de 50 # while results['next']: # results = api.next(results) # playlists.extend(results['items']) # # Recherche de la playlist par nom # for playlist in playlists: # if playlist['name'] == nom: # return playlist['id'] # print(f"Playlist '{nom}' non trouvée.") # return None # # Fonction pour récupérer tous les morceaux d'une playlist # def obtenir_morceaux_playlist(playlist_id): # morceaux = [] # results = api.playlist_tracks(playlist_id, offset=0) # morceaux.extend(results['items']) # # Pagination pour obtenir tous les morceaux si plus de 100 # while results['next']: # results = api.next(results) # morceaux.extend(results['items']) # return morceaux # # Récupérer les morceaux par playlist et détecter les doublons # morceaux_par_playlist = {} # morceaux_doublons = {} # for nom in nom_playlists: # playlist_id = get_playlist_id(nom) # if playlist_id: # morceaux = obtenir_morceaux_playlist(playlist_id) # for morceau in morceaux: # titre = morceau['track']['name'] # artiste = morceau['track']['artists'][0]['name'] # identifiant = f"{titre} - {artiste}" # if identifiant in morceaux_par_playlist: # morceaux_par_playlist[identifiant].append(nom) # morceaux_doublons[identifiant] = morceaux_par_playlist[identifiant] # else: # morceaux_par_playlist[identifiant] = [nom] # # Afficher les morceaux qui sont dans plusieurs playlists # print("Chansons présentes dans plusieurs playlists :") # for morceau, playlists in morceaux_doublons.items(): # print(f"{morceau} est dans les playlists : {', '.join(playlists)}") # if not morceaux_doublons: # print("Aucun doublon trouvé.") # # Récupérer toutes les pistes d'une playlist # def get_playlist_tracks(playlist_id): # tracks = [] # results = api.playlist_items(playlist_id) # tracks.extend(results['items']) # while results['next']: # results = api.next(results) # tracks.extend(results['items']) # return [track['track']['id'] for track in tracks if track['track']] # # Supprimer les pistes spécifiées d'une playlist # def remove_tracks_from_playlist(playlist_id, track_ids): # if track_ids: # api.playlist_remove_all_occurrences_of_items(playlist_id, track_ids) # # Identifiants des playlists # playlist_a_trier_id = get_playlist_id("A trier") # playlist_everything_id = get_playlist_id("[$Everything] save") # if playlist_a_trier_id and playlist_everything_id: # # Obtenir les pistes de chaque playlist # a_trier_tracks = set(get_playlist_tracks(playlist_a_trier_id)) # everything_tracks = set(get_playlist_tracks(playlist_everything_id)) # # Trouver les doublons # duplicate_tracks = list(a_trier_tracks.intersection(everything_tracks)) # # Supprimer les doublons de la playlist "A trier" # if duplicate_tracks: # remove_tracks_from_playlist(playlist_a_trier_id, duplicate_tracks) # print(f"{len(duplicate_tracks)} chansons en doublon supprimées de la playlist 'A trier'.") # else: # print("Aucun doublon trouvé.") # else: # print("Erreur : une ou plusieurs playlists n'ont pas été trouvées.")