Python SDK — whatsapp-data-sdk

WhatsApp Data API အတွက် တရားဝင် Python client။ စာရိုက်ထားသော တုံ့ပြန်မှုများ၊ တစ်ခုသော dependency (requests)၊ cache-first lookups နှင့် သန့်ရှင်းသော exception hierarchy။

၁ မှီခိုမှု
ရိုက်ထားသည် (py.typed)
npm SDK port
PyPIGitHub

တပ်ဆင်ပါ

pip install whatsapp-data-sdk

Python 3.8-3.13 ကို ပံ့ပိုးပေးထားပါသည်။ type-checker အပြည့်အဝ ပံ့ပိုးမှု (mypy, pyright) အတွက် py.typed marker နှင့်အတူ ပို့ဆောင်ပေးပါသည်။

အမြန်စတင်ခြင်း

from whatsapp_data_sdk import WhatsAppDataClient

client = WhatsAppDataClient(api_key="YOUR_KEY")  # sent as x-rapidapi-key

profile = client.get_profile("59898297150")
print(profile.get("exists"), profile.get("about"), profile.get("profilePic"))

အထောက်အထားစိစစ်ခြင်းနှင့် သယ်ယူပို့ဆောင်ခြင်း

သင့်သော့ကို x-rapidapi-key ဖြင့် အမြဲပို့ပေးပါသည်။ သယ်ယူပို့ဆောင်ရေးနှင့်အတူ တောင်းဆိုမှုများ မည်သည့်နေရာသို့ ပေးပို့မည်ကို ရွေးချယ်ပါ။

transportတိုက်ရိုက်တင်ဆက်သူကက်ရှ် / DB-သာ host
"proxy" (မူရင်း)whatsapp-proxy.checkleaked.cc/number_cache တူညီတဲ့ host မှာ
"rapidapi"wp-data.p.rapidapi.comwp-data-db-only.p.rapidapi.com
client = WhatsAppDataClient(api_key="RAPIDAPI_KEY", transport="rapidapi")

base_url၊ cache_base_url၊ rapidapi_host၊ rapidapi_cache_host မှတစ်ဆင့် URL များ/host များကို override လုပ်ပါ။

ကက်ရှ်ကို ဦးစွာရှာဖွေခြင်း (ငွေစုပါ)

check_cached() သည် cheap cache / DB-only endpoint ကို ဦးစွာဖတ်ပြီး အမှန်တကယ် လွဲချော်ပါက paid live check သို့သာ ပြန်လည်ရောက်ရှိစေသည်။

r1 = client.check_cached("59898297150")                  # cacheFirst (default)
print(r1["_source"])                                     # "cache" | "live"
r2 = client.check_cached("59898297150", mode="cacheOnly")  # never a live call
r3 = client.check_cached("59898297150", mode="live")       # always fresh

WhatsApp မှာ မပါတဲ့ authoritative cache လုပ်ထားတဲ့ record ဟာ hit အဖြစ် ရေတွက်ပါတယ် (အလဟဿ live re-check မလုပ်ရပါဘူး)။ တကယ့် NOT_IN_DATABASE miss တစ်ခုတည်းသာ live မှာ ကျရောက်ပါတယ်။

API ကိုးကားချက်

နည်းလမ်းတိုင်းသည် marketplace endpoint သို့ 1:1 ချိတ်ဆက်သည် - npm SDK နှင့် တူညီသော coverage၊ snake_case naming။

# Profile & pictures
client.get_profile(number, telegram=True, include_carrier=True)  # Get Profile Information
client.get_profile_no_picture(number)                            # (No profile pic)
pic = client.get_last_picture(number)                            # JPEG bytes -> pic.content, pic.to_data_uri()
client.get_device_count(number)                                  # Device count
client.get_osint_info(number)                                    # OSINT Info

# Breaches
client.get_phone_breaches(number, limit=50)                      # built-in (no external key)
client.get_phone_breaches_external(number, api_key="...")        # your checkleaked.cc key

# Search & database
client.search(country_code="UY", is_business=True, limit=20)     # Search
client.search_google_maps(latitude=-34.9, longitude=-56.16, radius=2000)  # Search in Google Maps
client.get_leaked_numbers_info()                                 # Leaked Numbers (500M) -> Drive link (MEGA tier)
client.download_entire_database()                                # Download the Entire DB -> Drive link (MEGA tier)

# Bulk
client.bulk_check(numbers)                                       # live (max 50)
client.bulk_check_db_basic(numbers)                              # DB basic (max 1000)
client.bulk_check_db_full(numbers)                                # DB full (max 1000)

