📜  使用 newsapi 阅读最新消息 | Python

📅  最后修改于: 2022-05-13 01:55:00.078000             🧑  作者: Mango

使用 newsapi 阅读最新消息 | Python

在本文中,我们将学习如何创建Python脚本来阅读最新消息。我们将从新闻 API 中获取新闻,然后,我们将使用 pyttsx3 阅读新闻。

所需模块:

pyttsx3 - pip install pyttsx3
requests - pip install requests
获取新闻 API:
要获取新闻 API,我们将使用 newsapi.org。我们将通过单击获取 API 按钮创建帐户并获取 API 密钥。

第 1 步:导入所需的模块

import pyttsx3
import requests
import json
import time

第 2 步:使用 API 密钥设置 URL,将您的 API 密钥放在这里。

url = ('https://newsapi.org/v2/top-headlines?'
       'country = in&'
       'apiKey =')
  
url += 'your_api_key_here'

步骤#3:为 pyttsx3 设置一个引擎来阅读新闻。

engine = pyttsx3.init()

步骤#4:设置我们引擎的属性,意味着阅读率、音量和声音。

rate = engine.getProperty('rate')
engine.setProperty('rate', rate + 10)
   
volume = engine.getProperty('volume')
engine.setProperty('volume', volume-0.60)
   
sound = engine.getProperty ('voices');
engine.setProperty('voice', 'sound[1].id')

步骤#5:尝试发送请求以获取新闻。在这里, engine.say()函数用于阅读新闻。

try:
    response = requests.get(url)
except:
    engine.say("can, t access link, plz check you internet ")
   
news = json.loads(response.text)
for new in news['articles']:
    print("##############################################################\n")
    print(str(new['title']), "\n\n")
    engine.say(str(new['title']))
    print('______________________________________________________\n')
  
    engine.runAndWait()
  
    print(str(new['description']), "\n\n")
    engine.say(str(new['description']))
    engine.runAndWait()
    print("..............................................................")
    time.sleep(2)

现在,一切就绪,建立一个循环来阅读新文章。


下面是完整的Python实现:

import pyttsx3
import requests
import json
import time
  
url = ('https://newsapi.org/v2/top-headlines?'
       'country = in&'
       'apiKey =')
  
url +='your_api_key_here'
  
   
engine = pyttsx3.init()
rate = engine.getProperty('rate')
engine.setProperty('rate', rate + 10)
  
volume = engine.getProperty('volume')
engine.setProperty('volume', volume-0.60)
  
sound = engine.getProperty ('voices');
engine.setProperty('voice', 'sound[1].id')
  
  
try:
    response = requests.get(url)
except:
    engine.say("can, t access link, plz check you internet ")
  
news = json.loads(response.text)
  
  
for new in news['articles']:
    print("##############################################################\n")
    print(str(new['title']), "\n\n")
    engine.say(str(new['title']))
    print('______________________________________________________\n')
  
    engine.runAndWait()
  
    print(str(new['description']), "\n\n")
    engine.say(str(new['description']))
    engine.runAndWait()
    print("..............................................................")
    time.sleep(2)

输出: