Capítulo 2. Consultar Play Store desde Python
Una ficha, una búsqueda filtrada, paginación y un bucle de reintentos educado, en unas treinta líneas de Python.
Una ficha
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"])Una búsqueda filtrada
/search admite cualquier combinación de filtros. Apps educativas con un millón de instalaciones y una valoración de 4,5 o más, las mejor valoradas primero:
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")Paginación
Las respuestas incluyen page, per y pages. Recorre las páginas hasta llegar a pages; los resultados se detienen en el elemento 10.000, así que divide los conjuntos grandes por género o tramo de instalaciones.
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 += 1Costes
Una ficha cuesta un crédito y una página de búsqueda, dos. Los 1.000 créditos mensuales del plan gratuito cubren unas 500 páginas de búsqueda. Las respuestas se guardan en caché durante horas, así que repetir una consulta durante el desarrollo sale barato.