新闻优化

This commit is contained in:
liuwei
2025-12-26 09:37:15 +08:00
parent ad98fe6d77
commit 0c98be8c6f
2 changed files with 50 additions and 3 deletions

View File

@@ -3,6 +3,8 @@
import json import json
import re import re
from typing import Optional
from loguru import logger from loguru import logger
import time import time
from datetime import datetime from datetime import datetime
@@ -65,7 +67,7 @@ class News(object):
try: try:
response = requests.get(url, headers=self.headers, timeout=10) response = requests.get(url, headers=self.headers, timeout=10)
response.raise_for_status() # 检查请求是否成功 response.raise_for_status() # 检查请求是否成功
print(response.json())
if response.status_code == 200: if response.status_code == 200:
post = response.json() post = response.json()
# 提取content列表 - 避免使用str作为变量名 # 提取content列表 - 避免使用str作为变量名
@@ -104,10 +106,32 @@ class News(object):
elif website == 'bbc': elif website == 'bbc':
return func_english_news.bbc() return func_english_news.bbc()
def get_news_60s(self) -> Optional[str]:
"""
调用 60s 接口并提取 image 字段
:return: image url 或 None
"""
API_URL = "http://192.168.2.32:4399/v2/60s"
TIMEOUT = 5 # 秒
try:
resp = requests.get(API_URL, timeout=TIMEOUT)
resp.raise_for_status() # HTTP 非 200 会抛异常
data = resp.json()
return data.get("data", {}).get("image")
except requests.RequestException as e:
print(f"请求接口失败: {e}")
except ValueError as e:
print(f"JSON 解析失败: {e}")
return None
if __name__ == "__main__": if __name__ == "__main__":
news = News() news = News()
print(news.get_news_60s())
# # msg = "@水牛-分身 今日百度新闻" # # msg = "@水牛-分身 今日百度新闻"
# # q = re.sub(r"@.*?[\u2005|\s]", "", msg).replace(" ", "") # # q = re.sub(r"@.*?[\u2005|\s]", "", msg).replace(" ", "")
# # print(q) # # print(q)

View File

@@ -1,10 +1,12 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import asyncio import asyncio
import base64
import threading import threading
import time import time
import tomllib import tomllib
from collections import deque from collections import deque
import requests
import toml import toml
from loguru import logger from loguru import logger
@@ -495,6 +497,24 @@ class Robot:
except Exception as e: except Exception as e:
self.LOG.error(f"send_group_txt_message:{feature.description} error{e}") self.LOG.error(f"send_group_txt_message:{feature.description} error{e}")
async def send_group_image_message(self, msg: str, feature: Feature):
"""向所有启用了特定功能的群发送文本消息"""
try:
receivers = self.gbm.get_group_list()
if not receivers:
return
resp = requests.get(msg, timeout=10)
resp.raise_for_status()
base64_str = base64.b64encode(resp.content).decode("utf-8")
for r in receivers:
if self.gbm.get_group_permission(r, feature) == PermissionStatus.ENABLED:
await self.ipad_bot.send_image_message(r, base64_str)
except Exception as e:
self.LOG.error(f"send_group_image_message:{feature.description} error{e}")
async def send_group_file_message(self, path: str, feature: Feature): async def send_group_file_message(self, path: str, feature: Feature):
try: try:
receivers = self.gbm.get_group_list() receivers = self.gbm.get_group_list()
@@ -669,8 +689,11 @@ class Robot:
async def news_baidu_report_auto(self) -> None: async def news_baidu_report_auto(self) -> None:
try: try:
news = News().get_baidu_news() # news = News().get_baidu_news()
await self.send_group_txt_message(news, Feature.DAILY_NEWS) # await self.send_group_txt_message(news, Feature.DAILY_NEWS)
path = News().get_news_60s()
await self.send_group_image_message(path, Feature.DAILY_NEWS)
except Exception as e: except Exception as e:
self.LOG.error(f"newsBaiduReportAuto error{e}") self.LOG.error(f"newsBaiduReportAuto error{e}")