Files
clever-spotify/__init__.py
2024-11-14 10:14:57 +01:00

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.")