143 lines
5.8 KiB
Python
Executable File
143 lines
5.8 KiB
Python
Executable File
#!/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.") |