به اولین مقاله در یک سری مقاله در مورد پروژه های پایتون برای مبتدیان خوش آمدید!
در این آموزش می خواهیم یک سرویس اعلان قیمت بیت کوین بسازیم -
در طی این پروژه ، شما در مورد درخواست های HTTP و نحوه ارسال آنها با استفاده از بسته درخواست (نامگذاری شده مناسب) آشنا خواهید شد.
شما می خواهید در مورد Webhooks و چگونگی استفاده از آنها برای اتصال برنامه Python خود به خدمات خارجی ، مانند اعلان های تلفن یا پیام های تلگرام استفاده کنید.
با کد نسبتاً کمی (~50 خط) شما می خواهید به یک سرویس اطلاع رسانی قیمت بیت کوین تمام عیار برسید که به راحتی در سایر ارزها و خدمات رمزنگاری قابل گسترش خواهد بود.
بنابراین بیایید درست در آن پرش کنیم:
اعلان های قیمت بیت کوین با پایتون
همانطور که همه ما می دانیم ، قیمت بیت کوین یک چیز ناخوشایند است. شما هرگز نمی دانید که در پایان روز کجا خواهد بود. بنابراین ، به جای اینکه دائماً سایتهای مختلفی را برای آخرین به روزرسانی ها بررسی کنید ، اجازه دهید یک برنامه Python را برای انجام کار برای شما بسازیم.
برای این کار ، ما می خواهیم از وب سایت محبوب اتوماسیون IFTTT استفاده کنیم. ifttt ("اگر این ، پس از آن") یک سرویس وب است که شکاف بین برنامه ها و دستگاه های مختلف را به وجود می آورد.
ما قصد داریم دو اپلت IFTTT ایجاد کنیم:
- یکی برای اعلان اضطراری هنگامی که قیمت بیت کوین تحت یک آستانه خاص قرار می گیرد. وت
- دیگری برای به روزرسانی های معمولی تلگرام در مورد قیمت بیت کوین.
هر دو توسط برنامه Python ما ساخته می شوند که داده های API CoinmarketCap را مصرف می کنند.
یک اپلت IFTTT از دو بخش تشکیل شده است: یک ماشه و یک عمل.
در مورد ما ، ماشه یک سرویس Webhook خواهد بود که توسط IFTTT ارائه می شود. شما می توانید از Webhooks به عنوان "تماس های تعریف شده توسط کاربر HTTP" فکر کنید و می توانید اطلاعات بیشتری در مورد آنها در اینجا بخوانید.
برنامه Python ما درخواست HTTP را به URL Webhook URL ارائه می دهد که باعث ایجاد یک عمل می شود. اکنون ، این بخش سرگرم کننده است - این عمل تقریباً هر چیزی است که شما می خواهید. IFTTT اقدامات زیادی مانند ارسال ایمیل ، به روزرسانی صفحه گسترده Google و حتی تماس با تلفن خود را ارائه می دهد.
تنظیم پروژه
بیایید با تنظیم یک محیط مجازی شروع کنیم. این دستور را اجرا کنید تا یک محیط مجازی جدید Python 3 را بدست آورید:
قبل از ادامه ، شما باید محیط مجازی را فعال کرده و وابستگی های لازم را نصب کنید:
می توانید با اجرای دستور غیرفعال Shell ، محیط مجازی را غیرفعال کنید.
بازیابی قیمت بیت کوین
وقت آن است که دستان خود را کثیف کنیم. ما می توانیم با دریافت آخرین قیمت از API CoinmarketCap در کنسول پایتون شروع کنیم:
ابتدا باید ماژول درخواست ها را وارد کنیم و متغیر Bitcoin_API_URL را که شامل URL API CoinmarketCap برای بیت کوین است تعریف کنیم.
در مرحله بعد ، ما با استفاده از تابع ReaseS. get () درخواست HTTP را به URL ارسال می کنیم و پاسخ را ذخیره می کنیم. از آنجا که API پاسخ JSON را برمی گرداند ، می توانیم با فراخوانی عملکرد . json () در پاسخ ، آن را به یک شی پایتون تبدیل کنیم. همانطور که مشاهده می کنید ، API لیستی را با یک عنصر حاوی داده های قیمت بیت کوین برگرداند:
ملکی که ما به آن علاقه مند هستیم "Price_USD" است - قیمت بیت کوین به دلار آمریکا.
ارسال اعلان IFTTT آزمایش
اکنون می توانیم به سمت IFTTT چیزها حرکت کنیم. برای استفاده از IFTTT ابتدا باید یک حساب جدید تنظیم کنید و برنامه تلفن همراه آنها را نصب کنید (اگر می خواهید اعلان های تلفنی را از برنامه Python خود دریافت کنید). پس از تنظیم این کار ، ما می خواهیم یک اپلت IFTTT جدید برای اهداف آزمایش ایجاد کنیم.
برای ایجاد یک اپلت تست جدید این مراحل را دنبال کنید:
- روی دکمه بزرگ "این" کلیک کنید
- سرویس "Webhooks" را جستجو کنید و ماشه "دریافت درخواست وب" را انتخاب کنید
- بیایید نام رویداد test_event را نامگذاری کنیم
- اکنون دکمه بزرگ "آن" را انتخاب کنید
- سرویس "اعلان ها" را جستجو کنید و "ارسال اعلان از برنامه IFTTT" را انتخاب کنید
- پیام را تغییر دهید تا من اولین عمل IFTTT خود را تحریک کنم! و روی "ایجاد عمل" کلیک کنید
- روی دکمه "پایان" کلیک کنید و ما تمام شده ایم
برای دیدن مستندات در مورد نحوه استفاده از IFTTT Webhooks به این صفحه بروید و روی دکمه "اسناد" در گوشه بالا سمت راست کلیک کنید. صفحه اسناد شامل URL Webhook است و به نظر می رسد:
در مرحله بعد ، هنگام ایجاد اپلت ، باید قسمت را با هر نامی که در مرحله 3 به ما داده اید جایگزین کنید. این قسمت از قبل با کلید IFTTT شما جمع شده است.
اکنون URL Webhook را کپی کرده و یک کنسول پایتون دیگر را شروع کنید. مجدداً ماژول درخواست ها را وارد می کنیم و متغیر URL Webhook را تعریف می کنیم. اکنون ما فقط باید با استفاده از URL IFTTT Webhook URL با استفاده از عملکرد Arequests. Post () درخواست ارسال HTTP را ارسال کنیم:
پس از اجرای خط آخر باید یک اعلان را در تلفن خود مشاهده کنید:

