Exemplos em Python

Esta prática mostra como escrever um programa simples que baixa e analisa algum conteúdo usando o snapshotsarrow-up-right fornecido pelos servidores de conteúdo.

circle-info

Você pode encontrar o script completoarrow-up-right no GitHub, junto com um exemplo mais avançadoarrow-up-right.

Usaremos o servidor da Decentraland Foundation em peer.decentraland.org, e Python 3 como nossa linguagem de escolha.

Isto é o que faremos:

  1. Consultar o status do servidor de conteúdo.

  2. Selecionar e baixar um snapshotarrow-up-right com uma lista de entidades.

  3. Imprimir o tipo e o ID de todas as entidades referenciadas.

Vamos começar nosso script com algumas preparações. Usaremos apenas módulos da biblioteca padrão, mas no código real você provavelmente vai querer um cliente HTTP mais confortável (como a requestsarrow-up-right library).

# Fazer uma requisição HTTP GET, retornar uma resposta HTTP parecida com um arquivo.
def fetch(path):
    url = f"https://peer.decentraland.org/{path}"
    headers = { "User-Agent": "urllib" } # importante em alguns servidores (se vazio, 403 Forbidden)

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

    return response

Nosso simples auxiliar faz um GET request, e retorna o objeto de resposta parecida com um arquivo. Nada sofisticado. Vamos usá-lo para acessar o /about endpoint e verificar o status do servidor:

# Verificar o status do servidor:
about = json.load(fetch('about'))

if not about['healthy']:
    print("Servidor não saudável!")
    sys.exit(1)

Se chegarmos além deste ponto, o servidor está ativo e funcionando (recebemos uma 200 response) e reporta estar operacional. Podemos solicitar o conjunto atual de snapshots (que chega no formato de array JSON):

Arquivos de snapshot (especialmente para intervalos de tempo maiores) podem ser muito grandes. Para um experimento rápido, vamos pegar o menor da lista por numberOfEntities:

Para baixar o conteúdo, precisamos do hash campo de snapshot. Obtemos a URL do arquivo anexando-o à raiz de conteúdo:

O arquivo que selecionamos é pequeno o suficiente para ser armazenado em memória, mas vamos fingir que não sabemos disso e transmiti-lo em streaming. A primeira linha é o cabeçalho do snapshot, e cada linha depois disso contém um objeto JSON.

Vamos verificar o cabeçalho, sempre uma boa ideia:

Agora podemos processar todas as entidades no snapshot, lendo a resposta linha por linha. Para nossos humildes propósitos, process significa imprimir o tipo e o ID da entidade:

Este loop começará a transmitir, analisar e imprimir linhas como estas até terminar o snapshot:

Saúde! Usamos o sistema de snapshot para explorar parte do conteúdo disponível na Decentraland.

Lembre-se que você pode encontrar o script completoarrow-up-right no GitHub, junto com um exemplo mais avançadoarrow-up-right.

Atualizado