نسخهی ویندوزی اپ اندروید Chand، بهعنوان یک کارت شناور همیشه روی صفحه (widget) که قیمت ۳ نماد رو نشون میده. کلیک روی کارت، پنجرهی اصلی برنامه رو باز میکنه که همهی نمادها رو با قیمت لحظهای نشون میده و میتونی انتخاب کنی کدوم ۳ تا تو ویجت باشن.
این پوشه یک سابپروژهی مستقل پایتونی/PySide6 هست، کنار پروژهی اصلی اندروید (Kotlin/Gradle) تو همین ریپو.
pip install -r requirements.txt
python main.pyروی ویندوز باید همین دو خط رو تو PowerShell یا CMD (با Python 3.10+ نصبشده) اجرا کنی.
- ویجت شناور: بدون کادر، همیشه روی صفحه، گوشهی بالا-راست دسکتاپ. با موس قابل جابجاییه (کلیک و بکش)؛ موقعیتش ذخیره میشه.
- کلیک ساده روی ویجت → پنجرهی اصلی باز میشه.
- راستکلیک روی ویجت → منو: بهروزرسانی، باز کردن برنامه، همیشه روی صفحه، اجرا هنگام روشن شدن ویندوز، خروج.
- آیکون تو System Tray (کنار ساعت ویندوز) → کلیک تک برای نمایش/مخفی کردن ویجت، راستکلیک برای منو کامل.
- پنجرهی اصلی: بالا سهتا combo box برای انتخاب نماد هر ردیف ویجت، پایینش لیست کامل همهی نمادها با قیمت زنده و جستجو.
این کار حتماً باید روی خود ویندوز انجام بشه — PyInstaller باینری مخصوص همون سیستمعاملی که روش اجرا میشه رو تولید میکنه، نه کراسکامپایل.
سادهترین راه:
build.batیا دستی:
pip install -r requirements.txt pyinstaller
pyinstaller build.specفایل خروجی تو dist\ChandWidget.exe قرار میگیره. همون فایل رو هرجا بخوای کپی کن و اجرا کن — نیازی به نصب پایتون روی سیستم مقصد نیست.
آیکون برنامه (تو تری، تسکبار و پنجرهی اصلی) از chandwidget/resources/icon.ico خونده میشه و build.spec هم بهعنوان datas و هم بهعنوان آیکون exe به PyInstaller معرفیش میکنه، پس هم فایل exe خودش آیکون داره و هم برنامه در زمان اجرا (چه از سورس، چه از exe فریزشده) پیداش میکنه.
از منوی راستکلیک ویجت گزینهی «اجرا هنگام روشن شدن ویندوز» رو بزن. این یک مقدار تو ثبت مسیر زیر ست میکنه (نیازی به دسترسی ادمین نداره):
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
windows/
main.py ← نقطهی ورود
build.spec ← فایل PyInstaller
build.bat ← اسکریپت خودکار ساخت exe
requirements.txt
chandwidget/
registry.py ← عیناً پورتشده از PriceItem.kt/PriceRegistry.kt (همون کلیدها، همون ترتیب)
formatter.py ← عیناً پورتشده از Formatter.kt (فرمت قیمت/تغییر، ارقام فارسی، shortLabel)
api.py ← عیناً پورتشده از TgjuApi.kt (همون endpointها) + فالبک SSL برای شبکههای فیلترشده
settings.py ← معادل Prefs.kt، ولی بهجای SharedPreferences یک JSON تو %APPDATA%\ChandWidget\
refresh.py ← گرفتن قیمتها تو ترد جدا، بدون فریز شدن UI
widget_window.py ← خود کارت شناور
main_window.py ← پنجرهی اصلی با لیست کامل و انتخابگر ۳ ردیف
app.py ← اتصال همهچیز به هم + آیکون Tray
resources/
icon.ico
icon.png