Files
mediaproc/tests/detect/manual/run_graph.py
2026-03-23 15:52:03 -03:00

63 lines
1.6 KiB
Python

#!/usr/bin/env python3
"""
Run the full LangGraph detection pipeline on a test video.
Usage:
python tests/detect/manual/run_graph.py [--job JOB_ID] [--port PORT]
Opens: http://mpr.local.ar/detection/?job=<JOB_ID>
"""
import argparse
import logging
import os
import sys
parser = argparse.ArgumentParser()
parser.add_argument("--job", default="graph-test")
parser.add_argument("--port", type=int, default=6382)
args = parser.parse_args()
os.environ["REDIS_URL"] = f"redis://localhost:{args.port}/0"
logging.basicConfig(level=logging.INFO, format="%(levelname)-7s %(name)s%(message)s")
sys.path.insert(0, ".")
from detect.graph import get_pipeline
from detect.state import DetectState
logger = logging.getLogger(__name__)
VIDEO = "media/out/chunks/95043d50-4df6-4ac8-bbd5-2ba873117c6e/chunk_0000.mp4"
def main():
logger.info("Job: %s", args.job)
logger.info("Open: http://mpr.local.ar/detection/?job=%s", args.job)
input("\nPress Enter to start...")
pipeline = get_pipeline()
initial_state = DetectState(
video_path=VIDEO,
job_id=args.job,
profile_name="soccer_broadcast",
)
logger.info("Running pipeline...")
result = pipeline.invoke(initial_state)
frames = result.get("frames", [])
filtered = result.get("filtered_frames", [])
report = result.get("report")
logger.info("Frames extracted: %d", len(frames))
logger.info("Frames after filter: %d", len(filtered))
if report:
logger.info("Brands found: %d", len(report.brands))
logger.info("Done.")
if __name__ == "__main__":
main()