diff --git a/info.yaml b/info.yaml index da693c4..8ac22c1 100644 --- a/info.yaml +++ b/info.yaml @@ -1,6 +1,6 @@ title: "GDM" package_name: gommi_downloader_manager -version: '0.2.28' +version: '0.2.29' description: FlaskFarm 범용 다운로더 큐 - YouTube, 애니24, 링크애니, Anilife 지원 developer: projectdx home: https://gitea.yommi.duckdns.org/projectdx/gommi_downloader_manager diff --git a/mod_queue.py b/mod_queue.py index f1c2395..65e2c34 100644 --- a/mod_queue.py +++ b/mod_queue.py @@ -890,7 +890,19 @@ class DownloadTask: else: modules = [] + # 모듈명 추출 (예: anime_downloader_linkkf -> linkkf) + target_module_name = None + if len(parts) > 1: + target_module_name = parts[-1] + for module_name, module_instance in modules: + # 모듈 인스턴스의 name 또는 변수명 확인 + instance_name = getattr(module_instance, 'name', module_name) + + # 대상 모듈명이 지정되어 있으면 일치하는 경우에만 호출 + if target_module_name and instance_name != target_module_name: + continue + if hasattr(module_instance, 'plugin_callback'): callback_data = { 'callback_id': self.callback_id, @@ -901,8 +913,10 @@ class DownloadTask: } module_instance.plugin_callback(callback_data) callback_invoked = True - P.logger.info(f"Callback invoked on module {module_name}") - break + P.logger.info(f"Callback invoked on module {instance_name}") + # 대상 모듈을 명확히 찾았으면 종료 + if target_module_name: + break if not callback_invoked: P.logger.debug(f"No plugin_callback method found in {self.caller_plugin}") diff --git a/templates/gommi_downloader_manager_queue_list.html b/templates/gommi_downloader_manager_queue_list.html index f41de59..fcb30e3 100644 --- a/templates/gommi_downloader_manager_queue_list.html +++ b/templates/gommi_downloader_manager_queue_list.html @@ -740,6 +740,65 @@ opacity: 0.25; cursor: not-allowed; } + + /* ===== CUSTOM CROSSHAIR CURSOR ===== */ + .custom-cursor-outer { + position: fixed; + width: 36px; + height: 36px; + background: rgba(168, 85, 247, 0.25); + border: none; + pointer-events: none; + z-index: 99999; + transform: translate(-50%, -50%); + transition: width 0.15s ease, height 0.15s ease, background 0.15s ease, transform 0.15s ease, filter 0.15s ease; + /* 5-point star clip-path */ + clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%); + /* Strong outline via multiple drop-shadows */ + filter: + drop-shadow(0 0 0 rgba(168, 85, 247, 1)) + drop-shadow(1px 0 0 rgba(168, 85, 247, 1)) + drop-shadow(-1px 0 0 rgba(168, 85, 247, 1)) + drop-shadow(0 1px 0 rgba(168, 85, 247, 1)) + drop-shadow(0 -1px 0 rgba(168, 85, 247, 1)); + } + + .custom-cursor-dot { + position: fixed; + width: 6px; + height: 6px; + background: rgba(168, 85, 247, 1); + border-radius: 50%; + pointer-events: none; + z-index: 99999; + transform: translate(-50%, -50%); + transition: transform 0.08s ease; + } + + /* Cursor hover state on interactive elements */ + .custom-cursor-outer.hovering { + width: 38px; + height: 38px; + background: rgba(192, 132, 252, 0.5); + transform: translate(-50%, -50%) rotate(36deg); + } + + .custom-cursor-dot.hovering { + transform: translate(-50%, -50%) scale(1.3); + } + + /* Hide default cursor when custom cursor is active */ + #gommi_download_manager_queue_list, + #gommi_download_manager_queue_list * { + cursor: none !important; + } + + /* Exception: keep pointer on buttons for accessibility hint */ + #gommi_download_manager_queue_list button:hover, + #gommi_download_manager_queue_list .dl-btn:hover, + #gommi_download_manager_queue_list .btn-premium:hover { + cursor: none !important; + }
@@ -767,6 +826,70 @@
+ +
+
+ + +