Capítulo 2. Consultando a Play Store com Python
Uma página, uma busca filtrada, paginação e um laço de novas tentativas educado, em cerca de trinta linhas de Python.
Uma página
import os, requests
API = "https://playapi.info/api/v1"
H = {"X-API-Key": os.environ["API_KEY"]}
app = requests.get(f"{API}/app", params={"id": "com.duolingo"}, headers=H, timeout=30).json()["app"]
print(app["title"], app["installs"]["label"], app["rating"]["score"])Uma busca filtrada
/search aceita qualquer combinação de filtros. Apps de educação com um milhão de instalações e avaliação 4,5 ou maior, os mais bem avaliados primeiro:
params = {"category": "EDUCATION", "min_installs": 1000000,
"min_score": 4.5, "sort": "score", "per": 100}
r = requests.get(f"{API}/search", params=params, headers=H, timeout=30).json()
print(r["total"], "listings")Paginação
As respostas trazem page, per e pages. Percorra as páginas até chegar a pages; os resultados param no 10.000º item, então divida conjuntos grandes por gênero ou faixa de instalações.
def all_pages(path, params):
page = 1
while True:
r = requests.get(f"{API}/{path}", params={**params, "page": page}, headers=H, timeout=30)
if r.status_code == 429:
time.sleep(2); continue
d = r.json()
yield from d["results"]
if page >= d["pages"]: break
page += 1Custos
Uma página de app custa um crédito, uma página de busca, dois. Os 1.000 créditos mensais do plano gratuito cobrem cerca de 500 páginas de busca. As respostas ficam em cache por horas, então repetir uma consulta durante o desenvolvimento sai barato.