summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ATRI/plugins/twitter/__init__.py21
-rw-r--r--ATRI/plugins/twitter/data_source.py8
-rw-r--r--ATRI/plugins/twitter/db.py6
3 files changed, 24 insertions, 11 deletions
diff --git a/ATRI/plugins/twitter/__init__.py b/ATRI/plugins/twitter/__init__.py
index 76dc81e..de92788 100644
--- a/ATRI/plugins/twitter/__init__.py
+++ b/ATRI/plugins/twitter/__init__.py
@@ -51,6 +51,7 @@ async def _td_deal_add_sub(
await sub.add_sub(tid, group_id)
await sub.update_sub(
tid,
+ group_id,
{
"name": t_name,
"screen_name": t_screen_name,
@@ -149,7 +150,7 @@ async def _check_td():
m: TwitterSubscription = tq.get_nowait()
log.info(f"准备查询推主 {m.name}@{m.screen_name} 的动态,队列剩余 {tq.qsize()}")
- ts = int(m.last_update.timestamp())
+ ts = m.last_update.timestamp()
info: dict = await sub.get_twitter_user_info(m.screen_name)
if not info.get("status", list()):
log.warning(f"无法获取推主 {m.name}@{m.screen_name} 的动态")
@@ -159,17 +160,27 @@ async def _check_td():
t_time = info["status"]["created_at"]
time_patt = "%a %b %d %H:%M:%S +0000 %Y"
- ts_t = datetime.strptime(t_time, time_patt).timestamp()
+ raw_t = datetime.strptime(t_time, time_patt) + timedelta(hours=8)
+ ts_t = raw_t.timestamp()
if ts < ts_t:
+
+ raw_media = info["status"]["entities"].get("media", dict())
+ if raw_media:
+ pic = raw_media[0]["media_url"]
+ url = raw_media[0]["url"]
+ else:
+ pic = str()
+ url = str()
+
data = {
"name": info["name"],
"content": info["status"]["text"],
- "pic": info["status"]["media"]["media_url"],
- "s_id": info["status"]["id"],
+ "pic": pic,
+ "to_url": url,
}
content = sub.gen_output(data)
bot = get_bot()
await bot.send_group_msg(group_id=m.group_id, message=content)
- await sub.update_sub(tid, {"group_id": m.group_id, "last_update": ts_t})
+ await sub.update_sub(tid, m.group_id, {"last_update": raw_t})
diff --git a/ATRI/plugins/twitter/data_source.py b/ATRI/plugins/twitter/data_source.py
index 1695820..0ea7231 100644
--- a/ATRI/plugins/twitter/data_source.py
+++ b/ATRI/plugins/twitter/data_source.py
@@ -37,10 +37,10 @@ class TwitterDynamicSubscriptor(Service):
except TwitterDynamicError:
raise TwitterDynamicError("添加订阅失败")
- async def update_sub(self, tid: int, update_map: dict):
+ async def update_sub(self, tid: int, group_id: int, update_map: dict):
try:
async with DB() as db:
- await db.update_sub(tid, update_map)
+ await db.update_sub(tid, group_id, update_map)
except TwitterDynamicError:
raise TwitterDynamicError("更新订阅失败")
@@ -81,7 +81,7 @@ class TwitterDynamicSubscriptor(Service):
screen_name = data.get("screen_name", None)
return _name, screen_name
- async def gen_output(self, data: dict, limit_content: int = 100) -> str:
+ def gen_output(self, data: dict, limit_content: int = 100) -> str:
"""生成动态信息
Args:
@@ -98,7 +98,7 @@ class TwitterDynamicSubscriptor(Service):
.replace("https://", str())
.replace("http://", str()),
t_dy_media=MessageSegment.image(data["pic"]) if data.get("pic") else str(),
- t_dy_link="twitter.com/nihui/status/" + data["s_id"],
+ t_dy_link=str(data["to_url"]).replace("https://", str()),
)
diff --git a/ATRI/plugins/twitter/db.py b/ATRI/plugins/twitter/db.py
index 52bedd5..69c4611 100644
--- a/ATRI/plugins/twitter/db.py
+++ b/ATRI/plugins/twitter/db.py
@@ -11,8 +11,10 @@ class DB:
async def add_sub(self, tid: int, group_id: int):
await TwitterSubscription.create(tid=tid, group_id=group_id)
- async def update_sub(self, tid: int, update_map: dict):
- await TwitterSubscription.filter(tid=tid).update(**update_map)
+ async def update_sub(self, tid: int, group_id: int, update_map: dict):
+ await TwitterSubscription.filter(tid=tid, group_id=group_id).update(
+ **update_map
+ )
async def del_sub(self, query_map: dict):
await TwitterSubscription.filter(**query_map).delete()