ایجاد اپلت های IFTTT
اکنون ما در نهایت برای قسمت اصلی آماده هستیم. قبل از شروع با کد ، باید دو اپلت IFTTT جدید ایجاد کنیم: یکی برای اعلان های قیمت بیت کوین اضطراری و دیگری برای به روزرسانی های منظم.
اپلت اعلان قیمت بیت کوین اضطراری:
- سرویس "Webhooks" را انتخاب کنید و ماشه "دریافت درخواست وب" را انتخاب کنید
- رویداد bitcoin_price_emergency را نام ببرید
- برای عمل ، سرویس "اعلان ها" را انتخاب کنید و "ارسال یک اعلان غنی از برنامه IFTTT" را انتخاب کنید
- به آن عنوانی بدهید ، مانند "اضطراری قیمت بیت کوین!"
- Set the message to Bitcoin price is at $>. Buy or sell now! (we’ll retu to the>قسمت بعد)
- به صورت اختیاری می توانید یک URL پیوند به صفحه Bitcoin CoinmarketCap اضافه کنید: https://coinmarketcap.com/currencies/bitcoin/
- عمل را ایجاد کنید و تنظیم اپلت را تمام کنید
به روزرسانی قیمت معمولی اپلت:
- دوباره سرویس "Webhooks" را انتخاب کرده و ماشه "دریافت یک درخواست وب" را انتخاب کنید
- رویداد bitcoin_price_update را نام ببرید
- برای عمل ، سرویس "Telegram" را انتخاب کنید و عمل "ارسال پیام" را انتخاب کنید
- Set the message text to: Latest bitcoin prices:>
- عمل را ایجاد کنید و با اپلت به پایان برسید
توجه: هنگام ایجاد این اپلت ، باید به Bot Telegram IFTTT اجازه دهید.
همه اش را بگذار کنار هم
اکنون که ما از این راه خارج شده ایم ، اجازه دهید برنامه نویسی را شروع کنیم! شما با ایجاد اسکلت برنامه استاندارد خط فرمان پایتون که در زیر نشان داده شده است ، شروع می کنید. این کد را بگیرید و آن را در پرونده ای به نام bitcoin_notifications. py ذخیره کنید:
در مرحله بعد ، ما باید دو جلسه کنسول Python قبلی را به دو کارکرد ترجمه کنیم که آخرین قیمت بیت کوین را برمی گرداند و به ترتیب به وب IFTTT ارسال می شود. توابع زیر را بالاتر از عملکرد اصلی اضافه کنید:
GET_LATEST_BITCOIN_PRICE تقریباً یکسان است ، به جز بخشی که باید قیمت را از یک رشته به شماره نقطه شناور تبدیل کنیم. post_ifttt_webhook دو پارامتر را در بر می گیرد: رویداد و مقدار.
پارامتر رویداد با هر نام رویدادی که هنگام تنظیم اپلت IFTTT به ماشه خود داده ایم مطابقت دارد. همچنین ، Webhooks IFTTT به ما امکان می دهد تا داده های اضافی را به همراه درخواست به عنوان داده های فرمت JSON ارسال کنیم.
That’s why we need the value parameter: When setting up our applets we left a>در قسمتهای پیام ما برچسب بزنید. این برچسب با متن "Value1" از JSON Payload جایگزین می شود. تابع Areads. Post () به ما امکان می دهد داده های JSON اضافی را فقط با افزودن کلمه کلیدی JSON ارسال کنیم.
اکنون می توانیم در عملکرد اصلی به هسته اصلی برنامه خود برویم. این شامل یک حلقه واقعی است زیرا ما می خواهیم برنامه ما برای همیشه اجرا شود. در حلقه ما با API CoinmarketCap تماس خواهیم گرفت تا آخرین قیمت بیت کوین را بدست آوریم و تاریخ و زمان فعلی را ثبت کنیم.
براساس قیمت فعلی ما تصمیم خواهیم گرفت که آیا می خواهیم یک اعلان اضطراری ارسال کنیم. برای به روزرسانی های معمولی تلگرام ما نیز قیمت و تاریخ فعلی را به لیست Bitcoin_history اضافه خواهیم کرد. پس از رسیدن لیست به تعداد مشخصی از موارد (به عنوان مثال 5) ما موارد را قالب بندی می کنیم ، به روزرسانی را به تلگرام ارسال می کنیم و تاریخچه را برای به روزرسانی های بعدی تنظیم می کنیم.
وای! همانطور که می بینید، چیزهای زیادی در این برنامه در حال انجام است. اگر در پیروی از کدهایی که تاکنون دریافت کرده ایم مشکل دارید، سریع استراحت کنید و بخش بالا را دوباره به آرامی بخوانید. این چیزها آسان نیست، بنابراین وقت خود را صرف کنید و نگران این نباشید که در اولین بار همه چیز را کامل کنید.
نکته مهم این است که به دو دلیل از ارسال بیش از حد این درخواست ها خودداری کنید:
- API Coinmarketcap بیان می کند که آنها داده ها را فقط یک بار در هر 5 دقیقه به روزرسانی می کنند، بنابراین بارگذاری مجدد آخرین اطلاعات قیمت گذاری بیشتر از آن فایده ای ندارد.
- اگر برنامه شما درخواست های زیادی به Coinmarketcap API ارسال کند ممکن است IP شما مسدود یا موقتاً معلق شود.
به همین دلیل است که قبل از دریافت اطلاعات جدید، باید حداقل 5 دقیقه "به خواب برویم" (اجرای حلقه را متوقف کنیم). کد زیر تمام ویژگی های مورد نیازی که در بالا بیان کردم را پیاده سازی می کند:
ما تقریباً تمام شده ایم! تنها چیزی که کم است تابع format_bitcoin_history است. بیت کوین_history را به عنوان یک آرگومان می گیرد و با استفاده از برخی از تگ های HTML اساسی مجاز تلگرام مانند،، و غیره آن را قالب بندی می کند. این تابع را در بالای تابع اصلی کپی کنید:
نتیجه نهایی باید در گوشی شما به این صورت باشد:

برای اجرای برنامه اطلاع رسانی قیمت، موارد زیر را در ترمینال خط فرمان خود اجرا کنید:
خودشه! در کمی بیش از 50 خط کد پایتون، شما سرویس اطلاع رسانی بیت کوین خود را ایجاد کرده اید. تبریک می گویم! در زیر من کل کد را اضافه کرده ام تا بتوانید مقایسه کنید و ببینید آیا چیزی را از دست داده اید:
تجارت با گزینههای باینری...
ما را در سایت تجارت با گزینههای باینری دنبال می کنید
برچسب :
نویسنده : نازنین فراهانی
بازدید : 42
تاريخ : سه
شنبه
16 خرداد
1402 ساعت: 21:51