|
|
|
|
|
import logging |
|
import json |
|
from datetime import datetime |
|
from src.core.memory.permanent_memory import PermanentMemory |
|
from src.utils.dalle_wrapper import generate_dalle_insights |
|
from src.protocol.decentralized_comm.ipfs_client import IPFSClient |
|
|
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') |
|
|
|
class DalleViolationScanner: |
|
def __init__(self, memory_system: PermanentMemory, ipfs_client: IPFSClient): |
|
self.memory = memory_system |
|
self.ipfs = ipfs_client |
|
|
|
async def scan_image(self, image_path: str, source_domain: str = "unknown"): |
|
""" |
|
Sends an image for visual analysis and stores the result if any violations are detected. |
|
""" |
|
insights = generate_dalle_insights(image_path) |
|
timestamp = datetime.utcnow().isoformat() + "Z" |
|
|
|
result = { |
|
"timestamp": timestamp, |
|
"image_path": image_path, |
|
"source_domain": source_domain, |
|
"dalle_interpretation": insights |
|
} |
|
|
|
|
|
cid = self.ipfs.add_json(result) |
|
await self.memory.store_memory( |
|
data=result, |
|
context_tags=["violation", "visual", "DALL路E"], |
|
creator_id="DalleViolationScanner" |
|
) |
|
|
|
logging.info(f"DALL路E scan completed and stored for {image_path}") |
|
return cid |
|
|