本文作者: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万开发者关注。
欢迎扫码关注