# Telegram / carrier
client.get_telegram_profile("59898297150")                      # experimental
client.get_telegram_profile(["num1", "num2"])
client.carrier_lookup(number)                                    # Carrier Lookup
client.carrier_lookup_alt(number, page=2)                        # Carrier Lookup Alternative

"မတွေ့ပါ" သည် ဖြေရှင်းပေးသည် — ၎င်းသည် မပေါ်လာပါ

WhatsApp မှာမရှိတဲ့ နံပါတ်က ပုံမှန်ရလဒ်တစ်ခုဖြစ်တာကြောင့် ဒီအဖြေက (ဘယ်တော့မှ မတိုးလာပါဘူး) :

get_profile / get_profile_no_picture / check_cached သည် exists=False (နှင့် code=NUMBER_NOT_FOUND) ဖြင့် dict တစ်ခုကို ပြန်ပေးသည်။
ကိုက်ညီမှု သုညရှိသော ရှာဖွေမှုသည် ဗလာစာမျက်နှာတစ်ခုကို ပြန်ပေးသည် (success=False, data['docs'] == [])။
WhatsApp မဟုတ်သော နံပါတ်အတွက် get_device_count သည် success=False ကို ပြန်ပေးသည်။
p = client.get_profile("14155552671")
if not p.get("exists"):
    print("not on WhatsApp")

ဘာတွေတိုးလာစေသလဲ- invalid number (400), auth (401/403), rate limit (429), timeout, network, 5xx။

တောင်းဆိုမှုတစ်ခုချင်းစီအတွက် ရွေးချယ်စရာများ

နည်းလမ်းတိုင်းသည် timeout (စက္ကန့်) နှင့် ပြန်လည်ကြိုးစားမှုများကို လက်ခံသည်-

client.get_profile("59898297150", timeout=5, retries=0)

အမှားများ

ပျက်ကွက်မှုအားလုံးသည် WhatsAppDataError ၏ subclass တစ်ခုကို မြှင့်တင်ပေးသည်။

အတန်းဘယ်တော့လဲ
ValidationErrorမမှန်ကန်သော ငြင်းခုံမှုများ (မည်သည့်တောင်းဆိုမှုမတိုင်မီမဆို ထုတ်ဖော်ပြောဆိုခြင်း၊ .status မရှိခြင်း)။
AuthError၄၀၁ / ၄၀၃ — သော့ ပျောက်ဆုံး/မမှန်ကန်/စာရင်းသွင်းမှု ရပ်ဆိုင်းထားသည်။
RateLimitError၄၂၉ — ဆာဗာက Retry-After ပေးပို့သည့်အခါ .retry_after_ms ပါရှိသည်။
HttpError2xx မဟုတ်သော အခြားမည်သည့်အရာမဆို (ဥပမာ 400၊ 5xx) တွင် .status၊ .body ရှိသည်။
TimeoutErrorတောင်းဆိုချက်သည် အချိန်ကျော်လွန်သွားပါပြီ။
NetworkErrorသယ်ယူပို့ဆောင်ရေး ပျက်ကွက်ခြင်း။
WhatsAppDataErrorအခြေခံလူတန်းစား။
from whatsapp_data_sdk import AuthError, RateLimitError, WhatsAppDataError

try:
    client.get_profile("59898297150")
except AuthError:
    ...  # 401/403
except RateLimitError as e:
    print(e.retry_after_ms)
except WhatsAppDataError as e:
    print(e.status, e.body)

နှစ်ဆသုံးစွဲခြင်းကို ရှောင်ရှားရန်အတွက် POST များ (bulk_check, bulk_check_db_*) ကို အလိုအလျောက် ပြန်လည်ကြိုးစားခြင်း မပြုလုပ်ပါ။

ဖုန်းနံပါတ်ပုံစံများ

မည်သည့် format မဆို အလုပ်လုပ်ပါသည် — SDK သည် ပုံမှန်ဖြစ်အောင် ပြုလုပ်ပေးပြီး helper များကို export လုပ်ပါသည်-

from whatsapp_data_sdk import to_digits, to_e164
to_digits("+598 98 297 150")  # "59898297150"  (path & live endpoints)
to_e164("59898297150")        # "+59898297150" (bulk-DB endpoints require it)

ဆက်စပ်သော

ကျွန်ုပ်တို့ အသုံးပြုသူများ ပြောသည်များ

ကျွန်ုပ်တို့၏ ကျေနပ်သော ဖောက်သည်များမှ စစ်မှန်သော သုံးသပ်ချက်များ

4.5/5 (176 သုံးသပ်ချက်များ)