found_protocol / main.py
FOUND-AI's picture
FOUND Protocol updates
d49de5b
import os
import argparse
import logging
from dotenv import load_dotenv
from found_protocol import FoundProtocolPipeline
from found_protocol.utils import setup_logging, save_consciousness_log, generate_statistics
def main():
setup_logging()
load_dotenv()
parser = argparse.ArgumentParser(
description="Run the FOUND Protocol consciousness extraction on video files."
)
parser.add_argument(
"path",
type=str,
help="Path to a single video file or a directory of videos."
)
parser.add_argument(
"--no-cache",
action="store_true",
help="Force re-analysis and ignore any cached results."
)
parser.add_argument(
"--output",
type=str,
default=None,
help="Output path for consciousness log JSON"
)
args = parser.parse_args()
API_KEY = os.environ.get("GEMINI_API_KEY")
if not API_KEY:
logging.error("Please set your GEMINI_API_KEY environment variable.")
return
try:
pipeline = FoundProtocolPipeline(api_key=API_KEY)
except Exception as e:
logging.error(f"Failed to initialize pipeline: {e}")
return
videos_to_process = []
if os.path.isdir(args.path):
logging.info(f"Processing all videos in directory: {args.path}")
videos_to_process = sorted([
os.path.join(args.path, f)
for f in os.listdir(args.path)
if f.endswith(('.mp4', '.mov'))
])
elif os.path.isfile(args.path):
videos_to_process.append(args.path)
else:
logging.error(f"Path not found: {args.path}")
return
results = []
for video_path in videos_to_process:
logging.info(f"--- Running FOUND Protocol on {os.path.basename(video_path)} ---")
result = pipeline.run(video_path=video_path, no_cache=args.no_cache)
if "error" in result:
logging.error(f"Analysis failed: {result['error']}")
else:
results.append(result)
print("\n" + "="*50)
print(f"VIDEO: {result.get('video')}")
print(f"MARKET VALUE: {result.get('market_val