ابزاری کوچک و پایتونی برای ایجاد ریلیز، آپلود APK/AAB، و Commit در پیشخوان بازار با استفاده از API رسمی Pishkhan.
هستهی پروژه: یک کلاس پایتونی با پوشش تمام متدهای مستند، بههمراه CLI ساده برای اجرا در CI/CD.
- ویژگیها
- پیشنیازها
- گرفتن توکن از پیشخوان
- نصب
- استفاده سریع (CLI)
- استفاده در کد پایتون
- جریانهای متداول
- نکات و خطاهای رایج
- مجوز
- هدر احراز هویت صحیح:
CAFEBAZAAR-PISHKHAN-API-SECRET
- Endpointهای رسمی (نسخهٔ v1) با Base URL:
https://api.pishkhan.cafebazaar.ir/v1
- پوشش کامل متدها:
POST /apps/releases/
ایجاد ریلیز DraftGET /apps/releases/last-uncommitted/
GET /apps/releases/last-committed/
GET /apps/releases/last-published/
POST /apps/releases/upload/
آپلود APK (multipart با فیلدهایapk
وarchitecture
)POST /apps/releases/upload-aab/
آپلود AABPOST /apps/releases/upload-bin/
آپلود BIN مرتبط با AABGET /apps/releases/bundle-status/
وضعیت پردازش باندل (AAB)POST /apps/releases/commit/
کامیت نهایی باauto_publish
وstaged_rollout_percentage
و changelogها
معماریهای معتبر برای APK:
all
،armeabi-v7a
،arm64-v8a
.
- Python 3.8+
- کتابخانهی
requests
۱. وارد حساب توسعهدهندگان کافهبازار شوید و به پیشخوان برنامهی موردنظر بروید.
۲. بخش API پیشخوان (Pishkhan API) را باز کنید.
۳. یک توکن مخصوص همان اپلیکیشن بسازید/بردارید.
۴. مقدار توکن را امن نگهدارید (Secrets/CI).
۵. در فراخوانیهای API، این مقدار را در هدر زیر ارسال میکنیم:
CAFEBAZAAR-PISHKHAN-API-SECRET: <YOUR_APP_TOKEN>
توجه: این توکن اپ-اسکوپ است؛ برای هر اپ، توکن جداگانه لازم است.
pip install -e .
یا فقط وابستگیها:
pip install -r requirements.txt
export BAZAAR_API_SECRET="توکن-پیشخوان"
python -m pishkhan_client.cli \
--apk app-release.apk \
--architecture all \
--fa "بهبود عملکرد" \
--en "Performance improvements" \
--note "CI deploy" \
--rollout 100 \
--auto-publish
export BAZAAR_API_SECRET="توکن-پیشخوان"
python -m pishkhan_client.cli \
--aab app-release.aab \
--bin app-release.bin \
--fa "بهبود عملکرد" \
--en "Performance improvements" \
--note "CI deploy" \
--rollout 100 \
--auto-publish
در حالت AAB، اسکریپت بعد از آپلود AAB و BIN میتواند وضعیت پردازش باندل را با
bundle-status
پول کند و بعد Commit کند.
from pishkhan_client.client import PishkhanClient
token = "YOUR_APP_TOKEN" # از پیشخوان
cli = PishkhanClient(token)
# APK
cli.release_apk(
apk_path="app-release.apk",
architecture="all",
changelog_fa="بهبود پایداری",
changelog_en="Stability improvements",
developer_note="CI",
rollout=100,
auto_publish=True,
)
# یا AAB + BIN
cli.release_aab(
aab_path="app-release.aab",
bin_path="app-release.bin",
changelog_fa="ویژگیهای جدید",
changelog_en="New features",
developer_note="CI",
rollout=50,
auto_publish=True,
poll=True, # صبر برای اتمام پردازش باندل
poll_every_sec=60,
)
-
آپلود APK و انتشار فوری (Auto Publish):
last-uncommitted
→ نبود؟create_release
upload
(APK)commit
باauto_publish=true
وstaged_rollout_percentage=100
-
آپلود AAB/BIN و انتشار مرحلهای (Staged Rollout):
last-uncommitted
→ نبود؟create_release
upload-aab
+upload-bin
bundle-status
تاstate == "D"
commit
باstaged_rollout_percentage=10
→ بعداً به 100 ارتقاء دهید
- 401/403: توکن اشتباه/برای اپ دیگر است. هدر باید دقیقاً
CAFEBAZAAR-PISHKHAN-API-SECRET
باشد. - 429: محدودیت نرخ. کمی تأخیر/Backoff بگذارید.
- فرمتها: در آپلود، نوع محتوا برای APK
application/vnd.android.package-archive
و برای AAB/BINapplication/octet-stream
است. - AAB: بعد از آپلود AAB/BIN، تا آماده شدن باندل صبر کنید (
bundle-status
).
MIT