当前位置: 首页 > Web前端 > JavaScript

很多朋友问我学完Python有没有什么好的项目可以实践

时间:2023-03-27 15:12:48 JavaScript

很多小伙伴问我学完Python有没有什么好的项目可以实践。其实做项目主要是按需求来的。但是对于一个初学者来说,很多复杂的项目是无法独立完成的,所以博主选择了一个非常适合初学者的项目。内容不是很复杂,但是很有趣。没有比项目更好的了。在这个项目中,我们将构建一个比特币价格警报服务。您将主要了解HTTP请求以及如何使用requests包发送这些请求。此外,您还将了解webhook以及如何使用它来将您的Python应用程序与外部设备(例如手机警报或Telegram服务)连接起来。仅需不到50行代码即可完成一个比特币价格提醒服务的功能,并可轻松扩展到其他加密数字货币和服务。我们马上来看看。Python中的比特币价格提醒我们都知道比特币是一个动人的东西。你无法真正知道它的去向。因此,为了避免我们不得不反复刷新以查看发生了什么,我们可以制作一个Python应用程序来为您完成这项工作。为此,我们将使用IFTTT,一个流行的自动化站点。IFTTT(“ifthis,thenthat”)是一个可以在不同的应用程序设备和网络服务之间架起桥梁的工具。我们将创建两个IFTTT小程序:一个用于在比特币价格跌破特定阈值时发出紧急警报,另一个用于定期更新比特币价格。这两个程序都将由我们的Python应用程序从CoinmakercapAPI触发点击此处获取数据。一个IFTTT程序由两部分组成:触发部分和动作部分。在我们的例子中,触发器是IFTTT提供的Webhook服务。您可以将Webhook视为“用户定义的HTTP回调”。更多信息请参考:WEBHOOK我们的Python应用程序将向webhookURL发送HTTP请求,然后webhookURL将触发一个动作。有趣的部分来了,这个动作可以是任何你想要的。IFTTT提供多种操作,例如发送电子邮件、更新Google电子表格,甚至给您打电话。配置项目如果你安装了python3,那么只需要安装一个requests包。$pipinstallrequests==2.18.4#我们只需要将requests包复制代码,选择一个编辑器,比如Pycharm进行代码编辑。获取比特币价格代码很简单,可以在控制台中完成。导入requests包,然后定义bitcoin_api_url变量,即CoinmarketcapAPI的URL。接下来,使用requests.get()函数发送HTTPGET请求并保存响应。由于API返回JSON响应,我们可以通过.json()将其转换为Python对象。>>>导入请求>>>bitcoin_api_url='https://api.coinmarketcap.com/v1/ticker/bitcoin/'>>>response=requests.get(bitcoin_api_url)>>>response_json=response.json()>>>type(response_json)#API返回一个列表>>>#比特币数据是列表的第一个元素>>>response_json[0]{'id':'bitcoin','name':'Bitcoin','symbol':'BTC','rank':'1','price_usd':'10226.7','price_btc':'1.0','24h_volume_usd':'7585280000.0','market_cap_usd':'172661078165','available_supply':'16883362.0','total_supply':'16883362.0','max_supply':'21000000.0','percent_change_1h':'0.67','percent_change_24h':'0.78','percent_change_4.7d9':','last_updated':'1519465767'}复制上面的代码我们对price_usd感兴趣。发送测试IFTTT提醒现在我们可以继续进行IFTTT。在使用IFTTT之前,我们需要先新建一个IFTTT账号,然后安装手机APP(如果你想在手机上接收通知)设置成功后,开始新建一个IFTTT小程序进行测试。要创建一个新的测试小程序,请按照下列步骤操作:单击大“this”按钮;搜索“webhooks”服务,然后选择“接收网络请求”触发器;将事件重命名为test_event;然后选择大的“that”按钮;搜索“通知”服务,然后选择“从IFTTT应用程序发送通知”将短消息更改为我刚刚触发了我的第一个IFTTT动作!,然后点击“创建动作”;点击“完成”按钮完成;这取决于如何使用IFTTTwebhooks,请单击“文档”按钮。文档页面包含webhook的URL。https://maker.ifttt.com/trigger/{event}/with/key/{your-IFTTT-key}复制代码接下来,您需要在步骤3中将{event}替换为您自己的名字。{your-IFTTT-key}是现有的IFTTT密钥。现在您可以复制webhookURL并启动另一个控制台。还导入请求并发送发布请求。>>>importrequests>>>#确保您的密钥在URL中>>>ifttt_webhook_url='https://maker.ifttt.com/trigger/test_event/with/key/{your-IFTTT-key}'>>>requests.post(ifttt_webhook_url)复制代码运行后可以看到:IFTTTApplets的创建只是一个测试,现在已经到了最重要的部分。在开始编写代码之前,我们需要创建两个新的IFTTT小程序:一个用于比特币价格的紧急通知,一个用于定期更新。比特币价格紧急通知小程序:选择“webhooks”服务,选择触发“Receiveawebrequest”;将事件事件命名为bitcoin_price_emergency;对于响应的动作部分,选择“Notifications”服务,然后继续选择“从IFTTTapp发送丰富的通知”动作;提供一个标题,如“比特币价格紧急情况!”将SMS设置为比特币价格为${{Value1}}。立即购买或出售!(我们稍后将返回{{Value1}}部分)您可以选择添加指向Coinmarketcap比特币页面的URL链接:https://coinmarketcap.com/currencies/bitcoin/;创建动作,然后完成小程序设置;定期更新价格小程序:同选项“webhooks”服务,选择触发“Receiveawebrequest”;将事件事件命名为bitcoin_price_update;响应的动作部分,选择“Telegram”服务,然后继续选择“发送消息”动作;将短信文本设置为:最新比特币价格:
{{Value1}};创建动作,然后完成小程序设置;将它们连接在一起现在我们有了IFTTT,这是代码。您将从创建如下所示的标准Python命令行应用框架开始。把代码上去,保存为bitcoin_notifications.py:importrequestsimporttimefromdatetimeimportdatetimedefmain():passif__name__=='__main__':main()复制代码接下来我们还要将前面两个Python的代码进行转换console部分分为两个函数,函数会返回最新的比特币价格,然后分别post到IFTTT的webhook。在main()函数上方添加以下代码。BITCOIN_API_URL='https://api.coinmarketcap.com/v1/ticker/bitcoin/'IFTTT_WEBHOOKS_URL='https://maker.ifttt.com/trigger/{}/with/key/{your-IFTTT-key}'defget_latest_bitcoin_price():response=requests.get(BITCOIN_API_URL)response_json=response.json()#将价格转换为浮点数returnfloat(response_json[0]['price_usd'])defpost_ifttt_webhook(event,value):#将发送到IFTTT服务的有效负载data={'value1':value}#插入我们想要的事件ifttt_event_url=IFTTT_WEBHOOKS_URL.format(event)#向webhookURL发送HTTPPOST请求requests.post(ifttt_event_url,json=data)复制代码get_latest_bitcoin_price除了将price由字符串改为浮点数外,基本相同。psot_ifttt_webhook需要两个参数:事件和值。事件参数对应于我们之前命名的触发器名称。同时,IFTTT的webhooks允许我们通过请求发送额外的数据,数据是JSON格式。这就是我们需要value参数的原因:在设置我们的小程序时,我们在消息文本中有{{Value1}}标记。此标记将替换为JSON负载中的values1文本。requests.post()函数允许我们通过设置json关键字来发送额外的JSON数据。现在我们可以继续我们应用程序的核心主要功能代码。它包含一个whileTrue循环,因为我们希望应用程序永远运行。在循环中,我们调用CoinmarkertcapAPI获取最新的比特币价格,并记录当前的日期和时间。根据当前价格,我们将决定是否要发送紧急通知。对于我们的定期更新,我们会将当前价格和日期放入bitcoin_history列表中。一旦列表达到一定数量(比如5),我们将把它包起来,发送更新,然后为后续更新重置历史记录。要注意的一件事是避免过于频繁地发送消息,原因有两个:CoinmarketcapAPI声明它们每5分钟才更新一次,因此如果您的应用向CoinmarketcapAPI发送过多请求,那么更新太频繁是没有用的,您的IP可能被禁止。因此,我们最后添加了一个“gotosleep”睡眠,设置至少5分钟获取新数据。以下代码实现了我们需要的功能:BITCOIN_PRICE_THRESHOLD=10000#将其设置为任何你喜欢的defmain():bitcoin_history=[]whileTrue:price=get_latest_bitcoin_price()date=datetime.now()bitcoin_history.append({'date':date,'price':price})#Sendanemergencynotificationifprice等)对其进行转换。将此函数复制到main()之上。defformat_bitcoin_history(bitcoin_history):rows=[]forbitcoin_priceinbitcoin_history:#将日期格式化为字符串:'24.02.201815:09'date=bitcoin_price['date'].strftime('%d.%m.%Y%H:%M')price=bitcoin_price['price']#(粗体)标签创建粗体文本#24.02.201815:09:$10123.4row='{}:${}'.format(date,price)rows.append(row)#使用
(break)标签创建一个新行#加入由
标签分隔的行:row1
row2
row3return'
'.join(rows)复制代码,最后在手机端显示结果如下:那么,我们的功能就完成了,只要比特币的价格是更新了,手机端有提醒。当然,如果你觉得烦,你也可以在应用中将其关闭。