当前位置: 首页 > news >正文

利用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 requestspushplus_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.textpushplus_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: autoon:schedule:- cron: '30 22 * * *' #每天六点半workflow_dispatch: env:pushplus_token: ${{ secrets.PUSHPLUS_TOKEN }} topic: ${{ secrets.TOPIC }}jobs:build:runs-on: ubuntu-lateststeps:- name: Check out the repositoryuses: actions/checkout@v3- name: Set up Python uses: actions/setup-python@v3with: python-version: '3.10'- name: Install dependenciesrun: |python -m pip install --upgrade pippip install requests - name: Run main.pyrun: python main.py  #文件名

仓库地址

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

https://github.com/yanyaoli/daily60s

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

相关文章:

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

本文将介绍如何使用Python编写简单的逻辑&#xff0c;通过调用API接口实现每日新闻推送功能。 步骤&#xff1a; 导入所需的库&#xff1a; 在代码的开头&#xff0c;我们需要导入所需的库。通常&#xff0c;我们会使用requests库来发送HTTP请求&#xff0c;以获取新闻数据。 …...

图像分割-Grabcut法

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 本文的C#版本请访问&#xff1a;图像分割-Grabcut法(C#)-CSDN博客 GrabCut是一种基于图像分割的技术&#xff0c;它可以用于将图像…...

性能测试浅谈

早期的性能测试更关注后端服务的处理能力。 一个用户去访问一个页面的请求过程&#xff0c;如上图。 数据传输时间 当你从浏览器输入网址&#xff0c;敲下回车&#xff0c;开始... 真实的用户场景请不要忽视数据传输时间&#xff0c;想想你给远方的朋友写信&#xff0c;信件需…...

媒体运营常用的ChatGPT通用提示词模板

媒体平台选择&#xff1a;如何选择合适的媒体平台&#xff0c;确保内容的有效传播&#xff1f; 内容策划与创作&#xff1a;如何策划和创作高质量的内容&#xff0c;吸引和留住目标受众&#xff1f; 内容发布与推广&#xff1a;如何有效地发布和推广内容&#xff0c;提高内容…...

Java学习苦旅(二十一)——泛型

