Python SDK
Client Python ufficiale per Listings API con risorse tipizzate, paginazione a cursore, tentativi automatici ed errori con nomi specifici.
Il pacchetto listingsapi è il client Python ufficiale per Listings API. Incapsula il livello REST con classi di risorse tipizzate, paginazione basata su cursori, tentativi automatici in caso di errori temporanei e un'eccezione specifica per ogni tipo di errore, inclusi i payload di errore che la piattaforma restituisce con HTTP 200.
Installazione
pip install listingsapiRichiede Python 3.9 o versioni successive. L'unica dipendenza in fase di esecuzione è requests.
Autenticazione
import listingsapi # Reads LISTINGSAPI_KEY from the environment automaticallyclient = listingsapi.ListingsAPI() # Or pass the key explicitlyclient = listingsapi.ListingsAPI(api_key="your-api-key")Ottieni la tua chiave API da Chiavi API → Nuova chiave nella dashboard per sviluppatori di Listings API.
Il client accetta tre argomenti opzionali per parola chiave:
Consulta Configurazione per i dettagli.
Esempio rapido
import listingsapi client = listingsapi.ListingsAPI() page = client.locations.list(first=5)for loc in page: print(loc.name, loc.city) print(f"has_more: {page.has_more}")Risorse
Ogni risorsa è una proprietà del client:
Quattro metodi di supporto sono disponibili direttamente sul client:
client.plan_sites() # directories included in your planclient.subcategories() # business categories (IDs for locations.add)client.countries() # supported countries and states (ISO codes)client.subscriptions() # active subscriptions for the accountPaginazione
I metodi che restituiscono elenchi usano la paginazione basata su cursori. Ogni metodo con paginazione restituisce un oggetto SyncPage: iterabile, con .has_more, .next_page(), .auto_paging_iter() e .total.
# Fetch one pagepage = client.locations.list(first=25)for loc in page: print(loc.name) # Check if more pages existif page.has_more: next_page = page.next_page() # Auto-paginate through every resultfor loc in client.locations.list(first=100).auto_paging_iter(): print(loc.name)Oggetti di risposta
Tutti i metodi restituiscono APIObject (accesso tramite attributi e dizionario) o SyncPage (iterabile, con paginazione). APIObject supporta anche .get() e .to_dict().
loc = client.locations.retrieve(16808) # Attribute accessprint(loc.name)print(loc.city) # Dict-style accessprint(loc["stateIso"]) # Safe access with a defaultprint(loc.get("website", "no website")) # Raw dictdata = loc.to_dict()Gestione degli errori
Ogni errore dell'SDK deriva da listingsapi.ListingsAPIError. Gli errori dell'API sollevano APIError o una delle sue sottoclassi: AuthenticationError, PermissionDeniedError, NotFoundError, ValidationError, RateLimitError (con .retry_after) e InternalServerError. Gli errori di rete sollevano APIConnectionError.
APIError contiene status_code, code (il primo codice di errore della piattaforma, e.g. SY10005), errors (ogni voce normalizzata in dizionari {"code", "message", "context"}) e response_body.
La piattaforma segnala alcuni errori nel corpo di una risposta HTTP 200: payload errors[] al livello principale (i token non validi vengono restituiti come SY90005) e risposte alle operazioni di scrittura con success=false. L'SDK solleva eccezioni anche in questi casi, quindi non devi mai controllare personalmente i flag success.
import listingsapi client = listingsapi.ListingsAPI() try: client.locations.retrieve(999999)except listingsapi.NotFoundError: print("No such location")except listingsapi.RateLimitError as e: print(f"Rate limited, retry in {e.retry_after}s")except listingsapi.APIError as e: print(e.status_code, e.code) for err in e.errors: print(err["code"], err["message"])Consulta Gestione degli errori per la gerarchia completa delle eccezioni.
Passaggi successivi
- Installazione: ambienti virtuali, vincoli a versioni specifiche
- Guida rapida: prime chiamate, creazione di una sede, risposta a una recensione
- Configurazione: timeout, tentativi, URL di base
- Casi d'uso: procedure complete
- Sedi, Recensioni, Schede, Analisi