Skip to content

Commit

Permalink
add 弹幕打卡后自动换回原来的牌子,增加升级日期提示
Browse files Browse the repository at this point in the history
  • Loading branch information
15619 committed Jul 23, 2022
1 parent 5a09287 commit 5258d9f
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 7 deletions.
4 changes: 3 additions & 1 deletion main.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,12 @@ async def main():
try:
await asyncio.gather(*initTasks)
await asyncio.gather(*startTasks)
messageList = messageList + list(itertools.chain.from_iterable(await asyncio.gather(*catchMsg)))
except Exception as e:
log.exception(e)
# messageList = messageList + list(itertools.chain.from_iterable(await asyncio.gather(*catchMsg)))
messageList.append(f"任务执行失败: {e}")
finally:
messageList = messageList + list(itertools.chain.from_iterable(await asyncio.gather(*catchMsg)))
[log.info(message) for message in messageList]
if users.get('SENDKEY', ''):
await push_message(session, users['SENDKEY'], " \n".join(messageList))
Expand Down
16 changes: 15 additions & 1 deletion src/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ async def shareRoom(self, room_id: int):
}
),
)
# await asyncio.sleep(self.u.config['SHARE_CD'] if not self.u.config['ASYNC'] else 5)
# await asyncio.sleep(self.u.config['SHARE_CD'] if not self.u.config['ASYNC'] else 5)

async def sendDanmaku(self, room_id: int) -> str:
"""
Expand Down Expand Up @@ -296,6 +296,20 @@ async def getUserInfo(self):
}
return await self.__get(url, params=SingableDict(params).signed, headers=self.headers)

async def getMedalsInfoByUid(self, uid: int):
"""
用户勋章信息
"""
url = "https://api.live.bilibili.com/xlive/app-ucenter/v1/fansMedal/fans_medal_info"
params = {
"access_key": self.u.access_key,
"actionKey": "appkey",
"appkey": Crypto.APPKEY,
"ts": int(time.time()),
"target_id": uid,
}
return await self.__get(url, params=SingableDict(params).signed, headers=self.headers)

# async def entryRoom(self, room_id: int, up_id: int):
# data = {
# "access_key": self.u.access_key,
Expand Down
28 changes: 23 additions & 5 deletions src/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import asyncio
import uuid
from loguru import logger
from datetime import datetime, timedelta

sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

Expand Down Expand Up @@ -51,8 +52,12 @@ async def loginVerify(self) -> bool:
if loginInfo['mid'] == 0:
self.isLogin = False
return False
userInfo = await self.api.getUserInfo()
if userInfo['medal']:
medalInfo = await self.api.getMedalsInfoByUid(userInfo['medal']['target_id'])
if medalInfo['has_fans_medal']:
self.initialMedal = medalInfo['my_fans_medal']
self.log.log("SUCCESS", str(loginInfo['mid']) + " 登录成功")

self.isLogin = True
return True

Expand Down Expand Up @@ -181,10 +186,8 @@ async def sendDanmaku(self):
self.errmsg.append(f"【{self.name}{medal['anchor_info']['nick_name']} 房间弹幕打卡失败: {str(e)}")
finally:
await asyncio.sleep(self.config['DANMAKU_CD'])
if hasattr(self, 'wearedMedal'):
(await self.api.wearMedal(self.wearedMedal['medal']['medal_id'])) if self.config[
'WEARMEDAL'
] else ...
if hasattr(self, 'initialMedal'):
(await self.api.wearMedal(self.initialMedal['medal_id'])) if self.config['WEARMEDAL'] else ...
self.log.log("SUCCESS", "弹幕打卡任务完成")
self.message.append(f"【{self.name}】 弹幕打卡任务完成 {n}/{len(self.medals)}")

Expand Down Expand Up @@ -228,6 +231,21 @@ async def sendmsg(self):
):
if len(l) > 0:
self.message.append(f"{n}" + ' '.join(l[:5]) + f"{'等' if len(l) > 5 else ''}" + f' {len(l)}个')

if hasattr(self, 'initialMedal'):
initialMedalInfo = await self.api.getMedalsInfoByUid(self.initialMedal['target_id'])
if initialMedalInfo['has_fans_medal']:
initialMedal = initialMedalInfo['my_fans_medal']
self.message.append(
f"【当前佩戴】「{initialMedal['medal_name']}」({initialMedal['target_name']}) {initialMedal['level']} 级 "
)
if initialMedal['level'] < 20 and initialMedal['today_feed'] != 0:
need = initialMedal['next_intimacy'] - initialMedal['intimacy']
need_days = need // initialMedal['today_feed'] + 1
end_date = datetime.now() + timedelta(days=need_days)
self.message.append(
f"距离下一级还需 {need} 亲密度 预计需要 {need_days} 天 ({end_date.strftime('%Y-%m-%d')})"
)
await self.session.close()
return self.message + self.errmsg + ['---']

Expand Down

0 comments on commit 5258d9f

Please sign in to comment.