年末了,突然发现今年错过了无数次打新债的机会,经常想起来时,发现已经下午四点休市。于是想到是否可以做一个小助手来自动帮我看新债信息,如果有,直接给我发微信提醒。
1. 可转债接口
首先,需要通过一个稳定接口获取可转债信息,查阅资料,发现同花顺提供了一个数据接口,链接为:http://data.hexin.cn/ipo/bond/cate/info/
格式化数据如下:
其中,比较关键的信息为sgDate
,该日期表明债券的发行日。同时,该接口还提供了今日日期today
,这方便了在之后程序中,无需从系统时间上再次获取今日日期。
2. 筛选今日发行新债
有了该接口之后,便可以写个简单程序筛选今日发行的新债,这里判定一下债券发行日等于今日日期,即将其筛选返回出来。
import requests
request_params = {"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"},
"timeout": 10}
def get_today_bonds():
r = requests.get("http://data.hexin.cn/ipo/bond/cate/info/", **request_params)
for bond in r.json():
if bond['today'] == bond['sgDate']:
text = f"""今日打新: {bond['zqName']} 发行量{bond['issue']}亿"""
return text
return None
if __name__ == '__main__':
news = get_today_bonds()
print(news)
3. 微信信息推送
之前看到类似博文采用pushplus
进行信息推送,但该平台目前已经停止运营。因此,本文采用WxPusher
作为推送工具。该工具开源地址为:https://github.com/wxpusher/wxpusher-client,里面有适配go、java、php、python的示例程序,并且对每日的免费调用量为1000次,足够使用。
这里用python进行开发,首先需要安装wxpusher
pip install -U wxpusher
之后在WxPusher消息推送平台
公众号中的菜单栏获取自己的UID。
接着在wxpusher后台管理界面(地址:https://wxpusher.zjiecode.com/admin/main/wxuser/list)里面创建一个应用。
创建完应用后,会自动生成一个只出现一次的应用token。
在应用管理下关注应用菜单中,扫码关注该应用。
最后,修改一下上一节的程序,得到消息之后,将消息通过发送接口发送即可,下面需要自行替换自己前面的用户uid和应用的token。
import requests
from wxpusher import WxPusher
request_params = {"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"},
"timeout": 10}
def get_today_bonds():
r = requests.get("http://data.hexin.cn/ipo/bond/cate/info/", **request_params)
for bond in r.json():
# bond['today'] = "2024-12-25"
if bond['today'] == bond['sgDate']:
text = f"""今日打新: {bond['zqName']} 发行量{bond['issue']}亿"""
return text
return None
if __name__ == '__main__':
news = get_today_bonds()
WxPusher.send_message(news,
uids=['用户uid'],
topic_ids=['1'],
token='应用token')
4. 定时触发设置
有了该程序,让其一直不间断运行并不合适,因为一天只需要查询一次即可。首先想到的是将其挂载到腾讯云的函数服务,但发现现在腾讯云的触发器也将停止服务。
因此,不如将其直接放到本机上设置定时任务。
首先用pyinstaller将其打包成一个exe程序:
pyinstaller -F bond_assistant.py
之后打开windows自带的任务计划程序
。
右键->创建基本任务
这里设置每日11:00触发一次
链接到打包好的脚本。
至此,完成助手配置。
5. Linux服务器上设置
在本机上部署一段时间后,发现有时候不稳定,因为实验室总是莫名断网。。于是想把它放在更稳定的云服务器上。
首先在云服务器上,可以同样用pyinstaller打包成可执行文件:
pyinstaller --onefile bond_assistant.py
用crontab
设置定时任务,执行:
crontab -e
输入,设置每天11点运行:
0 11 * * * /root/code/tips/dist/bond_assistant
保存退出。
查看当前设定任务:
crontab -l
完成。