From 7b255880c961c6ed69de44d1b00e39cd6d14050d Mon Sep 17 00:00:00 2001 From: thsrite Date: Fri, 4 Aug 2023 20:31:54 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix=20=E7=AD=BE=E5=88=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/plugins/autosignin/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/plugins/autosignin/__init__.py b/app/plugins/autosignin/__init__.py index c125fc53..b210b01e 100644 --- a/app/plugins/autosignin/__init__.py +++ b/app/plugins/autosignin/__init__.py @@ -75,7 +75,7 @@ class AutoSignIn(_PluginBase): self._enabled = config.get("enabled") self._cron = config.get("cron") self._notify = config.get("notify") - self._queue_cnt = config.get("queue_cnt") + self._queue_cnt = config.get("queue_cnt") or 5 self._sign_sites = config.get("sign_sites") # 加载模块 @@ -385,7 +385,7 @@ class AutoSignIn(_PluginBase): # 执行签到 logger.info("开始执行签到任务 ...") - with ThreadPool(min(len(sign_sites), self._queue_cnt)) as p: + with ThreadPool(min(len(sign_sites), int(self._queue_cnt))) as p: status = p.map(self.signin_site, sign_sites) if status: From 0b9bb90a6376746a65fd8c70dabd56f530a84267 Mon Sep 17 00:00:00 2001 From: thsrite Date: Fri, 4 Aug 2023 20:32:21 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix=20jellyfin=E8=A7=A3=E6=9E=90=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=AD=A3=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/plugins/mediasyncdel/__init__.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app/plugins/mediasyncdel/__init__.py b/app/plugins/mediasyncdel/__init__.py index 60f1625d..e6b3de8a 100644 --- a/app/plugins/mediasyncdel/__init__.py +++ b/app/plugins/mediasyncdel/__init__.py @@ -500,7 +500,6 @@ class MediaSyncDel(_PluginBase): mtype = match[1] name = match[2] path = match[3] - mid = match[4] year = None year_pattern = r'\(\d+\)' @@ -542,7 +541,6 @@ class MediaSyncDel(_PluginBase): "name": name, "year": year, "path": path, - "id": mid, "season": season, "episode": episode, } @@ -571,7 +569,7 @@ class MediaSyncDel(_PluginBase): return [] # 正则解析删除的媒体信息 - pattern = r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}) Info App: Removing item from database, Type: (\w+), Name: (.*), Path: (.*), Id: (\d+)' + pattern = r'\[(.*?)\].*?Removing item, Type: "(.*?)", Name: "(.*?)", Path: "(.*?)"' matches = re.findall(pattern, log_res.text) del_medias = [] @@ -585,7 +583,6 @@ class MediaSyncDel(_PluginBase): mtype = match[1] name = match[2] path = match[3] - mid = match[4] year = None year_pattern = r'\(\d+\)' @@ -627,7 +624,6 @@ class MediaSyncDel(_PluginBase): "name": name, "year": year, "path": path, - "id": mid, "season": season, "episode": episode, } From 286dd9570d06795f4a07fca114a4e6121ebeaac1 Mon Sep 17 00:00:00 2001 From: thsrite Date: Fri, 4 Aug 2023 20:38:08 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix=20=E5=BC=80=E5=90=AF=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E5=90=8E=E5=86=8D=E5=90=AF=E5=8A=A8=E7=9B=91=E6=8E=A7=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/plugins/dirmonitor/__init__.py | 73 +++++++++++++++--------------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/app/plugins/dirmonitor/__init__.py b/app/plugins/dirmonitor/__init__.py index 0b991928..c235c35c 100644 --- a/app/plugins/dirmonitor/__init__.py +++ b/app/plugins/dirmonitor/__init__.py @@ -88,43 +88,44 @@ class DirMonitor(_PluginBase): # 停止现有任务 self.stop_service() - # 启动任务 - monitor_dirs = self._monitor_dirs.split("\n") - if not monitor_dirs: - return - for mon_path in monitor_dirs: - if not mon_path: - continue - # 检查目录是不是媒体库目录的子目录 - if Path(mon_path).is_relative_to(settings.LIBRARY_PATH): - logger.warn(f"{mon_path} 是媒体库目录的子目录,无法监控") - self.systemmessage.put(f"{mon_path} 是媒体库目录的子目录,无法监控") - continue + if self._enabled: + # 启动任务 + monitor_dirs = self._monitor_dirs.split("\n") + if not monitor_dirs: + return + for mon_path in monitor_dirs: + if not mon_path: + continue + # 检查目录是不是媒体库目录的子目录 + if Path(mon_path).is_relative_to(settings.LIBRARY_PATH): + logger.warn(f"{mon_path} 是媒体库目录的子目录,无法监控") + self.systemmessage.put(f"{mon_path} 是媒体库目录的子目录,无法监控") + continue - try: - if self._mode == "compatibility": - # 兼容模式,目录同步性能降低且NAS不能休眠,但可以兼容挂载的远程共享目录如SMB - observer = PollingObserver(timeout=10) - else: - # 内部处理系统操作类型选择最优解 - observer = Observer(timeout=10) - self._observer.append(observer) - observer.schedule(FileMonitorHandler(mon_path, self), path=mon_path, recursive=True) - observer.daemon = True - observer.start() - logger.info(f"{mon_path} 的目录监控服务启动") - except Exception as e: - err_msg = str(e) - if "inotify" in err_msg and "reached" in err_msg: - logger.warn(f"目录监控服务启动出现异常:{err_msg},请在宿主机上(不是docker容器内)执行以下命令并重启:" - + """ - echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf - echo fs.inotify.max_user_instances=524288 | sudo tee -a /etc/sysctl.conf - sudo sysctl -p - """) - else: - logger.error(f"{mon_path} 启动目录监控失败:{err_msg}") - self.systemmessage.put(f"{mon_path} 启动目录监控失败:{err_msg}") + try: + if self._mode == "compatibility": + # 兼容模式,目录同步性能降低且NAS不能休眠,但可以兼容挂载的远程共享目录如SMB + observer = PollingObserver(timeout=10) + else: + # 内部处理系统操作类型选择最优解 + observer = Observer(timeout=10) + self._observer.append(observer) + observer.schedule(FileMonitorHandler(mon_path, self), path=mon_path, recursive=True) + observer.daemon = True + observer.start() + logger.info(f"{mon_path} 的目录监控服务启动") + except Exception as e: + err_msg = str(e) + if "inotify" in err_msg and "reached" in err_msg: + logger.warn(f"目录监控服务启动出现异常:{err_msg},请在宿主机上(不是docker容器内)执行以下命令并重启:" + + """ + echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf + echo fs.inotify.max_user_instances=524288 | sudo tee -a /etc/sysctl.conf + sudo sysctl -p + """) + else: + logger.error(f"{mon_path} 启动目录监控失败:{err_msg}") + self.systemmessage.put(f"{mon_path} 启动目录监控失败:{err_msg}") def file_change_handler(self, event, text: str, event_path: str): """