本篇博客将详细讲解Java中的泛型。 文章目录 泛型的定义语法示例 泛型类语法示例类型边界语法示例 类型擦除通配符语法示例上界语法示例 下界语法示例 裸类型泛型方法语法示例 泛型的限制结尾 泛型的定义 语法 class 泛型类名称<类型形参列表> {//这里可以使用类型参数…...

具备闭环思维的测试才更充分

测试工作的终极目标是为了保障产品的质量。如果用同一个维度衡量测试人员的业务水平&#xff0c;简单粗暴一些&#xff1a;那就是针对同一款产品&#xff0c;哪个测试人员发现的bug多&#xff0c;哪个测试人员的测试理论与实践水平相对来说还是高一些。 前两天组长在群里分析了…...

flask web学习之模板(一)

文章目录 一、模板基本用法1.1 定界符1.2 模板语法1.3 渲染模板 二、模板辅助工具2.1 上下文2.2 全局对象2.3 过滤器2.4 测试器2.5 模板环境对象 在动态web程序中&#xff0c;视图函数返回的HTML数据往往需要根据相应的变量&#xff08;比如查询参数&#xff09;动态生成。当HT…...

RedisInsight - Redis官方可视化工具

一、RedisInsight 简介 RedisInsight 是一个直观高效的 Redis GUI 管理工具&#xff0c;它可以对 Redis 的内存、连接数、命中率以及正常运行时间进行监控&#xff0c;并且可以在界面上使用 CLI 和连接的 Redis 进行交互&#xff08;RedisInsight 内置对 Redis 模块支持&#…...

Matlab定义函数计算斐波那契数列

以下是使用 MATLAB 定义函数计算并输出斐波那契数列前 200 个数的示例代码&#xff1a; function result fibonacci(n)if n < 1 || n > 200result NaN;elseif n 1 || n 2result 1;elseresult fibonacci(n-1) fibonacci(n-2);end endn 200; result fibonacci(n)…...

计算机网络面试题总结

总结自Network | JavaGuide(Java面试 学习指南) 什么是OSI7层模型&#xff1f; 什么是TCP/IP 四层模型&#xff1f; 为什么网络要分层&#xff1f; 应用层有哪些常见的协议&#xff1f; 传输层有哪些常见的协议&#xff1f; 网络层有哪些常见的协议&#xff1f; 从输入…...

视频转为序列图的软件,让视频批量转为序列图

你是否曾经遇到过这样的困境&#xff1a;需要将一段视频转为一系列的图片&#xff0c;但却没有合适的工具来完成&#xff1f;或许你曾经手动截图&#xff0c;或者用其他方式&#xff0c;但结果往往不尽如人意&#xff0c;图片质量差、色彩失真、画面不清晰。现在&#xff0c;让…...

目标检测中的常见指标

概念引入&#xff1a; TP&#xff1a;True Positive IoU > 阈值 检测框数量 FP: False Positive IoU < 阈值 检测框数量 FN: False Negative 漏检框数量 Precision:查准率 Recall:查全率&#xff08;召回率&#xff09; AP&am…...

QT上位机开发(会员充值软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 所有的控件当中&#xff0c;除了label、edit、radio、combobox和button之外&#xff0c;另外一个用的比较多的控件就是grid&#xff0c;也可称之为…...

小程序实现绘制图片 保存到手机

HTML <template><view><canvas canvas-id"myCanvas" :style"{height:380px,width:wWidthpx,background:#FFFFFF}"></canvas><view class"textCenter"><button click"saveCanvas">保存图片</b…...

Elasticsearch基本操作之索引操作

本文说下Elasticsearch基本操作之索引操作 文章目录 概述创建索引创建索引示例重复创建索引示例 查看索引查看所有索引查看单个索引 删除索引删除索引 概述 由于是使用命令来操作Elasticsearch&#xff0c;可以使用kibana&#xff0c;postman和apifox等工具 我使用了apifox来执…...

调用Java线程相关的API为什么能够控制操作系统线程?

今天我们解决Java线程的这五个问题&#xff1a; Java线程创建的完整流程 Java的线程是何时与JVM线程绑定的 JVM线程是何时与OS线程绑定的 Java线程对应的OS线程有什么特殊的地方 调用JavaAPI为什么能够操作OS线程 对于任何支持多线程的计算机语言来说&#xff0c;深入理解…...

【办公技巧】excel中设置选项按钮的方法

大家是否会遇到需要勾中选项的情况&#xff0c;我们可以在电子表格中制作出可以勾选、选中的选项按钮&#xff0c;今天我们一起学习一下设置方法。 首先&#xff0c;我们需要先在excel工具栏中添加一个功能模块&#xff1a;开发工具 依次点击excel中的文件 – 选项 – 自定义…...

如何编写高效的正则表达式?

正则表达式&#xff08;Regular Expression&#xff0c;简称regex&#xff09;是一种强大的文本处理技术&#xff0c;广泛应用于各种编程语言和工具中。本文将从多个方面介绍正则表达式的原理、应用和实践&#xff0c;帮助你掌握这一关键技术。 正则可视化 | 一个覆盖广泛主题…...

vue3中使用pinia,更改state中数据,试图不更新问题

直接上代码 使用computed&#xff0c;可以实现。...

【前端设计】文字聚光灯

欢迎来到前端设计专栏&#xff0c;本专栏收藏了一些好看且实用的前端作品&#xff0c;使用简单的html、css语法打造创意有趣的作品&#xff0c;为网站加入更多高级创意的元素。 案例 文字聚光灯效果可以用于网站标题 html <!DOCTYPE html> <html lang"en&quo…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口&#xff08;interface&#xff09;二、socket.cpp 实现&#xff08;implementation&#xff09;三、server.cpp 使用封装&#xff08;main 函数&#xff09;四、client.cpp 使用封装&#xff08;main 函数&#xff09;五、退出方法…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”&#xff1a;输入模块&#xff08;GPIO、温度、V_REFINT&#xff09;1.4.2 信号 “调度站”&#xff1a;多路开关1.4.3 信号 “加工厂”&#xff1a;ADC 转换器&#xff08;规则组 注入…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验

2024年初&#xff0c;人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目&#xff08;一款融合大型语言模型能力的云端AI编程IDE&#xff09;时&#xff0c;技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力&#xff0c;TRAE在WayToAGI等…...

Yii2项目自动向GitLab上报Bug

Yii2 项目自动上报Bug 原理 yii2在程序报错时, 会执行指定action, 通过重写ErrorAction, 实现Bug自动提交至GitLab的issue 步骤 配置SiteController中的actions方法 public function actions(){return [error > [class > app\helpers\web\ErrorAction,],];}重写Error…...