diff options
author | Kyomotoi <[email protected]> | 2022-06-18 00:26:50 +0800 |
---|---|---|
committer | Kyomotoi <[email protected]> | 2022-06-18 00:26:50 +0800 |
commit | 654ec7e009c4dde07af1359238660440d38825cc (patch) | |
tree | 8b26da57e0c2de8e4a489fa9f7b7c7ddefaad481 /ATRI/plugins/twitter/api.py | |
parent | 12757bc2ef4c353a578387a8c7646376df15dd93 (diff) | |
download | ATRI-654ec7e009c4dde07af1359238660440d38825cc.tar.gz ATRI-654ec7e009c4dde07af1359238660440d38825cc.tar.bz2 ATRI-654ec7e009c4dde07af1359238660440d38825cc.zip |
🚚♿️💩 移动插件自检位置, 提升用户体验, 优化代码
Diffstat (limited to 'ATRI/plugins/twitter/api.py')
-rw-r--r-- | ATRI/plugins/twitter/api.py | 60 |
1 files changed, 21 insertions, 39 deletions
diff --git a/ATRI/plugins/twitter/api.py b/ATRI/plugins/twitter/api.py index 2fefbb2..9023478 100644 --- a/ATRI/plugins/twitter/api.py +++ b/ATRI/plugins/twitter/api.py @@ -1,12 +1,7 @@ import re -from time import sleep -from ATRI import driver -from ATRI.log import logger as log from ATRI.utils import request -from ATRI.service import ServiceTools from ATRI.exceptions import RequestError -from ATRI.utils.apscheduler import scheduler _GUEST_TOKEN: str = str() @@ -47,7 +42,7 @@ class API: url = "https://api.twitter.com/1.1/guest/activate.json" try: resp = await request.post(url, headers=headers) - except RequestError: + except Exception: raise RequestError("Request failed!") data: dict = resp.json() @@ -63,7 +58,7 @@ class API: url = "https://twitter.com/explore" try: resp = await request.get(url, headers=headers) - except RequestError: + except Exception: raise RequestError("Request failed!") data = str(resp.headers) @@ -94,7 +89,7 @@ class API: headers = self._gen_headers() try: resp = await request.get(url, params=params, headers=headers) - except RequestError: + except Exception: raise RequestError("Request failed!") return resp.json() @@ -114,8 +109,23 @@ class API: return dict() return data[0] + async def get_user_info(self, tid: int) -> dict: + """通过提供的信息获取对应用户信息 + + Args: + tid (int): 用户ID + + Returns: + dict: 用户信息. + """ + url = f"https://api.twitter.com/2/users/{tid}" + data = await self._request(url) + if not data: + return dict() + return data + async def get_conversation(self, tweet_id: int) -> dict: - """通过传入的值获取推文信息(无法工作) + """通过传入的值获取推文信息 Args: tweet_id (int): 推文id @@ -125,37 +135,9 @@ class API: """ url = f"https://twitter.com/i/api/2/timeline/conversation/{tweet_id}.json" params = { - "simple_quoted_tweet": "true", + "simple_quoted_tweet": True, "tweet_mode": "extended", - "trim_user": "true", + "trim_user": True, } data = await self._request(url, params) return data - - -async def _regot_token(): - api = API() - await api.get_token() - # await api.get_cookie() - - -async def _check_status(): - headers = { - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" - } - try: - await request.get("https://twitter.com/", headers=headers) - log.success("已成功连接: Twitter") - except RequestError: - data = ServiceTools.load_service("推特动态订阅") - data["enabled"] = False - ServiceTools.save_service(data, "推特动态订阅") - log.warning("无法连接至 Twitter,这将导致相关插件无法工作. 已自动禁用. 3s后继续...") - sleep(3) - - -scheduler.add_job(_regot_token, "interval", name="刷新推特凭据", minutes=30, misfire_grace_time=10) # type: ignore - - -driver().on_startup(_regot_token) -driver().on_startup(_check_status) |