Python SDK
Tür tanımlı kaynaklar, imleç tabanlı sayfalama, otomatik yeniden denemeler ve adlandırılmış hatalar sunan resmî Listings API Python istemcisi.
listingsapi paketi, Listings API için resmi Python istemcisidir. REST katmanını; tür tanımlı kaynak sınıfları, imleç tabanlı sayfalama, geçici hatalarda otomatik yeniden deneme ve platformun HTTP 200 ile döndürdüğü hata içerikleri dahil her hata durumu için adlandırılmış bir istisna ile sunar.
Kurulum
pip install listingsapiPython 3.9 veya üzerini gerektirir. Tek çalışma zamanı bağımlılığı requests paketidir.
Kimlik doğrulama
import listingsapi # Reads LISTINGSAPI_KEY from the environment automaticallyclient = listingsapi.ListingsAPI() # Or pass the key explicitlyclient = listingsapi.ListingsAPI(api_key="your-api-key")API anahtarınızı Listings API geliştirici kontrol panelindeki API Keys → New key bölümünden alın.
İstemci, isteğe bağlı üç anahtar sözcük argümanı alır:
Ayrıntılar için Yapılandırma bölümüne bakın.
Kısa örnek
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}")Kaynaklar
Her kaynak, istemcinin bir özelliğidir:
İstemcinin kendisinde dört yardımcı metot bulunur:
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 accountSayfalama
Liste döndüren metotlar imleç tabanlı sayfalama kullanır. Sayfalama kullanan her metot, üzerinde yineleme yapılabilen ve .has_more, .next_page(), .auto_paging_iter() ve .total içeren bir SyncPage döndürür.
# 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)Yanıt nesneleri
Tüm metotlar APIObject (öznitelik ve dict erişimi) veya SyncPage (üzerinde yineleme yapılabilen, sayfalanmış) döndürür. APIObject ayrıca .get() ve .to_dict() desteği sunar.
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()Hata işleme
Her SDK hatası listingsapi.ListingsAPIError sınıfından türetilir. API hataları, APIError istisnasını veya alt sınıflarından birini oluşturur: AuthenticationError, PermissionDeniedError, NotFoundError, ValidationError, RateLimitError (.retry_after ile) ve InternalServerError. Ağ hataları APIConnectionError istisnasını oluşturur.
APIError; status_code, code (platformun ilk hata kodu, e.g. SY10005), errors (her öğe {"code", "message", "context"} sözlüklerine dönüştürülerek standartlaştırılmıştır) ve response_body içerir.
Platform bazı hataları HTTP 200 yanıt gövdesinde bildirir: üst düzey errors[] içerikleri (geçersiz token'lar SY90005 olarak döner) ve success=false içeren yazma yanıtları. SDK bu durumlarda da istisna oluşturur, böylece success bayraklarını kendiniz kontrol etmeniz gerekmez.
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"])İstisna hiyerarşisinin tamamı için Hata işleme bölümüne bakın.
Sonraki adımlar
- Kurulum: sanal ortamlar, sürüm sabitleme
- Hızlı başlangıç: ilk çağrılar, konum oluşturma, yoruma yanıt verme
- Yapılandırma: zaman aşımları, yeniden denemeler, temel URL
- Kullanım senaryoları: baştan sona uygulama örnekleri
- Konumlar, Yorumlar, İşletme kayıtları, Analizler