Created
June 15, 2023 00:21
-
-
Save Bound3R/75580747763e27a3104ceeaa93bf905b to your computer and use it in GitHub Desktop.
Spotify - mix old/new songs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import spotipy | |
from spotipy.oauth2 import SpotifyOAuth | |
# ID de la playlist que deseas reorganizar | |
playlist_id = '' | |
client_id = '' | |
client_secret = '' | |
redirect_uri = 'http://localhost:8000/callback/' | |
def find_repeated_tracks(tracks): | |
track_names = {} | |
repeated_tracks = [] | |
remix_tracks = [] | |
similar_tracks = [] | |
for track in tracks: | |
name = track['track']['name'] | |
track_uri = track['track']['uri'] | |
if name in track_names: | |
if track_uri not in track_names[name]: | |
repeated_tracks.append(name) | |
track_names[name].append(track_uri) | |
else: | |
track_names[name] = [track_uri] | |
if 'remix' in name.lower(): | |
remix_tracks.append(name) | |
for existing_name in track_names.keys(): | |
if existing_name.lower() in name.lower() and existing_name != name: | |
similar_tracks.append((name, existing_name)) | |
if repeated_tracks: | |
print("Canciones repetidas:") | |
for track in repeated_tracks: | |
print(track) | |
if remix_tracks: | |
print("Canciones que son remix:") | |
for track in remix_tracks: | |
print(track) | |
if similar_tracks: | |
print("Canciones similares:") | |
for track, similar_track in similar_tracks: | |
print(f"{track} es similar a {similar_track}") | |
def reorder_playlist(playlist_id): | |
# Configurar autenticación de Spotify | |
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id=client_id, client_secret=client_secret, redirect_uri=redirect_uri, scope='playlist-modify-private')) | |
# Obtener la lista de canciones de la playlist utilizando paginación | |
tracks = [] | |
results = sp.playlist_items(playlist_id) | |
tracks.extend(results['items']) | |
while results['next']: | |
results = sp.next(results) | |
tracks.extend(results['items']) | |
# Encontrar canciones repetidas y remix | |
find_repeated_tracks(tracks) | |
# Ordenar las canciones por fecha de lanzamiento (de más antigua a más reciente) | |
tracks.sort(key=lambda x: x['track']['album']['release_date']) | |
# Eliminar todas las canciones de la playlist | |
sp.playlist_replace_items(playlist_id, []) | |
# Crear una nueva playlist para almacenar las canciones reorganizadas | |
# original_playlist = sp.playlist(playlist_id) | |
# new_playlist_name = original_playlist['name'] + ' - mixed' | |
# new_playlist = sp.user_playlist_create(sp.current_user()['id'], new_playlist_name, public=False) | |
# new_playlist_id = new_playlist['id'] | |
# Reorganizar las canciones de forma intercalada | |
num_tracks = len(tracks) | |
mid_index = (num_tracks - 1) // 2 | |
for i in range(mid_index + 1): | |
# Agregar la canción más antigua | |
track_uri = tracks[i]['track']['uri'] | |
sp.playlist_add_items(playlist_id, [track_uri]) | |
# Agregar la canción más nueva, si hay más de una canción | |
if i != mid_index: | |
track_uri = tracks[num_tracks - i - 1]['track']['uri'] | |
sp.playlist_add_items(playlist_id, [track_uri]) | |
print("La playlist ha sido reorganizada exitosamente.") | |
# Llamar a la función para reorganizar la playlist | |
reorder_playlist(playlist_id) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment