利用Python实现每日新闻早报推送

本文将介绍如何使用Python编写简单的逻辑,通过调用API接口实现每日新闻推送功能。

步骤:

  1. 导入所需的库: 在代码的开头,我们需要导入所需的库。通常,我们会使用requests库来发送HTTP请求,以获取新闻数据。
import os
import requests
  1. 设置环境变量【可选】:环境变量是在操作系统或运行环境中设置的全局变量,可以存储一些敏感或配置信息,例如API密钥、访问令牌等。通过使用环境变量,可以将这些敏感信息与代码分离,提高代码的安全性和可维护性。
pushplus_token = os.environ.get('pushplus_token')   #pushplus推送令牌
topic = os.environ.get('topic')   #pushplus群组id

在这个例子中,os.environ.get('pushplus_token')os.environ.get('topic')分别获取名为pushplus_tokentopic的环境变量的值。这些环境变量应该在运行代码之前在操作系统或运行环境中进行设置。

获取环境变量的好处是,您可以在不修改代码的情况下,根据需要在不同的环境中设置不同的值。例如,在开发环境和生产环境中可以使用不同的推送令牌和主题,而无需更改代码本身。

通过使用os.environ.get()函数,可以安全地获取环境变量的值。如果环境变量不存在,get()函数将返回None,因此您可以根据需要进行错误处理或设置默认值。

  1. 调用新闻API接口: 新闻API接口是一个提供新闻数据的服务。我们可以使用requests库向API发送HTTP请求,获取新闻数据的响应。根据API提供的文档,我们可以了解如何构造请求,例如指定新闻的类别、时间范围等。
image_url = "https://api.03c3.cn/api/zb"  #图片版本接口
text_url = "https://api.03c3.cn/api/zb?type=text"  #文字版本接口
  1. 解析API响应: 获取到API的响应后,我们需要使用适当的方法对其进行解析。通常情况下,API响应会以JSON格式返回,我们可以使用Python的内置json库将其解析为可操作的数据。
text_response = requests.get(text_url)
content = text_response.text

requests库中,text属性是一个返回响应内容的属性。当使用requests.get()方法发送GET请求并获取到响应后,可以通过text属性获取响应内容的纯文本形式。

在这个特定的例子中,text_response.text将获取到的API响应内容以纯文本形式赋值给content变量,以便后续使用。这样可以将API返回的纯文本内容作为推送消息的一部分,进行进一步处理和构造推送数据。

  1. 提取新闻内容: 通过解析API响应,我们可以提取出需要的新闻内容,例如新闻标题、摘要和链接等信息。可以将提取的信息存储在适当的数据结构中,例如列表或字典。
  2. 设置推送参数: 在代码中,我们可以定义推送的参数,例如推送标题、内容格式和目标用户等。根据推送服务提供商的要求,我们可以选择合适的参数设置。
  3. 构造推送消息: 使用获取到的新闻信息,我们可以根据推送服务的要求,构造推送消息的格式。可以将新闻标题和链接等信息整合为一条推送消息,以便发送给用户。
pushplus_data = {
    "token": pushplus_token,
    "title": "每天60秒读懂世界",
    "content": "{}<br/><img src='{}' />".format(content,image_url),
    # "topic": "群组ID",
    "template": "html"
}

pushplus_data字典定义了推送消息的参数和内容。其中:

  • "token"字段存储了推送服务的访问令牌,它的值是之前从环境变量中获取的pushplus_token
  • "title"字段存储了推送消息的标题,它的值是固定的字符串 "每天60秒读懂世界"
  • "content"字段存储了推送消息的内容,它的值是通过格式化字符串的方式将contentimage_url插入到HTML模板中的。其中,content是之前从API获取的新闻内容,image_url是存储图片URL的变量。
  • "template"字段指定了推送消息的模板类型,这里使用了HTML模板。

注意:在代码中有一行注释掉的 "topic": "群组ID" 字段,这是用于指定推送消息发送到指定群组的ID,如果需要发送到特定的群组,可以取消注释并设置相应的群组ID值。

  1. 发送推送请求: 使用推送服务提供商的API,我们可以通过发送HTTP请求,将构造好的推送消息发送给目标用户。推送服务将根据提供的参数,将推送消息推送到用户的设备上。
pushplus_url = "https://www.pushplus.plus//send"
requests.post(pushplus_url, json=pushplus_data)

pushplus_url变量存储了推送服务提供商的API地址,即要发送POST请求的目标URL。

最后,使用requests.post()方法向pushplus_url发送POST请求,将pushplus_data以JSON格式作为请求的正文进行传递。这样,推送服务提供商的API将根据传递的参数和内容,将推送消息发送给目标用户。


完整代码

import os
import requests

pushplus_token = os.environ.get('pushplus_token')
topic = os.environ.get('topic')

image_url = "https://api.03c3.cn/api/zb"

text_url = "https://api.03c3.cn/api/zb?type=text"

text_response = requests.get(text_url)
content = text_response.text

pushplus_url = "https://www.pushplus.plus//send"

pushplus_data = {
    "token": pushplus_token,
    "title": "每天60秒读懂世界",
    "content": "{}<br/><img src='{}' />".format(content,image_url),
    # "topic": "群组ID",
    "template": "html"
}

requests.post(pushplus_url, json=pushplus_data)

工作流文件

name: auto

on:
  schedule:
    - cron: '30 22 * * *' #每天六点半
  workflow_dispatch: 

env:
  pushplus_token: ${{ secrets.PUSHPLUS_TOKEN }} 
  topic: ${{ secrets.TOPIC }}


jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - name: Check out the repository
        uses: actions/checkout@v3
      
      - name: Set up Python 
        uses: actions/setup-python@v3
        with: 
          python-version: '3.10'
          
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install requests 
      - name: Run main.py
        run: python main.py  #文件名

仓库地址

点击进入仓库地址,可以直接Fork配置运行

https://github.com/yanyaoli/daily60s

作者:yanyao
链接:https://juejin.cn/post/7245292130625470524
 

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值