برنامه ارسال قیمت دلار با پایتون!
توی این آموزش میخوایم با پایتون یه اسکریپت بنویسیم که هر ۵ دقیقه قیمت دلار رو بررسی کنه و اگه با قیمت قبلی فرق داشت، بهصورت خودکار قیمت جدید رو از طریق واتساپ برامون بفرسته! این برنامه از یه پکیج استفاده میکنه که خودم نوشتمش به اسم gheymat و وظیفهش اینه که قیمت دلار، طلا، ارزهای دیجیتال و... رو بگیره.
در کل سطح این آموزش متوسط هست، و برای کسایی که با پایتون آشنا هستن و میخوان پروژههای کاربردی واقعی بسازن خیلی مناسبه.
1. برای شروع ما نیاز به نصب کتابخانههایی داریم که قراره باهاشون کار کنیم. یکیش پکیج خودم قیمت و یکیش pywhatkit پس توی ترمینال یا CMD بنویسید:
pip install gheymat pywhatkit
2. حالا یه فایل پایتون جدید بسازید (مثلا dollar_notifier.py) و کتابخانههای لازم رو ایمپورت کنید:
import time from gheymat.currency import USD import pywhatkit
3. ما میخوایم هر بار قیمت جدید رو بگیریم و با قیمت قبلی مقایسه کنیم. پس یه متغیر خالی به اسم last_price تعریف میکنیم:
last_price = None
4. حالا یه حلقهی بینهایت (while True) مینویسیم تا هر ۵ دقیقه برنامه قیمت رو بررسی کنه:
while True:
توجه: از اینجا به بعد تمام کدها رو داخل همین حلقه بنویسید.
5. پکیج gheymat یه تابع به اسم USD داره که قیمت لحظهای دلار رو برمیگردونه. ما میتونیم تنظیم کنیم که قیمت به تومان باشه یا ریال، و فرمتش زیبا باشه یا نه. اینجا به شکل ساده ازش استفاده میکنیم:
current_price = USD(toman=True, beauty=False)
6. اگر اولین بار هست که برنامه اجرا میشه، فقط قیمت فعلی رو چاپ و ارسال میکنیم. اما اگر قیمت جدید با قبلی فرق داشته باشه، یعنی قیمت تغییر کرده، پس باید پیام جدید بفرستیم. فرستادن پیام هم با pywhatkit.sendwhatmsg_instantly هستش. اما پیشنهاد میکنم داکیومنتهای pywhatkit رو هم بخونید چون چیزای بیشتری داره:
if last_price is None: message = f"قیمت دلار: {current_price}" print(message) pywhatkit.sendwhatmsg_instantly( phone_no="", message=message, wait_time=10 ) elif current_price != last_price: message = f"قیمت دلار تغییر کرد، قیمت جدید: {current_price}" print(message) pywhatkit.sendwhatmsg_instantly( phone_no="", message=message, wait_time=10 )
نکته: بهجای phone_no شماره خودتون رو بذارید به فرمت بینالمللی مثل +989XXXXXXXXX.
7. در انتهای هر بار اجرای حلقه، باید قیمت فعلی رو به عنوان قیمت قبلی ذخیره کنیم تا دفعه بعد بتونیم مقایسه کنیم:
last_price = current_price
8. با تابع time.sleep() میتونیم تعیین کنیم که هر چند ثانیه یه بار برنامه دوباره بررسی کنه. اینجا هر ۵ دقیقه (۳۰۰ ثانیه) یک بار بررسی انجام میشه:
time.sleep(300)
حالا چند تا نکته، برای اینکه این برنامه کار بکنه، باید واتساپ وب شما فعال باشه. اما اگر خواستین میتونید این کد رو تغییر بدین و کاری کنید که هر بار قیمتها توی یه فایل CSV یا دیتابیس sqlite ذخیره بشه و بعد نمودار کشیده بشه و... امیدوارم براتون مفید بوده باشه.