jueves, 13 de agosto de 2015

Python: Tutorial básico de la API de Marvel

Tras mucho tiempo parado he decidido volver a escribir en este blog, más que nada porque he estado trasteando con la API que da marvel y he encontrado la documentación un poco confusa, así que me he animado a escribir.

Para empezar, comentar que Marvel ha puesto hace tiempo una API con mucha información de sus cómics, personajes, etc. lo que la hace muy interesante para probar bases de datos y sacar estadísticas y demás.

En primer lugar nos registramos en https://developer.marvel.com y obtenemos una clave pública más otra privada para realizar las consultas a la API.

La petición debe llevar obligatoriamente 3 parámetros: apikey, ts, y hash:
  • apikey es la clave pública.
  • ts es un valor de timestamp, pero si queremos podemos usar un long (en Python todo entero corriente es un long).
  • hash, que se calcula MD5(ts + clave_pública + clave_privada).
Y ahora, esto es un rollo así que vamos a pasar al código que es mucho más bonito:

Para hacer las peticiones he empleado la librería requests (pip install requests), muy recomendable, aunque podríamos usar la librería urllib que viene por defecto en Python. Importamos también la librería hashlib para hacer el cálculo MD5. Primero, las claves públicas y demás:
import hashlib
import requests
public = 'claveprivada'
private = 'clavepublica'
ts = '1'
hash = hashlib.md5((ts + pr + pu).encode()).hexdigest()
Ahora ya podemos hacer las peticiones:
base = 'http://gateway.marvel.com/v1/public/'
comics = requests.get(base + 'comics',
                      params={'apikey': public,
                              'ts': ts,
                              'hash': h}).json()
characters = requests.get(base + 'characters',
                          params={'apikey': public,
                                  'ts': ts,
                                  'hash': h}).json()
wolverine = requests.get(base + 'characters',
                          params={'apikey': public,
                                  'ts': ts,
                                  'hash': h,
                                  'name': 'wolverine'}).json()
Con esto os queda una pequeña chuleta para trabajar con la API de Marvel, aunque si no queréis hacerlo directamente hay varias librerías por ahí, como PyMarvel.

Un saludo a todos!