Kapitel 2. Den Play Store aus Python abfragen
Ein Eintrag, eine gefilterte Suche, Paginierung und eine höfliche Wiederholungsschleife in etwa dreißig Zeilen Python.
Ein Eintrag
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"])Eine gefilterte Suche
/search nimmt jede Kombination von Filtern an. Bildungs-Apps mit einer Million Installationen und einer Bewertung ab 4,5, die bestbewerteten zuerst:
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")Paginierung
Antworten enthalten page, per und pages. Gehen Sie die Seiten durch, bis Sie pages erreichen; die Ergebnisse enden beim 10.000. Element, teilen Sie große Mengen also nach Genre oder Installationsstufe auf.
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 += 1Kosten
Ein einzelner Eintrag kostet einen Credit, eine Suchseite zwei. Die 1.000 monatlichen Credits des kostenlosen Tarifs reichen für etwa 500 Suchseiten. Antworten werden stundenlang zwischengespeichert, daher ist das Wiederholen einer Abfrage während der Entwicklung günstig.