summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuki-Asuuna <[email protected]>2022-03-09 11:00:14 +0800
committerYuki-Asuuna <[email protected]>2022-03-09 11:00:14 +0800
commitf8766df357487bb9323f3a88bd0c3517df4305eb (patch)
treeb1d12a6e3c64585bcc7178d8bb5b3c431bebd8f9
parent7ad305115885d34e71b630bb0fd5db0fc48521c5 (diff)
downloadATRI-f8766df357487bb9323f3a88bd0c3517df4305eb.tar.gz
ATRI-f8766df357487bb9323f3a88bd0c3517df4305eb.tar.bz2
ATRI-f8766df357487bb9323f3a88bd0c3517df4305eb.zip
fix: 修复b站动态订阅助手偶丢动态的问题
Change-Id: I86d07518d374eca7f1afd177aea9a15ec7d9a60b
-rw-r--r--ATRI/plugins/bilibili_dynamic/__init__.py13
-rw-r--r--ATRI/utils/__init__.py4
2 files changed, 14 insertions, 3 deletions
diff --git a/ATRI/plugins/bilibili_dynamic/__init__.py b/ATRI/plugins/bilibili_dynamic/__init__.py
index 4c313a1..5ece6f6 100644
--- a/ATRI/plugins/bilibili_dynamic/__init__.py
+++ b/ATRI/plugins/bilibili_dynamic/__init__.py
@@ -1,3 +1,4 @@
+import pytz
from apscheduler.triggers.base import BaseTrigger
from apscheduler.triggers.combining import AndTrigger
from apscheduler.triggers.interval import IntervalTrigger
@@ -13,7 +14,8 @@ from nonebot import get_bot
from .data_source import BilibiliDynamicSubscriptor
import re
from tabulate import tabulate
-from datetime import datetime
+from datetime import datetime, timedelta
+from ATRI.log import logger
bilibili_dynamic = BilibiliDynamicSubscriptor().on_command(
"/bilibili_dynamic", "b站动态订阅助手", aliases={"b站动态"}
@@ -60,7 +62,8 @@ async def handle_subcommand(event: GroupMessageEvent, state: T_State = State()):
r = await subscriptor.get_subscriptions(query_map={"groupid": event.group_id})
subs = []
for s in r:
- subs.append([s.nickname, s.uid, s.last_update])
+ tm = s.last_update.replace(tzinfo=pytz.timezone("Asia/Shanghai"))
+ subs.append([s.nickname, s.uid, tm + timedelta(hours=8)])
output = "本群订阅的UP列表如下~\n" + tabulate(
subs, headers=["up名称", "UID", "上次更新时间"], tablefmt="plain", showindex=True
)
@@ -165,13 +168,19 @@ async def _check_dynamic():
tq.put(d)
else:
d: Subscription = tq.get()
+ logger.info("准备查询UP【{up}】的动态 队列剩余{size}".format(up=d.nickname, size=tq.qsize()))
ts = int(d.last_update.timestamp())
+ # logger.info("上一次更新的时间戳{time}".format(time=ts))
info: dict = await subscriptor.get_recent_dynamic_by_uid(d.uid)
res = []
if info:
if info.get("cards") is not None:
res = subscriptor.extract_dynamics_detail(info.get("cards"))
+
+ if len(res) == 0:
+ logger.warning("获取UP【{up}】的动态为空".format(up=d.nickname))
for i in res:
+ # logger.info("获取UP【{up}】的动态,时间{time},内容{content}".format(up=d.nickname, time=i["timestamp"],content=i["content"][:20]))
i["name"] = d.nickname
if ts < i["timestamp"]:
text, pic_url = subscriptor.generate_output(pattern=i)
diff --git a/ATRI/utils/__init__.py b/ATRI/utils/__init__.py
index 9c7f759..565de97 100644
--- a/ATRI/utils/__init__.py
+++ b/ATRI/utils/__init__.py
@@ -1,5 +1,6 @@
import os
import re
+import pytz
import yaml
import aiofiles
import time
@@ -20,7 +21,8 @@ def timestamp2datetimestr(timestamp: int) -> str:
def timestamp2datetime(value: int) -> datetime:
- return datetime.fromtimestamp(value)
+ tz = pytz.timezone("Asia/Shanghai")
+ return datetime.fromtimestamp(value, tz=tz)
def now_time() -> float: