FC/FFAI/analyzer.py
Friendfeng 925c5e166b new file: FFAI/__pycache__/analyzer.cpython-313.pyc
new file:   FFAI/__pycache__/crawlers.cpython-313.pyc
	new file:   FFAI/analyzer.py
	new file:   FFAI/crawlers.py
	new file:   FFAI/main.py
	renamed:    main/build/newtest/Analysis-00.toc -> test/build/newtest/Analysis-00.toc
	renamed:    main/build/newtest/COLLECT-00.toc -> test/build/newtest/COLLECT-00.toc
	renamed:    main/build/newtest/EXE-00.toc -> test/build/newtest/EXE-00.toc
	renamed:    main/build/newtest/PKG-00.toc -> test/build/newtest/PKG-00.toc
	renamed:    main/build/newtest/PYZ-00.pyz -> test/build/newtest/PYZ-00.pyz
	renamed:    main/build/newtest/PYZ-00.toc -> test/build/newtest/PYZ-00.toc
	renamed:    main/build/newtest/base_library.zip -> test/build/newtest/base_library.zip
	renamed:    main/build/newtest/localpycs/pyimod01_archive.pyc -> test/build/newtest/localpycs/pyimod01_archive.pyc
	renamed:    main/build/newtest/localpycs/pyimod02_importers.pyc -> test/build/newtest/localpycs/pyimod02_importers.pyc
	renamed:    main/build/newtest/localpycs/pyimod03_ctypes.pyc -> test/build/newtest/localpycs/pyimod03_ctypes.pyc
	renamed:    main/build/newtest/localpycs/pyimod04_pywin32.pyc -> test/build/newtest/localpycs/pyimod04_pywin32.pyc
	renamed:    main/build/newtest/localpycs/struct.pyc -> test/build/newtest/localpycs/struct.pyc
	renamed:    main/build/newtest/newtest.exe -> test/build/newtest/newtest.exe
	renamed:    main/build/newtest/newtest.pkg -> test/build/newtest/newtest.pkg
	renamed:    main/build/newtest/warn-newtest.txt -> test/build/newtest/warn-newtest.txt
	renamed:    main/build/newtest/xref-newtest.html -> test/build/newtest/xref-newtest.html
	new file:   test/dist/newtest/_internal/VCRUNTIME140.dll
	renamed:    main/dist/newtest/_internal/_bz2.pyd -> test/dist/newtest/_internal/_bz2.pyd
	renamed:    main/dist/newtest/_internal/_decimal.pyd -> test/dist/newtest/_internal/_decimal.pyd
	renamed:    main/dist/newtest/_internal/_hashlib.pyd -> test/dist/newtest/_internal/_hashlib.pyd
	renamed:    main/dist/newtest/_internal/_lzma.pyd -> test/dist/newtest/_internal/_lzma.pyd
	renamed:    main/dist/newtest/_internal/_socket.pyd -> test/dist/newtest/_internal/_socket.pyd
	renamed:    main/dist/newtest/_internal/api-ms-win-core-console-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-console-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-datetime-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-datetime-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-debug-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-debug-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-errorhandling-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-errorhandling-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-fibers-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-fibers-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-file-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-file-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l1-2-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-file-l2-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l2-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-handle-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-handle-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-heap-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-heap-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-interlocked-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-interlocked-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-libraryloader-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-libraryloader-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-localization-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-localization-l1-2-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-memory-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-memory-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-namedpipe-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-namedpipe-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-processenvironment-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-processenvironment-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-1.dll -> test/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-1.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-profile-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-profile-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-string-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-string-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-synch-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-synch-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-synch-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-synch-l1-2-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-sysinfo-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-sysinfo-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-timezone-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-timezone-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-core-util-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-util-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-crt-conio-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-conio-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-crt-convert-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-convert-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-crt-environment-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-environment-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-crt-filesystem-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-filesystem-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-crt-heap-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-heap-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-crt-locale-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-locale-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-crt-math-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-math-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-crt-process-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-process-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-crt-runtime-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-runtime-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-crt-stdio-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-stdio-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-crt-string-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-string-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-crt-time-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-time-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/api-ms-win-crt-utility-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-utility-l1-1-0.dll
	renamed:    main/dist/newtest/_internal/base_library.zip -> test/dist/newtest/_internal/base_library.zip
	renamed:    main/dist/newtest/_internal/libcrypto-3.dll -> test/dist/newtest/_internal/libcrypto-3.dll
	renamed:    main/dist/newtest/_internal/python313.dll -> test/dist/newtest/_internal/python313.dll
	renamed:    main/dist/newtest/_internal/select.pyd -> test/dist/newtest/_internal/select.pyd
	renamed:    main/dist/newtest/_internal/ucrtbase.dll -> test/dist/newtest/_internal/ucrtbase.dll
	renamed:    main/dist/newtest/_internal/unicodedata.pyd -> test/dist/newtest/_internal/unicodedata.pyd
	renamed:    main/dist/newtest/newtest.exe -> test/dist/newtest/newtest.exe
	renamed:    main/newtest.py -> test/newtest.py
	renamed:    main/newtest.spec -> test/newtest.spec
2025-06-06 23:33:48 +08:00

39 lines
1.3 KiB
Python

import re
from collections import Counter
class PureAnalyzer:
@staticmethod
def search_in_cache(query: str, cache_dir="cache") -> list:
"""在缓存中检索历史记录"""
if not os.path.exists(cache_dir):
return []
related_files = []
safe_query = query.lower()
for filename in os.listdir(cache_dir):
if safe_query in filename.lower():
with open(f"{cache_dir}/{filename}", "r", encoding="utf-8") as f:
content = f.read()
related_files.append({
"query": filename.replace(".txt", ""),
"content": content
})
return related_files
@staticmethod
def analyze(data: list, query: str) -> dict:
# 先检查缓存中的相关记录
history = PureAnalyzer.search_in_cache(query)
# 合并新旧数据
all_text = " ".join(d.get("text", "") for d in data)
if history:
all_text += " " + " ".join(h["content"] for h in history)
# ...(保持原有的分析逻辑)...
return {
"summary": summary,
"keywords": keywords,
"sources": [d["url"] for d in data],
"related_history": [h["query"] for h in history]
}