fa45d8aa5f
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
Privoxy对node122:18003返回500,直连正常
45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
"""
|
|
Auto-detect content type per message: code, JSON, or text.
|
|
"""
|
|
|
|
import json
|
|
import re
|
|
|
|
_CODE_KEYWORDS = re.compile(
|
|
r"\b(?:def |function |class |import |from |require\(|#include|fn |func |const |let |var |public |private |static )\b"
|
|
)
|
|
|
|
|
|
def detect_content_type(content: str) -> str:
|
|
"""
|
|
Detect whether content is code, JSON, or plain text.
|
|
|
|
Returns one of: "code", "json", "text"
|
|
"""
|
|
stripped = content.strip()
|
|
if not stripped:
|
|
return "text"
|
|
|
|
# Check JSON
|
|
if stripped[0] in ("{", "["):
|
|
try:
|
|
json.loads(stripped)
|
|
return "json"
|
|
except (json.JSONDecodeError, ValueError):
|
|
pass
|
|
|
|
# Check code indicators
|
|
# Sample first 5000 chars for performance
|
|
sample = stripped[:5000]
|
|
keyword_matches = len(_CODE_KEYWORDS.findall(sample))
|
|
lines = sample.split("\n")
|
|
indented_lines = sum(
|
|
1 for line in lines if line.startswith((" ", "\t")) and line.strip()
|
|
)
|
|
|
|
# If we see multiple code keywords or significant indentation, it's likely code
|
|
if keyword_matches >= 3 or (indented_lines > len(lines) * 0.3 and len(lines) > 5):
|
|
return "code"
|
|
|
|
return "text"
|