File size: 1,777 Bytes
9982cb8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | import json
import os
import logging
from datetime import datetime
logger = logging.getLogger("ONYX")
KNOWLEDGE_FILE = "database/knowledge.json"
class KnowledgeEngine:
def __init__(self):
if not os.path.exists("database"):
os.makedirs("database")
if not os.path.exists(KNOWLEDGE_FILE):
with open(KNOWLEDGE_FILE, "w", encoding="utf-8") as f:
json.dump([], f)
# =========================
# LOAD KNOWLEDGE
# =========================
def load(self):
try:
with open(KNOWLEDGE_FILE, "r", encoding="utf-8") as f:
return json.load(f)
except Exception as e:
logger.error(f"Knowledge load error: {e}")
return []
# =========================
# SAVE KNOWLEDGE
# =========================
def save(self, data):
try:
with open(KNOWLEDGE_FILE, "w", encoding="utf-8") as f:
json.dump(data, f, indent=2, ensure_ascii=False)
except Exception as e:
logger.error(f"Knowledge save error: {e}")
# =========================
# ADD ENTRY
# =========================
def add_entry(self, category, content):
data = self.load()
entry = {
"category": category,
"content": content,
"timestamp": datetime.utcnow().isoformat()
}
data.append(entry)
self.save(data)
# =========================
# SEARCH
# =========================
def search(self, keyword):
data = self.load()
results = []
for entry in data:
if keyword.lower() in entry["content"].lower():
results.append(entry)
return results |