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: 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): """ 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, }