- Pipeline writes JPEG to /tmp/feedmill_preview_{job_id}.jpg (atomic)
- Flask serves MJPEG stream at /api/preview/{job_id}
- Frontend uses native <img src> MJPEG — zero JS needed
- Removed flask-socketio, eventlet, socket.io CDN dependencies
- 33% less bandwidth per frame, native browser decode
- Same proven approach as original karung-counting project
28 lines
543 B
TOML
28 lines
543 B
TOML
[build-system]
|
|
requires = ["setuptools>=68.0"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "feedmill-recounter"
|
|
version = "0.1.0"
|
|
description = "AI video analysis tool for counting objects in feedmill videos"
|
|
requires-python = ">=3.10"
|
|
dependencies = [
|
|
"ultralytics",
|
|
"opencv-python",
|
|
"numpy<2.0",
|
|
"shapely",
|
|
"flask",
|
|
"python-dotenv",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = ["pytest"]
|
|
|
|
[project.scripts]
|
|
recounter = "cli:main"
|
|
recounter-web = "app:main"
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|