利用 API 自动获取汇率并实时通知
背景
by chat-gpt3.5
在国际贸易和金融交流中,汇率是一个至关重要的因素,直接影响着货币之间的兑换关系。为了方便地获取汇率信息并实时通知,我们可以利用 Python 编写一个脚本,通过 API 自动获取汇率数据,并将结果保存到 CSV 文件中。本文将介绍如何使用 ExchangeRate-API 提供的接口,获取土耳其里拉(TRY)、美元(USD)对人民币(CNY)的汇率,并额外获取美元对新加坡元(SGD)的汇率。
实现
首先,我们使用 requests
库发送 HTTP 请求,获取 ExchangeRate-API 提供的最新汇率数据。以下是获取汇率的函数:
import requests
import json
import schedule
import time
import csv
def get_exchange_rate_by_api(currency, currency_to):
url = "https://api.exchangerate-api.com/v4/latest/" + currency
response = requests.get(url)
data = response.json()
exchange_rate = data["rates"][currency_to]
return exchange_rate
接下来,我们通过调度get_exchange_rate_by_api,每天执行获取汇率的操作,并将结果保存到 CSV 文件中:
def job():
rate_try = get_exchange_rate_by_api("TRY", "CNY")
rate_usd = get_exchange_rate_by_api("USD", "CNY")
rate_sgd = get_exchange_rate_by_api("USD", "SGD")
today = time.strftime("%Y-%m-%d", time.localtime())
with open('exchange_rates.csv', 'a', newline='') as file:
writer = csv.writer(file)
writer.writerow([today, "TRY", "CNY", rate_try])
writer.writerow([today, "USD", "CNY", rate_usd])
writer.writerow([today, "USD", "SGD", rate_sgd])
notice_text = f"今日{today},土耳其里拉对人民币的汇率为:{rate_try},美元对人民币的汇率为:{rate_usd},美元对新加坡元的汇率为:{rate_sgd}"
notice(notice_text)
print(f"执行完成,{today}")
最后,我们定义通知函数 notice
,通过 Telegram Bot API 将获取到的汇率信息发送到指定的聊天群:
def notice(text):
api_url = "https://domain.com/api/send_notification"
data = {
"chat_id": "{chat_id}",
"text": text
}
response = requests.post(api_url, json=data)
if response.status_code == 200:
print("通知成功")
else:
print("通知失败")
return
在主程序中,我们通过 if __name__ == '__main__':
判断脚本是否直接运行,如果是,则执行 job()
函数,
再通过cron任务实现每天早上 9 点自动获取并通知汇率信息。
通过这样的自动化脚本,我们可以方便地获取最新的汇率数据,并及时了解货币兑换情况。