一个集成 TuShare 新闻接口、Finnhub API 和电报机器人的 Python 应用,实现国内外财经新闻的实时推送功能。
- 🚀 实时推送:监听多个财经新闻来源,有新闻立即推送到电报
- 📰 多源支持:支持 9 个国内财经新闻来源 + Finnhub 国际新闻
- 新浪财经
- 华尔街见闻
- 同花顺
- 东方财富
- 云财经
- 凤凰新闻
- 金融界
- 财联社
- 第一财经
- 国际新闻(Finnhub)
- 综合新闻(General)
- 外汇新闻(Forex)
- 加密货币(Crypto)
- 并购新闻(Merger)
- 🔄 去重机制:自动记录已推送新闻,避免重复推送
- 📊 历史记录:保存推送历史,便于追踪
- 🛡️ 错误处理:完善的错误处理和日志记录
- ⚙️ 可配置:灵活的配置选项和检查间隔
- Python 3.7+
- 有效的 TuShare API Token(可选)
- 有效的 Finnhub API Token(可选)
- 至少需要 TuShare 或 Finnhub 其中之一
- 有效的电报机器人 Token
- 互联网连接
git clone https://github.com/Howe813/QuickFinews.git
cd QuickFinewspip install -r requirements.txt复制 .env.example 为 .env,并填入你的配置:
cp .env.example .env编辑 .env 文件:
# TuShare 配置(可选)
TUSHARE_TOKEN=your_tushare_token
# Finnhub 配置(可选)
FINNHUB_TOKEN=your_finnhub_token
# 电报机器人配置
TELEGRAM_TOKEN=your_telegram_bot_token
TELEGRAM_CHAT_ID=your_telegram_chat_id
# 检查间隔(秒)
CHECK_INTERVAL=60- 访问 TuShare 官网
- 注册账户
- 在用户中心获取 API Token
- 申请
news接口权限
- 访问 Finnhub 官网
- 注册免费账户
- 在 Dashboard 获取 API Key
- 免费版支持 60 次/分钟的请求
- 在 Telegram 中搜索
@BotFather - 发送
/newbot命令创建新机器人 - 按照提示填写机器人名称和用户名
- 获取 Token
- 创建一个电报频道或群组
- 将机器人添加到频道/群组
- 发送一条消息到频道/群组
- 访问
https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates获取 Chat ID
python main.py# 确保 .env 文件在项目根目录
python main.pynohup python main.py > quickfinews.log 2>&1 &创建 /etc/systemd/system/quickfinews.service:
[Unit]
Description=QuickFinews - Financial News Real-time Push Bot
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/QuickFinews
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
EnvironmentFile=/home/ubuntu/QuickFinews/.env
ExecStart=/usr/bin/python3 /home/ubuntu/QuickFinews/main.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target启动服务:
sudo systemctl daemon-reload
sudo systemctl enable quickfinews
sudo systemctl start quickfinews查看日志:
sudo journalctl -u quickfinews -fQuickFinews/
├── main.py # 主应用文件
├── requirements.txt # Python 依赖
├── .env.example # 环境变量示例
├── README.md # 项目文档
├── quickfinews.log # 应用日志(运行时生成)
└── news_history.json # 新闻历史记录(运行时生成)
| 变量名 | 说明 | 必需 | 示例 |
|---|---|---|---|
TUSHARE_TOKEN |
TuShare API Token | 是 | cb63c2545f544191b75f8bebc53f14d606ae81494a5c06b491a72611 |
TELEGRAM_TOKEN |
电报机器人 Token | 是 | 8525895709:AAECjlC0G2isTdROfsucAA0rPUHFuN5JI5Q |
TELEGRAM_CHAT_ID |
电报频道/群组 ID | 是 | -1001234567890 |
CHECK_INTERVAL |
检查间隔(秒) | 否 | 60 |
应用支持以下新闻来源:
| 来源 | 标识 | 描述 |
|---|---|---|
| 新浪财经 | sina | 新浪财经实时资讯 |
| 华尔街见闻 | wallstreetcn | 华尔街见闻快讯 |
| 同花顺 | 10jqka | 同花顺财经新闻 |
| 东方财富 | eastmoney | 东方财富财经新闻 |
| 云财经 | yuncaijing | 云财经新闻 |
| 凤凰新闻 | fenghuang | 凤凰新闻 |
| 金融界 | jinrongjie | 金融界新闻 |
| 财联社 | cls | 财联社快讯 |
| 第一财经 | yicai | 第一财经快讯 |
- 初始化:应用启动时加载历史记录,防止重复推送
- 定期检查:按照设定的间隔(默认 60 秒)检查新闻
- 获取新闻:从 TuShare 获取所有来源的最新新闻
- 去重处理:检查新闻是否已推送过
- 实时推送:将新闻推送到电报频道/群组
- 记录保存:保存已推送新闻的历史记录
应用会生成 quickfinews.log 日志文件,记录所有操作:
2024-01-12 10:30:45,123 - __main__ - INFO - QuickFinews - 财经新闻实时推送机器人
2024-01-12 10:30:45,456 - __main__ - INFO - 加载了 150 条历史新闻记录
2024-01-12 10:30:46,789 - __main__ - INFO - 检查新闻: 2024-01-12 10:25:45 到 2024-01-12 10:30:45
2024-01-12 10:30:48,012 - __main__ - INFO - 从 新浪财经 获取了 5 条新闻
2024-01-12 10:30:49,345 - __main__ - INFO - 消息已发送到电报 (Chat ID: -1001234567890)
解决方案:
- 检查网络连接
- 验证 API Token 是否正确
- 确保已申请
news接口权限
解决方案:
- 验证 Telegram Token 是否正确
- 检查 Chat ID 是否正确
- 确保机器人已被添加到频道/群组
- 检查机器人是否有发送消息的权限
解决方案:
- 减少
CHECK_INTERVAL的值(更频繁地检查) - 清理
news_history.json文件(定期备份后删除) - 增加服务器内存
解决方案:
- 检查
news_history.json是否被正确保存 - 确保应用有写入权限
- 重启应用
-
调整检查间隔:根据需求调整
CHECK_INTERVAL- 更频繁的检查:降低
CHECK_INTERVAL值 - 更少的 API 调用:增加
CHECK_INTERVAL值
- 更频繁的检查:降低
-
历史记录管理:定期备份并清理
news_history.json -
日志管理:定期轮转
quickfinews.log文件
- 使用 systemd 服务(推荐)
- 使用 Docker 容器
- 使用进程管理器(如 supervisor)
创建 Dockerfile:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY main.py .
COPY .env .
CMD ["python", "main.py"]构建和运行:
docker build -t quickfinews .
docker run -d --name quickfinews quickfinewsMIT License
如有问题或建议,请提交 Issue 或 Pull Request。
- 初始版本发布
- 支持 9 个新闻来源
- 实现实时推送功能
- 完善的错误处理和日志记录