Saltar al contenido

[2021] Usando Python para crear una lista de reproducción de Spotify de las muestras en un álbum {DH}

junio 24, 2022
0j1bKgDVc2VIZV1AG


(a través de Unsplash)

Cambia loops y muestras aleatorias por loops de batería y muestras de soul

eric hochberger

4 de marzo de 20207 minutos de lectura

Como ávido fanático del hip-hop, siempre me ha interesado mucho el sampleo. El sampleo en música, para los no iniciados, es la reutilización de parte de una canción existente como parte de una nueva canción. Un gran ejemplo es «My Way Home» de Kanye West de su álbum de 2005. Registro tardíomuestras de «Home Is Where the Hate Is» de Gil Scott-Heron de su álbum de 1971, partes de un hombre.

Registro tardío está lleno de wiellah grandes muestras de la pista Heron antes mencionada al clásico «Diamonds Are Forever» de Shirley Bassey, que sirvió como tema principal para la película Bond del mismo nombre. he oido Registro tardío Innumerables veces he querido profundizar en la música y explorar las influencias que West y el coproductor Jon Brion interpretaron literalmente a través del muestreo. Empecé buscando las canciones en Genius, encontrando los nombres de ejemplo y agregándolos manualmente a una lista de reproducción de Spotify. Como era de esperar, esto se volvió engorroso después de un tiempo, así que escribí un script para automatizar el proceso. A continuación, demostraré cómo funciona el script. Registro tardío como ejemplo, pero si desea saltar directamente al código, puede encontrarlo en mi GitHub.

El primer paso fue crear una lista de muestras de Registro tardío. Como se mencionó anteriormente, Genius tiene excelentes datos de colaboración colectiva para las muestras de cada canción, por lo que solo fue cuestión de recopilar los enlaces para las páginas de cada canción en el álbum, recorrerlos y extraer la información de la muestra para cada uno:

Genius información de la pista de «My Way Home»
Utiliza módulos y solicitudes BeautifulSoup4 Python

O eso pensé. Cuando ejecuté el raspador usando esta estrategia y vi que el marco de datos resultante contenía 12 resultados (dos de los cuales eran duplicados), sospeché que al raspador le faltaba información, así que realicé una inspección manual de las páginas de canciones de Genius para averiguar por qué.

Página de la canción «Late» Genius de Kanye West

Resulta que en algunas páginas de canciones de Genius, la información de la muestra está en la notación de producción introductoria y no en el cuadro de información de la canción. Esa fue una realización frustrante, pero me desafió a diseñar una solución alternativa.

Obtener datos de muestra de las anotaciones

Al igual que Spotify, Genius tiene una API gratuita que permite a los usuarios extraer información sobre anotaciones específicas. Entonces, una vez que tuve la anotación aislada, todo lo que tuve que hacer fue extraer la información de la muestra. Dado que las anotaciones no están estandarizadas, no habría sido fácil analizar el texto para determinar el nombre de la muestra. Sin embargo, he notado que los usuarios de Genius adjuntan un enlace de YouTube cada vez que miran ejemplos. Que considerado. Usando esta información, pude desarrollar un raspador complementario que aísla una anotación de producción de Genius y genera información de muestra raspando el título del video de YouTube dentro de la anotación:

Ahora armado con este raspador más robusto, podemos echar un vistazo a la salida de datos de URL de Genius Registro tardío:

Datos de ejemplo de InfoBox (captura de pantalla del autor)
Datos de ejemplo para anotaciones (captura de pantalla del autor)

Me referiré a estos dos marcos de datos como sample_data Y titleso en el futuro. Aunque puede parecer que el raspador cometió algunos errores, ya que hay pistas duplicadas en los marcos de datos, en realidad es una prueba de que el raspador está funcionando. Las dos primeras pistas de Registro tardío, «Wake Up Mr. West” y “Heard ‘Em Say” se unen de manera brillante a través de muestras de esta hermosa canción de Natalie Cole. El primero muestra la parte de piano de apertura tal cual, y el segundo utiliza una sección en bucle de la misma parte de piano como base de su ritmo. «Diamonds Are Forever» aparece dos veces ya que el álbum incluye la versión original de «Diamonds From Sierra Leone», que muestra la pista de Bassey y fue el sencillo principal del álbum, así como un remix con el mentor de Kanye, Jay-Z.

El siguiente paso fue automatizar la creación de una lista de reproducción de Spotify con el nombre apropiado, lo cual es fácil de hacer con el SpotipyMódulo. comenzando Spotipy Es un proceso corto que se reduce a registrarse con Spotify como desarrollador para obtener una identificación de cliente y un secreto de cliente que, combinados con un nombre de usuario de Spotify activo, le permitirán realizar innumerables operaciones en su cuenta de Spotify a través de Python a través de Spotify. API gratis. Utilizo el «Flujo de código de autorización» de Spotipy para autorizar el uso de mi cuenta y luego creo un objeto de Spotipy:

token = util.prompt_for_user_token(username,scope,client_id=client_id,client_secret=client_secret,redirect_uri='http://localhost/') 
sp = spotipy.Spotify(auth=token)

Ahora podemos crear la lista de reproducción:

playlist_name = f"Samples in {album_title} by {album_artist}"   ...


[2021] Usando Python para crear una lista de reproducción de Spotify de las muestras en un álbum {DH}