Artsy API: Dados para entender a arte
A Artsy é uma corretora de arte online com sede em Nova York. Seu site atende inúmeras galerias, museus e coleções particulares em todo o mundo.
Como muitas outras páginas, Artsy API (Application Programming Interface) permite fácil acesso ao seu banco de dados.
Suponha que queremos vender uma obra de arte de nosso bisavô, onde seria melhor vendê-la para maximizar seu preço de venda? Por quanto vendem obras de artistas semelhantes? Em que época do ano é a melhor época para vender? Perguntas desse tipo podem ser respondidas por meio dessa API.
A API Artsy é fácil de usar e acessível. Você só precisa se registrar para obter uma chave API com a qual podemos fazer solicitações usando chamadas REST (REpresentational State Transfer).
Neste artigo vou explicar passo a passo como obter dados da API com Curl e Python.
Vamos começar criando uma conta de desenvolvedor na página do Artsy:
Crie e nomeie seu aplicativo (não é necessário adicionar redirect urls!), que fornecerá automaticamente o ID do cliente. Ao clicar em edit, também veremos o Client Secret. Esses dois campos são os mais importantes para obter seu token de consulta.
Na página Public API Documentation -> General -> Getting Started, você também verá os dados da sua API e no ponto 4 eles informarão como obter o token.
Abra o terminal ou command prompt no Windows (você precisa ter o Curl instalado anteriormente) e copie e cole o link:
Na parte inferior da resposta, lê-se: xapptoken, token: XXXX até onde diz expires_at.
Copie e cole o token em seu notebook Python para salvá-lo, que expirará na data anunciada.
Para fazer consultas, precisaremos obter um endpoint, que dependerá dos dados que queremos consultar. Todos os endpoints disponíveis estão na documentação do Artsy.
Vamos começar carregando as bibliotecas que vamos usar:
import numpy as np
import pandas as pd
import json
import os
import requests
Com print(pd.__version__) você pode verificar sua versão do Pandas.
Vejamos os dados de vendas como exemplo:
API_KEY = os.getenv("ARTSY_API_KEY")
headers = {
"X-XAPP-Token": "TU_TOKEN"
}
sales_endpoint = "https://api.artsy.net/api/sales?"
sales_response = requests.get(sales_endpoint, headers=headers)
A resposta json contém três campos. Dentro do campo ‘_embedded’ é onde você encontra os dados que lhe interessam para o banco de dados. Vamos converter a consulta json em um Pandas Data Frame e extrair os campos dentro de embedded e sales.
if sales_response.status_code== 200:
data = sales_response.json()
sales = data['_embedded']['sales']
auctionsData=pd.DataFrame(sales)
else:
raise Exception('Failed to get data from the API')
Isso nos dará um Data Frame:
Vamos ver como ficam os dados no json para entender melhor:
Como mencionei, os dados nos quais estamos interessados estão em _embedded, sales.
Cada request retorna apenas cinco resultados. No campo 'next' do json há um novo link para obter a próxima página de resultados. Conhecemos esse problema como Paginação.
Podemos contornar o problema de Pagination com o código:
url = "https://api.artsy.net/api/sales?"
results_count = 0
all_sales = []
while url:
response = requests.get(url, headers=headers)
data = response.json()
# process the data as needed
results_count += len(data['_embedded']['sales'])
all_sales.extend(data['_embedded']['sales'])
if '_links' in data and 'next' in data['_links']:
url = data['_links']['next']['href']
else:
url = None
df = pd.DataFrame(all_sales)
Por ser um loop while, é normal que demore muito. O tempo de resposta dependerá do hardware do seu computador, quanta memória você alocou para o seu notebook e quantos casos a query retornou.
A API Artsy é uma ótima opção, mas sua experiência vai depender do uso de um computador com uma boa quantidade de RAM (16 GB ou mais) porque senão será um loop while demorado e às vezes ineficiente. Existem outras alternativas, embora isso dependa de suas necessidades.
Existem muitos outros campos a serem explorados, como quais artistas vendem em mais galerias, por exemplo. Para responder a essa pergunta, precisaremos solicitar galerias e identificar quais artistas são artistas recorrentes.
Espero que este tutorial seja muito útil para você. Tente!
A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.