From def2b5b3c5986dfc46d0d976690cc1c892a6ad84 Mon Sep 17 00:00:00 2001 From: projectdx Date: Wed, 7 Jan 2026 00:01:03 +0900 Subject: [PATCH] Linkkf GDM integration: ModuleQueue delegation (already has CachedSession) --- info.yaml | 2 +- mod_linkkf.py | 41 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/info.yaml b/info.yaml index 8df539f..3c80408 100644 --- a/info.yaml +++ b/info.yaml @@ -1,5 +1,5 @@ title: "애니 다운로더" -version: "0.6.0" +version: "0.6.1" package_name: "anime_downloader" developer: "projectdx" description: "anime downloader" diff --git a/mod_linkkf.py b/mod_linkkf.py index ebed5f6..db826e9 100644 --- a/mod_linkkf.py +++ b/mod_linkkf.py @@ -30,6 +30,12 @@ from lxml import html from .mod_base import AnimeModuleBase from requests_cache import CachedSession +# GDM Integration +try: + from gommi_downloader_manager.mod_queue import ModuleQueue +except ImportError: + ModuleQueue = None + # cloudscraper는 lazy import로 처리 import cloudscraper @@ -1569,7 +1575,40 @@ class LogicLinkkf(AnimeModuleBase): db_entity.save() return "file_exists" - # 4. Proceed with queue addition + # 4. Try GDM if available (like Ohli24/Anilife) + if ModuleQueue is not None: + entity = LinkkfQueueEntity(P, self, episode_info) + logger.debug("entity:::> %s", entity.as_dict()) + + # Save to DB first + if db_entity is None: + ModelLinkkfItem.append(entity.as_dict()) + + # Prepare GDM options + gdm_options = { + "url": entity.url, + "save_path": entity.savepath, + "filename": entity.filename, + "source_type": "linkkf", + "caller_plugin": f"{P.package_name}_{self.name}", + "callback_id": episode_info["_id"], + "title": entity.filename or episode_info.get('title'), + "thumbnail": episode_info.get('image'), + "meta": { + "series": entity.content_title, + "season": entity.season, + "episode": entity.epi_queue, + "source": "linkkf" + }, + } + + task = ModuleQueue.add_download(**gdm_options) + if task: + logger.info(f"Delegated Linkkf download to GDM: {entity.filename}") + return "enqueue_gdm_success" + + # 5. Fallback to FfmpegQueue if GDM not available + logger.warning("GDM Module not found, falling back to FfmpegQueue") queue_len = len(self.queue.entity_list) if self.queue else 0 logger.info(f"add() - Queue length: {queue_len}, episode _id: {episode_info.get('_id')}")