diff --git a/package.json b/package.json index c193f29..ce7bd03 100644 --- a/package.json +++ b/package.json @@ -263,7 +263,7 @@ "InvitesSignin": { "name": "药丸签到", "description": "药丸论坛签到。", - "version": "1.0", + "version": "1.1", "icon": "invites.png", "color": "#FFFFFF", "author": "thsrite", diff --git a/plugins/invitessignin/__init__.py b/plugins/invitessignin/__init__.py index 8e2c516..cbcdaa0 100644 --- a/plugins/invitessignin/__init__.py +++ b/plugins/invitessignin/__init__.py @@ -24,7 +24,7 @@ class InvitesSignin(_PluginBase): # 主题色 plugin_color = "#FFFFFF" # 插件版本 - plugin_version = "1.0" + plugin_version = "1.1" # 插件作者 plugin_author = "thsrite" # 作者主页 @@ -157,6 +157,17 @@ class InvitesSignin(_PluginBase): text=f"累计签到 {totalContinuousCheckIn} \n" f"剩余药丸 {money}") + # 读取历史记录 + history = self.get_data('history') or [] + + history.append({ + "date": datetime.today().strftime('%Y-%m-%d %H:%M:%S'), + "totalContinuousCheckIn": totalContinuousCheckIn, + "money": money + }) + # 保存签到历史 + self.save_data(key="history", value=history) + def get_state(self) -> bool: return self._enabled @@ -172,131 +183,232 @@ class InvitesSignin(_PluginBase): 拼装插件配置页面,需要返回两块数据:1、页面配置;2、数据结构 """ return [ - { - 'component': 'VForm', - 'content': [ - { - 'component': 'VRow', - 'content': [ - { - 'component': 'VCol', - 'props': { - 'cols': 12, - 'md': 4 - }, - 'content': [ - { - 'component': 'VSwitch', - 'props': { - 'model': 'enabled', - 'label': '启用插件', - } - } - ] - }, - { - 'component': 'VCol', - 'props': { - 'cols': 12, - 'md': 4 - }, - 'content': [ - { - 'component': 'VSwitch', - 'props': { - 'model': 'notify', - 'label': '开启通知', - } - } - ] - }, - { - 'component': 'VCol', - 'props': { - 'cols': 12, - 'md': 4 - }, - 'content': [ - { - 'component': 'VSwitch', - 'props': { - 'model': 'onlyonce', - 'label': '立即运行一次', - } - } - ] - } - ] - }, - { - 'component': 'VRow', - 'content': [ - { - 'component': 'VCol', - 'props': { - 'cols': 12, - 'md': 6 - }, - 'content': [ - { - 'component': 'VTextField', - 'props': { - 'model': 'cron', - 'label': '签到周期' - } - } - ] - }, - { - 'component': 'VCol', - 'props': { - 'cols': 12, - 'md': 6 - }, - 'content': [ - { - 'component': 'VTextField', - 'props': { - 'model': 'cookie', - 'label': '药丸cookie' - } - } - ] - } - ] - }, - { - 'component': 'VRow', + { + 'component': 'VForm', + 'content': [ + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 4 + }, 'content': [ { - 'component': 'VCol', + 'component': 'VSwitch', 'props': { - 'cols': 12, - }, - 'content': [ - { - 'component': 'VAlert', - 'props': { - 'type': 'info', - 'variant': 'tonal', - 'text': '整点定时签到失败?不妨换个时间试试' - } - } - ] + 'model': 'enabled', + 'label': '启用插件', + } + } + ] + }, + { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 4 + }, + 'content': [ + { + 'component': 'VSwitch', + 'props': { + 'model': 'notify', + 'label': '开启通知', + } + } + ] + }, + { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 4 + }, + 'content': [ + { + 'component': 'VSwitch', + 'props': { + 'model': 'onlyonce', + 'label': '立即运行一次', + } } ] } - ] - } - ], { - "enabled": False, - "onlyonce": False, - "notify": False, - "cookie": "", - "cron": "0 9 * * *" - } + ] + }, + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 6 + }, + 'content': [ + { + 'component': 'VTextField', + 'props': { + 'model': 'cron', + 'label': '签到周期' + } + } + ] + }, + { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 6 + }, + 'content': [ + { + 'component': 'VTextField', + 'props': { + 'model': 'cookie', + 'label': '药丸cookie' + } + } + ] + } + ] + }, + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + }, + 'content': [ + { + 'component': 'VAlert', + 'props': { + 'type': 'info', + 'variant': 'tonal', + 'text': '整点定时签到失败?不妨换个时间试试' + } + } + ] + } + ] + } + ] + } + ], { + "enabled": False, + "onlyonce": False, + "notify": False, + "cookie": "", + "cron": "0 9 * * *" + } def get_page(self) -> List[dict]: + # 查询同步详情 + historys = self.get_data('history') + if not historys: + return [ + { + 'component': 'div', + 'text': '暂无数据', + 'props': { + 'class': 'text-center', + } + } + ] + + if not isinstance(historys, list): + historys = [historys] + + # 按照签到时间倒序 + historys = sorted(historys, key=lambda x: x.get("date") or 0, reverse=True) + + # 签到消息 + sign_msgs = [ + { + 'component': 'tr', + 'props': { + 'class': 'text-sm' + }, + 'content': [ + { + 'component': 'td', + 'props': { + 'class': 'whitespace-nowrap break-keep text-high-emphasis' + }, + 'text': history.get("date") + }, + { + 'component': 'td', + 'text': history.get("totalContinuousCheckIn") + }, + { + 'component': 'td', + 'text': history.get("money") + } + ] + } for history in historys + ] + + # 拼装页面 + return [ + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + }, + 'content': [ + { + 'component': 'VTable', + 'props': { + 'hover': True + }, + 'content': [ + { + 'component': 'thead', + 'content': [ + { + 'component': 'th', + 'props': { + 'class': 'text-start ps-4' + }, + 'text': '时间' + }, + { + 'component': 'th', + 'props': { + 'class': 'text-start ps-4' + }, + 'text': '连续签到次数' + }, + { + 'component': 'th', + 'props': { + 'class': 'text-start ps-4' + }, + 'text': '剩余药丸' + }, + ] + }, + { + 'component': 'tbody', + 'content': sign_msgs + } + ] + } + ] + } + ] + } + ] + pass def stop_service(self):