本文作者:Python中文社區,它作爲一個去中心化的全球技術社區,以成爲全球20萬Python中文開發者的精神部落爲願景,目前覆蓋各大主流媒體和協作平臺,與阿里、騰訊、百度、微軟、亞馬遜、開源中國、CSDN等業界知名公司和技術社區建立了廣泛的聯繫,擁有來自十多個國家和地區數萬名登記會員,會員來自以工信部、清華大學、北京大學、北京郵電大學、中國人民銀行、中科院、中金、華爲、BAT、谷歌、微軟等爲代表的政府機關、科研單位、金融機構以及海內外知名公司,全平臺近20萬開發者關注。
---正文---
4月30日比特幣價格持續上漲,突破9400美元關口,24小時漲幅17.42%。比特幣在2020年年內實現了26.33%的上漲,年初至今漲幅已超過黃金。事實上,自“312”大跌後,比特幣的價格上漲了130%以上,價格回升遠遠超過了美股道瓊斯工業平均指數(Dow)。
當比特幣價格下跌時,需要收到價格提醒以便進行買多操作,下面我們來創建的一個簡單的 Python 應用程序來實現這一功能,當該應用程序的比特幣價格低於指定數量時,會向您發送一封比特幣價格預警電子郵件。
在本教程中,您將學習:
用 Python 發送電子郵件
從 coinbase 交易所 API 中提取數據
用 Python 在終端中隱藏密碼
在
Time
模塊中使用超時功能
應用程序概述
1、要求您輸入以下內容:姓名,電子郵件地址(僅gmail),密碼,向其發送警報的電子郵件地址,以及要被預警的比特幣價格。
2、接下來,它將檢查Coinbase API的當前價格(每分鐘更新一次)。
3、如果不低於您指定的價格,它將在5分鐘內再次檢查。
4、如果它低於您指定的價格,它將向您發送電子郵件警報,並在3分鐘內再次檢查。
代碼實現原理
您必須在Google設置中允許使用不太安全的應用。只需將此功能設置爲“開”。如果您有使用雙重驗證,則無法執行此操作。
現在開始,首先插入一些必需的 Python 模塊:
requests – 獲取 API 數據
time – 設置5分鐘超時功能
email.mime & smtplib – 發送郵件
getpass – 輸入密碼時將其隱藏
import requests
import time
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
import getpass
接下來,我們創建一個名爲send_email()的函數來發送電子郵件,每個部分都有註釋說明:
def send_email():
# 創建消息對象實例
msg = MIMEMultipart()
# 消息的參數
password = your_password
msg['From'] = your_email
msg['To'] = send_email_to
msg['Subject'] = "比特幣價格預警!"
# 郵件信息
message = your_name + "\n比特幣價格現在是" + str(bitcoin_rate) + "!請執行加倉操作!\n"
# 從前面的變量中添加消息
msg.attach(MIMEText(message, 'plain'))
# 創建 gmail server
server = smtplib.SMTP('smtp.gmail.com: 587')
server.starttls()
# 發送郵件的登錄信息
server.login(msg['From'], password)
# 發送消息
server.sendmail(msg['From'], msg['To'], message)
server.quit()
# 打印到控制檯
print("成功發送郵件給%s:" % (msg['To']))
print("比特幣價格爲" + str(bitcoin_rate))
接下來,我們創建用戶輸入以獲取預期數據並將其保存到適當的變量中。
# 用戶輸入
your_name = input('輸入您的名字: ')
your_email = input('輸入您的服務器郵件地址 (僅gmail): ')
your_password = getpass.getpass()
send_email_to = input('輸入您發送的郵件地址: ')
alert_amount = input('當比特幣價格低於多少時執行預警: ')
然後,我們可以創建一個while
循環,它將進行以下操作:
1.檢查當前的比特幣價格。
2.如果超出您指定的價格,它將在5分鐘後再次檢查。
3.如果它低於您指定的價格,它將運行程序發送電子郵件並在3分鐘內再次檢查。
while True:
url = "https://api.coindesk.com/v1/bpi/currentprice.json"
response = requests.get(
url,
headers={"Accept": "application/json"},
)
data = response.json()
bpi = data['bpi']
USD = bpi['USD']
bitcoin_rate = int(USD['rate_float'])
if bitcoin_rate < int(alert_amount):
send_email()
print('將在3分鐘後再次檢查,按 Ctrl + C 退出!')
time.sleep(180)
else:
time.sleep(300)
print('比特幣當前價格是' + str(bitcoin_rate) + '。將在5分鐘後再次檢查,按 Ctrl + C 退出!')
完整代碼
import requests
import time
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
import getpass
def send_email():
# 創建消息對象實例
msg = MIMEMultipart()
# 消息的參數
password = your_password
msg['From'] = your_email
msg['To'] = send_email_to
msg['Subject'] = "比特幣價格預警!"
# 郵件信息
message = your_name + "\n比特幣價格現在是" + str(bitcoin_rate) + "!請執行加倉操作!\n"
# 從前面的變量中添加消息
msg.attach(MIMEText(message, 'plain'))
# 創建 gmail server
server = smtplib.SMTP('smtp.gmail.com: 587')
server.starttls()
# 發送郵件的登錄信息
server.login(msg['From'], password)
# 發送消息
server.sendmail(msg['From'], msg['To'], message)
server.quit()
# 打印到控制檯
print("成功發送郵件給%s:" % (msg['To']))
print("比特幣價格爲" + str(bitcoin_rate))
# 用戶輸入
your_name = input('輸入您的名字: ')
your_email = input('輸入您的服務器郵件地址 (僅gmail): ')
your_password = getpass.getpass()
send_email_to = input('輸入您發送的郵件地址: ')
alert_amount = input('當比特幣價格低於多少時執行預警: ')
while True:
url = "https://api.coindesk.com/v1/bpi/currentprice.json"
response = requests.get(
url,
headers={"Accept": "application/json"},
)
data = response.json()
bpi = data['bpi']
USD = bpi['USD']
bitcoin_rate = int(USD['rate_float'])
if bitcoin_rate < int(alert_amount):
send_email()
print('將在3分鐘後再次檢查,按 Ctrl + C 退出!')
time.sleep(180)
else:
time.sleep(300)
print('比特幣當前價格是' + str(bitcoin_rate) + '。將在5分鐘後再次檢查,按 Ctrl + C 退出!')
總結
本文用 Python 創建了一個發送比特幣價格預警郵件的程序,後面可以對該程序進行一些改進:
用HTML和CSS裝飾電子郵件
更改時間間隔
添加其他數字貨幣幣種並設置預警
當發送郵件文本時發出報警聲音
給大家推薦一個優質社區 --- Python中文社區作爲一個去中心化的全球技術社區,以成爲全球20萬Python中文開發者的精神部落爲願景,目前覆蓋各大主流媒體和協作平臺,與阿里、騰訊、百度、微軟、亞馬遜、開源中國、CSDN等業界知名公司和技術社區建立了廣泛的聯繫,擁有來自十多個國家和地區數萬名登記會員,會員來自以工信部、清華大學、北京大學、北京郵電大學、中國人民銀行、中科院、中金、華爲、BAT、谷歌、微軟等爲代表的政府機關、科研單位、金融機構以及海內外知名公司,全平臺近20萬開發者關注。
歡迎掃碼關注