使用WPUSH实现每日60s早报新闻的推送

引言:

在这篇文章中,我们将探讨如何使用 ALAPI 平台获取每日新闻早报,并通过 WPUSH 消息推送平台将新闻内容推送给用户。此外,我们还会介绍如何使用 GitHub Actions 来自动化整个流程,实现每日定时推送。

代码已开源:https://github.com/WPUSH/wpush_zaobao

平台介绍

ALAPI:是一个免费的API接口平台,里面集成了上百个免费API接口
WPUSH: 一个聚合消息推送平台,可以推送微信、短信、邮件、飞书、钉钉等消息
Github Actions: 自动化CI工具,可以用这个实现自动化构建、定时任务等

每日早报新闻获取

我们首先要从 ALAPI 获取到每天60s早报新闻的数据,ALAPI的接口文档:https://alapi.cn/api/view/93, 请求接口需要获取到 ALAPI的token, 注册好账号后在后台可以看到token秘钥
在这里插入图片描述
获取token之后编写代码:

# 获取早报信息
def get_news():
    alapi_token = os.getenv('alapi_token')
    url = 'https://v2.alapi.cn/api/zaobao'
    params = {'token': alapi_token}
    response = requests.get(url, params=params)
    data = response.json()
    if data.get('code') == 200:
        return data.get('data')
    else:
        print(data.get("msg"))
        return None

WPUSH消息推送

从 ALAPI 接口获取到正确的早报新闻消息之后就可以通过 WPUSH 平台来推送消息了,
推送消息需要获取到 wpush 平台的apikey ,获取秘钥
获取到apikey之后编写推送消息代码

# 推送消息
def push_message(title, content):
    wpush_apikey = os.getenv('wpush_apikey')
    url = 'https://api.wpush.cn/api/v1/send'
    channel = os.getenv("channel", "wechat")
    if channel not in ["wechat", "sms", "mail", "feishu", "dingtalk", "webhook", "wechat_work"]:
        channel = "wechat"

    params = {'apikey': wpush_apikey, 'title': title, 'content': content, 'channel': channel}
    response = requests.post(url, data=params)
    data = response.json()
    if data.get("code") == 0:
        return True
    else:
        print(data.get("message"))
        return False

完整代码

import os
import requests


# 获取早报信息
def get_news():
    alapi_token = os.getenv('alapi_token')
    url = 'https://v2.alapi.cn/api/zaobao'
    params = {'token': alapi_token}
    response = requests.get(url, params=params)
    data = response.json()
    if data.get('code') == 200:
        return data.get('data')
    else:
        print(data.get("msg"))
        return None


# 推送消息
def push_message(title, content):
    wpush_apikey = os.getenv('wpush_apikey')
    url = 'https://api.wpush.cn/api/v1/send'
    channel = os.getenv("channel", "wechat")
    if channel not in ["wechat", "sms", "mail", "feishu", "dingtalk", "webhook", "wechat_work"]:
        channel = "wechat"

    params = {'apikey': wpush_apikey, 'title': title, 'content': content, 'channel': channel}
    response = requests.post(url, data=params)
    data = response.json()
    if data.get("code") == 0:
        return True
    else:
        print(data.get("message"))
        return False


# 主函数
def main():
    if not os.getenv('alapi_token') or not os.getenv('wpush_apikey'):
        print('请设置alapi_token和wpush_apikey环境变量!')
        return
    send_type = os.getenv("type", "image")

    if send_type not in ["image", "text"]:
        send_type = "image"

    news_data = get_news()
    if news_data:
        date = news_data.get('date')
        news_list = news_data.get('news')
        image_url = news_data.get('image')

        title = '每日60秒早报'
        content = f'### 日期:{date}\n\n'

        if send_type == "image":
            content += f'![image]({image_url})'
        else:
            content += '#### 新闻:\n'
            for news in news_list:
                content += f'- {news}\n'

        if push_message(title, content):
            print('消息推送成功!')
        else:
            print('消息推送失败!')
    else:
        print('获取早报信息失败!')


if __name__ == '__main__':
    main()

有了完整代码之后,可以通过 github 的 action 定时推送消息
github actions 代码:

name: 每日早报定时推送
on:
  workflow_dispatch:
  schedule:
    - cron: "0 8 * * *" # 每天早上8点推送
jobs:
  push:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v3

      - name: 安装python环境
        uses: actions/setup-python@v3

      - name: 安装依赖
        run: |
          if [ -f requirements.txt ]; then pip install -r requirements.txt; fi

      - name: 开始推送
        env:
          wpush_apikey: ${{ secrets.WPUSH_APIKEY }} # wpush apikey
          alapi_token: ${{ secrets.ALAPI_TOKEN }}
          type: ${{ secrets.TYPE }}
          channel: ${{ secrets.CHANNEL }}
        run: |
          python main.py

完整部署代码已在 github 开源,开源地址:https://github.com/WPUSH/wpush_zaobao

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值