Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Utilizando APIs: Tokens y Búsqueda

22/30
Recursos

Aportes 24

Preguntas 9

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Por aca les dejo una forma de codificar en base64 sus credenciales sin necesidad de un servicio externo, Saludos.

import base64
# Codificando a Base64 'client_id:client_secrete'
client_id = 'tu_client_id'
client_secret = 'tu_client_secret'  # Nunca compartirlo
client_str = '{client_id}:{client_secret}'.format(client_id=client_id, client_secret=client_secret)
client_encode = base64.b64encode(client_str.encode("utf-8"))  # Codificado en Bytes
client_encode = str(client_encode, "utf-8")  # Codificado en String

token_url = 'https://accounts.spotify.com/api/token'
params = {'grant_type': 'client_credentials'}
headers= {'Authorization' : 'Basic {client_encode}'.format(client_encode=client_encode)}

Para los que no les funciono con ‘headers=headers’ pueden probar con auth = (client_id,client_credentials)


token_url = 'https://accounts.spotify.com/api/token'
params = {'grant_type':'client_credentials'}
r = requests.post(token_url,data=params,auth = (client_id,client_secrets) )

print(r.status_code)
print(r.json())

Comunidad, A alguien mas le sale 400 cuando ya intentan obtener la información de la página web (?)

Les comparto el método que construí utilizando la librería la autenticación OAuth 2.0 disponible para la librería request. Con este paso, lo que me evito es que tener que codificar manualmente el token base 64.

# instalar librerías
!pip3 install requests requests.auth

#importarlas librerías al notebook
import requests
from oauthlib.oauth2 import BackendApplicationClient
from requests.auth import HTTPBasicAuth
import json
import pandas as pd

# declarar variables de la API de Spotify
client_id  = 'a1f9ce...663d3'
client_secret = 'e6425...62800'

# variable para la autenticación
auth = HTTPBasicAuth(client_id, client_secret)
client = BackendApplicationClient(client_id=client_id)
oauth = OAuth2Session(client=client)

# pedir el token a la API de Spotify
token = oauth.fetch_token(token_url='https://accounts.spotify.com/api/token', auth=auth)
# validar la obtención del token
token

####### abrir otro bloque de código #######

# definir el endpoint de busqueda (search). A esta url le mandaremos la petición
url_search = 'https://api.spotify.com/v1/search'

# variables de la petición. Vamos a descubrir cuáles son los artistas que se llaman "Marc"
headers = {'Accept': 'application/json',
           'Content-Type' : 'application/json',
           'Authorization' : 'Bearer '+ token['access_token']}
payload = {'q' : 'Marc',
           'type' : 'artist',
           'market' : 'US',
           'limit' : '10'}

# petición utilizando la librería request.
response_search = requests.get(url_search,params=payload,headers=headers)
# ver resultado
response_search.json

correcion no existe su url :

https://accounts.spotity.com/api/token

Excelente clase. Yo espero que Martin siga compartiendo mucho mas contenido similar 😃

comparación:

en mi caso me sale 403 permiso denegado ?? cuando
ejecuto el codigo
r.status_code ??

Les comparto mi error

ep_artist = '/artists/{id_artist}'

Había copiado artist

Una de las mejores clases del curso

Excelente clase!

Solo como comentario, sí es posible ver ambos token, digo para que no tengan ningún problema

estimado profesor : este url no existe??
https://acconunts.spotity.com/api/token

@martin. Tengo la siguiente duda. Donde esta la seguridad de ese Token generado cuando solo se esta codificando en b64 ambos campos (ID:Secret)?

Si es interceptado de alguna manera (Ej. Proxy) cualquiera pudiera tener acceso a la lista.

No me quedo claro ese tema. Quedo a la espera.

Saludos!

nice ;D

Sigue dandome error 404. No lo puedo solucionar

Aqui mi codigo

import requests, base64, pandas


URL_SPOTYFY = 'https://api.spotify.com/v1'
EP_ARTIST = '/artists/{artist_id}'
URL_SPOTYFY_SRCH = 'https://api.spotify.com/v1/search'
TOKEN = 'https://accounts.spotify.com/api/token'


def encoding():
    clien_id = "xxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxx"
    msg_bytes = clien_id.encode("UTF-8")
    msg_base64 = base64.b64encode(msg_bytes)
    msg_decode = msg_base64.decode("UTF-8")
    return msg_decode
        

def token_spotify():
    try:  
        params = {'grant_type': 'client_credentials'}
        headers = {'Authorization': 'Basic ' + encoding()}
        r_spoty = requests.post(TOKEN, headers=headers, data=params)

        return r_spoty.json()["access_token"]
    except Exception as erre:
        print(f"Error al requerir el token:  \n {erre}")


def api_spotify(inp):
    try:
        # url = URL_SPOTYFY + EP_ARTIST.format(artist_id=AVICII)
        header = {'Authorization': 'Bearer {}'.format(token_spotify())}
        srch_params = {'q' : inp, 'type' : 'artist', 'market' : 'CO'}
        get_url = requests.get(URL_SPOTYFY_SRCH, headers=header, params=srch_params)
        df = pandas.DataFrame(get_url.json() ['artists'])
        # print(get_url.json())
        print(df.head)
    except Exception as erre:
        print(f"Error en la api:  \n {erre}")


if __name__ == "__main__":
    inp = input(f"Que artista desaea buscar?: ")
    api_spotify(inp)

Me re gusto esta práctica! lo probé con una de mis bandas favoritas! the kooks ❤️
****Dato de color que pueda servirle a alguien que le daba 401 0 400, en vez de 200 ***** capaz a alguien le sirvee ****

Pd: siempre actualicen todas las celdas, aveces eso hace que si trabajamos las últimas, y dejamos en pausa un momento la tarea, no tome lo que ya está hecho arriba
saludos a todos!! 😄

👍💪

URL para obtener el token:

https://accounts.spotify.com/api/token

Wow

Por si alguno tuvo problemas para realizar el ejercicio como yo cuando intente les subo mi código.

Si les da error el requests.post( …).

Pueden testear desde la terminal de Linux con curl usando la siguiente línea:

# curl -H “Authorization: Basic <Token en base64 de Client_ID:Client_Secret>=” -d grant_type=client_credentials https://accounts.spotify.com/api/token;echo

Ayer la vida me daba “error 404”. Hoy todo sale bien. Es la prueba de que a veces viene bien un descanso para aclarar las ideas.