renamed: FFAI/__pycache__/catch.cpython-313.pyc -> FFAICilent/__pycache__/catch.cpython-313.pyc renamed: FFAI/__pycache__/crawlers.cpython-313.pyc -> FFAICilent/__pycache__/crawlers.cpython-313.pyc renamed: FFAI/__pycache__/crawlers_core.cpython-313.pyc -> FFAICilent/__pycache__/crawlers_core.cpython-313.pyc renamed: FFAI/analyzer.py -> FFAICilent/analyzer.py renamed: FFAI/catch.py -> FFAICilent/catch.py new file: FFAICilent/cloud.py new file: FFAICilent/config/config.ini new file: FFAICilent/config/configloder.py renamed: FFAI/crawlers.py -> FFAICilent/crawlers.py renamed: FFAI/crawlers_core.py -> FFAICilent/crawlers_core.py new file: FFAICilent/local.py new file: FFAICilent/logger.py renamed: FFAI/main.py -> FFAICilent/main.py new file: FFAICilent/manger.py
96 lines
3.2 KiB
Python
96 lines
3.2 KiB
Python
# from crawlers import PureHTMLParser # type: ignore
|
|
from analyzer import PureAnalyzer # type: ignore
|
|
from crawlers_core import CrawlerEngine
|
|
from catch import CacheManager
|
|
from manger import ConnectionManager
|
|
from utils.logger import setup_logging
|
|
|
|
class PureInfoHunter:
|
|
def __init__(self):
|
|
self.cache_manager = CacheManager()
|
|
self.crawler = CrawlerEngine(self.cache_manager)
|
|
self.analyzer = PureAnalyzer()
|
|
self.catch = CacheManager()
|
|
|
|
def run(self, query: str):
|
|
# 1. 获取数据(优先缓存)
|
|
data = self.catch(query)
|
|
|
|
# 2. 分析(自动检索历史缓存)
|
|
result = self.analyzer.analyze(data, query)
|
|
|
|
# 3. 生成报告
|
|
report = "="*40 + "\n"
|
|
report += f"搜索词: {query}\n"
|
|
|
|
if result.get("related_history"):
|
|
report += f"关联历史记录: {', '.join(result['related_history'])}\n"
|
|
|
|
report += "\n分析结果:\n" + result["summary"] + "\n"
|
|
report += "数据来源:\n"
|
|
for url in result["sources"]:
|
|
report += f"- {url}\n"
|
|
|
|
# 保存本次报告
|
|
self._save_report(query, report)
|
|
return report
|
|
|
|
def _save_report(self, query: str, content: str):
|
|
"""保存分析报告"""
|
|
safe_query = "".join(c if c.isalnum() else "_" for c in query)
|
|
with open(f"reports/{safe_query}_report.txt", "w", encoding="utf-8") as f:
|
|
f.write(content)
|
|
print(f"报告已保存到 reports/{safe_query}_report.txt")
|
|
|
|
def sync_local_cache(self):
|
|
if self.mode == 'local':
|
|
cloud_data = self.cloud.execute("get_all_updates")
|
|
self.local.save_cache(cloud_data)
|
|
|
|
if __name__ == "__main__":
|
|
import sys
|
|
import os
|
|
os.makedirs("reports", exist_ok=True)
|
|
|
|
# 处理参数缺失的情况
|
|
if len(sys.argv) < 2:
|
|
print("使用方法: python pure_main.py '搜索关键词' [force_update]")
|
|
print("示例: python pure_main.py '人工智能' true")
|
|
query = input("请输入要搜索的关键词: ") # 改为交互式输入
|
|
|
|
force_update = input("是否强制更新(true/false)? ").lower() == "true"
|
|
else:
|
|
# query = sys.argv[1]
|
|
force_update = len(sys.argv) > 2 and sys.argv[2].lower() == "true"
|
|
|
|
hunter = PureInfoHunter()
|
|
|
|
setup_logging()
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('command', help='执行指令或查询')
|
|
parser.add_argument('--local', action='store_true',
|
|
help='强制使用本地模式')
|
|
args = parser.parse_args()
|
|
|
|
manager = ConnectionManager()
|
|
try:
|
|
if args.local:
|
|
manager.mode = 'local'
|
|
|
|
result = manager.execute(args.command)
|
|
print(f"✅ 执行成功 (模式: {manager.mode.upper()})")
|
|
print(result)
|
|
|
|
except Exception as e:
|
|
print(f"❌ 执行失败: {str(e)}")
|
|
exit(1)
|
|
|
|
if force_update:
|
|
print("强制更新模式(忽略缓存)")
|
|
data = hunter.crawler.crawl(query) # 使用实际存在的方法名
|
|
result = hunter.analyzer.analyze(data, query)
|
|
else:
|
|
result = hunter.run(query)
|
|
|
|
print(result) |