refactor(06-01): update platform adapters to use standard imports

- Remove sys.path manipulation from bilibili.py and zhihu.py
- Use standard imports from kb_workflow.metadata
- Remove try/except wrappers around imports

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-17 00:01:22 +08:00
parent a4a7454cd0
commit 98f8ec2e27
2 changed files with 7 additions and 40 deletions
+1 -19
View File
@@ -18,7 +18,6 @@ import asyncio
import logging import logging
import os import os
import re import re
import sys
import tempfile import tempfile
from pathlib import Path from pathlib import Path
from typing import Dict, Any, Optional from typing import Dict, Any, Optional
@@ -27,21 +26,10 @@ from .base import PlatformAdapter
from ..errors import NetworkError, AuthError from ..errors import NetworkError, AuthError
from ..retry import retry_on_network_error from ..retry import retry_on_network_error
from ..state import WorkflowStateManager from ..state import WorkflowStateManager
from kb_workflow.metadata.bilibili_extractor import BilibiliExtractor
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
# Add kb-bilibili-metadata to path if not installed as package
_BILIBILI_METADATA_PATH = Path(__file__).parent.parent.parent / "kb-bilibili-metadata"
if _BILIBILI_METADATA_PATH.exists():
sys.path.insert(0, str(_BILIBILI_METADATA_PATH))
try:
from bilibili_extractor import BilibiliExtractor
BILIBILI_EXTRACTOR_AVAILABLE = True
except ImportError:
BILIBILI_EXTRACTOR_AVAILABLE = False
BilibiliExtractor = None
class BilibiliAdapter(PlatformAdapter): class BilibiliAdapter(PlatformAdapter):
"""Bilibili platform adapter for video and article content """Bilibili platform adapter for video and article content
@@ -86,12 +74,6 @@ class BilibiliAdapter(PlatformAdapter):
timeout: Request timeout in seconds (default 30) timeout: Request timeout in seconds (default 30)
state_manager: Optional WorkflowStateManager for recording step status state_manager: Optional WorkflowStateManager for recording step status
""" """
if not BILIBILI_EXTRACTOR_AVAILABLE:
raise ImportError(
"BilibiliExtractor not available. "
"Ensure kb-bilibili-metadata/bilibili_extractor.py is accessible."
)
self._extractor = BilibiliExtractor(headless=headless, timeout=timeout) self._extractor = BilibiliExtractor(headless=headless, timeout=timeout)
self._state_manager = state_manager self._state_manager = state_manager
+6 -21
View File
@@ -11,17 +11,11 @@ from typing import Dict, Any, Optional
from datetime import datetime from datetime import datetime
import re import re
import asyncio import asyncio
import sys
from pathlib import Path
# Add kb-zhihu-metadata to path for import
_kb_zhihu_path = Path(__file__).parent.parent.parent / "kb-zhihu-metadata"
if str(_kb_zhihu_path) not in sys.path:
sys.path.insert(0, str(_kb_zhihu_path))
from kb_pipeline.platforms.base import PlatformAdapter from kb_pipeline.platforms.base import PlatformAdapter
from kb_pipeline.errors import AuthError from kb_pipeline.errors import AuthError
from kb_pipeline.config import get_settings from kb_pipeline.config import get_settings
from kb_workflow.metadata.zhihu_extractor import ZhihuPlaywrightExtractor
class ZhihuAdapter(PlatformAdapter): class ZhihuAdapter(PlatformAdapter):
@@ -89,24 +83,15 @@ class ZhihuAdapter(PlatformAdapter):
def _get_extractor(self): def _get_extractor(self):
"""Get or create ZhihuPlaywrightExtractor instance. """Get or create ZhihuPlaywrightExtractor instance.
Lazy import to avoid dependency issues when kb-zhihu-metadata is not installed.
Returns: Returns:
ZhihuPlaywrightExtractor instance ZhihuPlaywrightExtractor instance
""" """
if self._extractor is None: if self._extractor is None:
try: self._extractor = ZhihuPlaywrightExtractor(
from zhihu_extractor import ZhihuPlaywrightExtractor headless=self.headless,
self._extractor = ZhihuPlaywrightExtractor( timeout=self.timeout,
headless=self.headless, cookie=self.cookie
timeout=self.timeout, )
cookie=self.cookie
)
except ImportError as e:
raise ImportError(
"kb-zhihu-metadata module not found. "
"Please ensure kb-zhihu-metadata directory exists."
) from e
return self._extractor return self._extractor
def _extract_with_playwright(self, url: str) -> Optional[Dict[str, Any]]: def _extract_with_playwright(self, url: str) -> Optional[Dict[str, Any]]: