Ejemplos en Python

Esta práctica muestra cómo escribir un programa simple que descarga y analiza algún contenido usando el snapshotsarrow-up-right proporcionado por los servidores de contenido.

circle-info

Puedes encontrar el script completoarrow-up-right en GitHub, junto con un ejemplo más avanzadoarrow-up-right.

Usaremos el servidor de la Decentraland Foundation en peer.decentraland.org, y Python 3 como nuestro lenguaje de elección.

Esto es lo que haremos:

  1. Consultar el estado del servidor de contenido.

  2. Seleccionar y descargar un snapshotarrow-up-right con una lista de entidades.

  3. Imprimir el tipo y el ID de todas las entidades referenciadas.

Comencemos nuestro script con algunas preparaciones. Usaremos solo módulos de la biblioteca estándar, pero en código real probablemente querrás un cliente HTTP más cómodo (como la requestsarrow-up-right library).

# Hacer una petición HTTP GET, devolver una respuesta HTTP similar a un archivo.
def fetch(path):
    url = f"https://peer.decentraland.org/{path}"
    headers = { "User-Agent": "urllib" } # importante en algunos servidores (si está vacío, 403 Forbidden)

    request = urllib.request.Request(url, headers=headers)
    response = urllib.request.urlopen(request)

    return response

Nuestro simple ayudante hace una GET request, y devuelve el objeto de respuesta similar a un archivo. Nada sofisticado. Usemos esto para llamar al /about endpoint y comprobar el estado del servidor:

# Comprobar el estado del servidor:
about = json.load(fetch('about'))

if not about['healthy']:
    print("¡Servidor no saludable!")
    sys.exit(1)

Si pasamos este punto, el servidor está activo y en funcionamiento (obtuvimos una 200 response) y reporta estar operativo. Podemos solicitar el conjunto actual de snapshots (que viene en formato de arreglo JSON):

Los archivos de snapshot (especialmente para los rangos de tiempo más largos) pueden ser muy grandes. Para un experimento rápido, tomemos el más pequeño de la lista por numberOfEntities:

Para descargar el contenido, necesitamos el hash campo de snapshot. Obtenemos la URL del archivo agregándolo a la raíz de contenido:

El archivo que seleccionamos es lo suficientemente pequeño para almacenar en memoria, pero finjamos que no lo sabemos y hagámoslo en streaming. La primera línea es el encabezado del snapshot, y cada línea después de esa contiene un objeto JSON.

Comprobar el encabezado siempre es una buena idea:

Ahora podemos procesar todas las entidades en el snapshot, leyendo la respuesta línea por línea. Para nuestros humildes propósitos, process significa imprimir el tipo y el ID de la entidad:

Este bucle comenzará a hacer streaming, analizar e imprimir líneas como estas hasta que termine con el snapshot:

¡Salud! Hemos usado el sistema de snapshots para explorar parte del contenido disponible en Decentraland.

Recuerda que puedes encontrar el script completoarrow-up-right en GitHub, junto con un ejemplo más avanzadoarrow-up-right.

Última actualización