diff --git a/README.md b/README.md index 9398662..90bc80a 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ MoviePilot三方插件市场:https://github.com/thsrite/MoviePilot-Plugins/ - [插件自动更新 1.2](docs%2FPluginAutoUpdate.md) - [插件强制重装 1.2](docs%2FPluginReInstall.md) - [群辉Webhook通知 1.1](docs%2FSynologyNotify.md) -- [同步CookieCloud 1.1](docs%2FSyncCookieCloud.md) +- [同步CookieCloud 1.2](docs%2FSyncCookieCloud.md) - [日程提醒 1.0](docs%2FScheduleReminder.md) - [订阅提醒 1.1](docs%2FSubscribeReminder.md) - [Emby观影报告 1.5](docs%2FEmbyReporter.md) diff --git a/docs/SyncCookieCloud.md b/docs/SyncCookieCloud.md index bad60df..1121b58 100644 --- a/docs/SyncCookieCloud.md +++ b/docs/SyncCookieCloud.md @@ -2,11 +2,10 @@ ### 更新记录 +- 1.2 同步到本地CookieCloud - 1.1 修复CookieCloud覆盖到浏览器 - 1.0 同步MoviePilot站点Cookie到CookieCloud -1、同步MoviePilot站点Cookie到CookieCloud +1、同步MoviePilot站点Cookie到本地CookieCloud -2、看到日志返回成功之后,浏览器的CookieCloud选择覆盖到浏览器,手动同步即可 - -注:如果执行失败,进入mp容器执行 `pip install PyCookieCloud` \ No newline at end of file +2、看到日志返回成功之后,浏览器的CookieCloud选择覆盖到浏览器,手动同步即可 \ No newline at end of file diff --git a/package.json b/package.json index 0e5f2c5..811c413 100644 --- a/package.json +++ b/package.json @@ -73,8 +73,8 @@ }, "SyncCookieCloud": { "name": "同步CookieCloud", - "description": "同步MoviePilot站点Cookie到CookieCloud。", - "version": "1.1", + "description": "同步MoviePilot站点Cookie到本地CookieCloud。", + "version": "1.2", "icon": "https://raw.githubusercontent.com/thsrite/MoviePilot-Plugins/main/icons/cookiecloud.png", "author": "thsrite", "level": 1 diff --git a/plugins/synccookiecloud/__init__.py b/plugins/synccookiecloud/__init__.py index 7e20acb..768ed9d 100644 --- a/plugins/synccookiecloud/__init__.py +++ b/plugins/synccookiecloud/__init__.py @@ -1,7 +1,8 @@ +import json from datetime import datetime, timedelta +from hashlib import md5 import pytz -from PyCookieCloud import PyCookieCloud from app.core.config import settings from app.db.site_oper import SiteOper @@ -10,17 +11,18 @@ from typing import Any, List, Dict, Tuple, Optional from app.log import logger from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.triggers.cron import CronTrigger +from app.utils.common import encrypt class SyncCookieCloud(_PluginBase): # 插件名称 plugin_name = "同步CookieCloud" # 插件描述 - plugin_desc = "同步MoviePilot站点Cookie到CookieCloud。" + plugin_desc = "同步MoviePilot站点Cookie到本地CookieCloud。" # 插件图标 plugin_icon = "https://raw.githubusercontent.com/thsrite/MoviePilot-Plugins/main/icons/cookiecloud.png" # 插件版本 - plugin_version = "1.1" + plugin_version = "1.2" # 插件作者 plugin_author = "thsrite" # 作者主页 @@ -92,10 +94,8 @@ class SyncCookieCloud(_PluginBase): if not sites: return - cookie_cloud = PyCookieCloud(settings.COOKIECLOUD_HOST, settings.COOKIECLOUD_KEY, settings.COOKIECLOUD_PASSWORD) - the_key = cookie_cloud.get_the_key() - if not the_key: - logger.error('链接cookiecloud异常,请检查配置') + if not settings.COOKIECLOUD_ENABLE_LOCAL: + logger.error('本地CookieCloud服务器未启用') return cookies = {} @@ -123,10 +123,29 @@ class SyncCookieCloud(_PluginBase): # 覆盖到cookiecloud if cookies: - success = cookie_cloud.update_cookie(cookies) + crypt_key = self._get_crypt_key() + try: + cookies = {'cookie_data': cookies} + encrypted_data = encrypt(json.dumps(cookies).encode('utf-8'), crypt_key).decode('utf-8') + except Exception as e: + logger.error(f"CookieCloud加密失败,{e}") + return + + ck = {'encrypted': encrypted_data} + file = open(settings.COOKIE_PATH / f'{settings.COOKIECLOUD_KEY}.json', 'w') + file.write(json.dumps(ck)) + file.close() logger.info(cookies) - logger.info(f"同步站点cookie到CookieCloud {'成功' if success else '失败'}") + logger.info(f"同步站点cookie到CookieCloud成功") + + def _get_crypt_key(self) -> bytes: + """ + 使用UUID和密码生成CookieCloud的加解密密钥 + """ + md5_generator = md5() + md5_generator.update((str(settings.COOKIECLOUD_KEY).strip() + '-' + str(settings.COOKIECLOUD_PASSWORD).strip()).encode('utf-8')) + return (md5_generator.hexdigest()[:16]).encode('utf-8') def __update_config(self): self.update_config({ @@ -211,6 +230,27 @@ class SyncCookieCloud(_PluginBase): }, ] }, + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + }, + 'content': [ + { + 'component': 'VAlert', + 'props': { + 'type': 'info', + 'variant': 'tonal', + 'text': '需要MoviePilot设定-站点启用本地CookieCloud服务器。' + } + } + ] + } + ] + }, ] } ], { diff --git a/plugins/synccookiecloud/requirements.txt b/plugins/synccookiecloud/requirements.txt deleted file mode 100644 index 7d390da..0000000 --- a/plugins/synccookiecloud/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -PyCookieCloud~=1.0.3 \ No newline at end of file