46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
"""
|
|
公司搜索控制器 — 使用新 crawler service 替代已删除的 company_spider
|
|
"""
|
|
|
|
import asyncio
|
|
from typing import Any, Dict, List, Optional
|
|
|
|
from loguru import logger
|
|
|
|
from app.services.crawler.qcwy import QcwyService
|
|
from app.services.crawler.zhilian import ZhilianService
|
|
|
|
|
|
class CompanyController:
|
|
def __init__(self):
|
|
self._qcwy = QcwyService()
|
|
self._zhilian = ZhilianService()
|
|
|
|
async def search_qcwy_company(self, keyword: str) -> Optional[Dict[str, Any]]:
|
|
try:
|
|
return await asyncio.to_thread(self._qcwy.get_company_info, keyword)
|
|
except Exception as e:
|
|
logger.error(f"Qcwy company search failed: {e}")
|
|
return None
|
|
|
|
async def search_zhilian_company(
|
|
self, keyword: str, city: Optional[str] = None
|
|
) -> List[Dict[str, Any]]:
|
|
try:
|
|
result = await asyncio.to_thread(
|
|
self._zhilian.search_company_jobs_by_name, keyword
|
|
)
|
|
if result and isinstance(result, dict):
|
|
data = result.get("data", {})
|
|
if isinstance(data, dict):
|
|
return data.get("list", [])
|
|
return []
|
|
return []
|
|
except Exception as e:
|
|
logger.error(f"Zhilian company search failed: {e}")
|
|
return []
|
|
|
|
|
|
def create_company_controller() -> CompanyController:
|
|
return CompanyController()
|