| 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 |