video-analyser 0.5.17__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. video_analyser-0.5.17/.gitignore +226 -0
  2. video_analyser-0.5.17/PKG-INFO +219 -0
  3. video_analyser-0.5.17/README.md +161 -0
  4. video_analyser-0.5.17/config/config.yaml +73 -0
  5. video_analyser-0.5.17/config/dev.yaml +35 -0
  6. video_analyser-0.5.17/docs/DEVELOPMENT.md +196 -0
  7. video_analyser-0.5.17/docs/MODULAR_ASSESSMENT_PLATFORM_ARCHITECTURE.md +1001 -0
  8. video_analyser-0.5.17/docs/SAMPLE_VIDEOS.md +81 -0
  9. video_analyser-0.5.17/docs/ai-dev-tasks/1-create-prd.mdc +61 -0
  10. video_analyser-0.5.17/docs/ai-dev-tasks/2-generate-tasks.mdc +64 -0
  11. video_analyser-0.5.17/docs/ai-dev-tasks/3-process-task-list.mdc +38 -0
  12. video_analyser-0.5.17/docs/analysis-modules-production-readiness.md +649 -0
  13. video_analyser-0.5.17/docs/mock-gradio/gradio-mvp-example.py +269 -0
  14. video_analyser-0.5.17/docs/module-integration-quick-reference.md +321 -0
  15. video_analyser-0.5.17/docs/rubric-guide.md +619 -0
  16. video_analyser-0.5.17/docs/video-analysis-app-plan.md +828 -0
  17. video_analyser-0.5.17/pyproject.toml +188 -0
  18. video_analyser-0.5.17/src/video_lens/__init__.py +5 -0
  19. video_analyser-0.5.17/src/video_lens/analysis/__init__.py +1 -0
  20. video_analyser-0.5.17/src/video_lens/analysis/api_image_captioner.py +531 -0
  21. video_analyser-0.5.17/src/video_lens/analysis/default_rubrics.py +1068 -0
  22. video_analyser-0.5.17/src/video_lens/analysis/error_handling.py +427 -0
  23. video_analyser-0.5.17/src/video_lens/analysis/frame_analyzer.py +552 -0
  24. video_analyser-0.5.17/src/video_lens/analysis/image_captioner.py +579 -0
  25. video_analyser-0.5.17/src/video_lens/analysis/object_detector.py +613 -0
  26. video_analyser-0.5.17/src/video_lens/analysis/ocr_detector.py +585 -0
  27. video_analyser-0.5.17/src/video_lens/analysis/rubric_system.py +445 -0
  28. video_analyser-0.5.17/src/video_lens/analysis/speaker_diarization.py +376 -0
  29. video_analyser-0.5.17/src/video_lens/analysis/speech_analyzer.py +1493 -0
  30. video_analyser-0.5.17/src/video_lens/analysis/transcriber.py +1131 -0
  31. video_analyser-0.5.17/src/video_lens/analysis/visual_analyzer.py +1467 -0
  32. video_analyser-0.5.17/src/video_lens/cli.py +1321 -0
  33. video_analyser-0.5.17/src/video_lens/core/__init__.py +1 -0
  34. video_analyser-0.5.17/src/video_lens/core/audio_extractor.py +464 -0
  35. video_analyser-0.5.17/src/video_lens/core/exceptions.py +362 -0
  36. video_analyser-0.5.17/src/video_lens/core/pipeline_coordinator.py +709 -0
  37. video_analyser-0.5.17/src/video_lens/core/progress_tracker.py +467 -0
  38. video_analyser-0.5.17/src/video_lens/core/scene_detector.py +565 -0
  39. video_analyser-0.5.17/src/video_lens/core/video_processor.py +614 -0
  40. video_analyser-0.5.17/src/video_lens/interface/__init__.py +5 -0
  41. video_analyser-0.5.17/src/video_lens/interface/gradio_app.py +269 -0
  42. video_analyser-0.5.17/src/video_lens/reports/__init__.py +1 -0
  43. video_analyser-0.5.17/src/video_lens/reports/assessment_integration.py +198 -0
  44. video_analyser-0.5.17/src/video_lens/reports/assessment_report.py +204 -0
  45. video_analyser-0.5.17/src/video_lens/reports/assessment_session.py +339 -0
  46. video_analyser-0.5.17/src/video_lens/reports/assessment_storage.py +240 -0
  47. video_analyser-0.5.17/src/video_lens/reports/grading_sheet_renderer.py +531 -0
  48. video_analyser-0.5.17/src/video_lens/reports/html_renderer.py +215 -0
  49. video_analyser-0.5.17/src/video_lens/reports/report_generator.py +699 -0
  50. video_analyser-0.5.17/src/video_lens/utils/__init__.py +1 -0
  51. video_analyser-0.5.17/src/video_lens/utils/api_keys.py +210 -0
  52. video_analyser-0.5.17/src/video_lens/utils/config.py +623 -0
  53. video_analyser-0.5.17/src/video_lens/utils/progress_display.py +234 -0
  54. video_analyser-0.5.17/tests/__init__.py +1 -0
  55. video_analyser-0.5.17/tests/analysis/__init__.py +1 -0
  56. video_analyser-0.5.17/tests/analysis/test_error_handling.py +387 -0
  57. video_analyser-0.5.17/tests/analysis/test_frame_analyzer.py +731 -0
  58. video_analyser-0.5.17/tests/analysis/test_ocr_detector.py +674 -0
  59. video_analyser-0.5.17/tests/analysis/test_rubric_system.py +367 -0
  60. video_analyser-0.5.17/tests/analysis/test_speaker_diarization.py +352 -0
  61. video_analyser-0.5.17/tests/analysis/test_visual_analyzer.py +1078 -0
  62. video_analyser-0.5.17/tests/analysis/test_visual_analyzer_object_detection.py +384 -0
  63. video_analyser-0.5.17/tests/analysis/test_visual_quality_reporting.py +553 -0
  64. video_analyser-0.5.17/tests/conftest.py +219 -0
  65. video_analyser-0.5.17/tests/core/test_audio_extraction_enhanced.py +651 -0
  66. video_analyser-0.5.17/tests/core/test_audio_extractor.py +461 -0
  67. video_analyser-0.5.17/tests/core/test_error_handling.py +520 -0
  68. video_analyser-0.5.17/tests/core/test_integration_frame_scene.py +230 -0
  69. video_analyser-0.5.17/tests/core/test_progress_tracker.py +616 -0
  70. video_analyser-0.5.17/tests/reports/__init__.py +1 -0
  71. video_analyser-0.5.17/tests/reports/test_assessment_integration.py +356 -0
  72. video_analyser-0.5.17/tests/reports/test_assessment_report.py +357 -0
  73. video_analyser-0.5.17/tests/reports/test_assessment_session.py +332 -0
  74. video_analyser-0.5.17/tests/reports/test_assessment_storage.py +260 -0
  75. video_analyser-0.5.17/tests/reports/test_report_generator.py +598 -0
  76. video_analyser-0.5.17/tests/test_example.py +54 -0
  77. video_analyser-0.5.17/tests/utils/test_config.py +443 -0
  78. video_analyser-0.5.17/tests/utils/video_helpers.py +262 -0
@@ -0,0 +1,226 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # poetry
98
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102
+ #poetry.lock
103
+
104
+ # pdm
105
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106
+ #pdm.lock
107
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108
+ # in version control.
109
+ # https://pdm.fming.dev/#use-with-ide
110
+ .pdm.toml
111
+
112
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113
+ __pypackages__/
114
+
115
+ # Celery stuff
116
+ celerybeat-schedule
117
+ celerybeat.pid
118
+
119
+ # SageMath parsed files
120
+ *.sage.py
121
+
122
+ # Environments
123
+ .env
124
+ .venv
125
+ env/
126
+ venv/
127
+ ENV/
128
+ env.bak/
129
+ venv.bak/
130
+
131
+ # Spyder project settings
132
+ .spyderproject
133
+ .spyproject
134
+
135
+ # Rope project settings
136
+ .ropeproject
137
+
138
+ # mkdocs documentation
139
+ /site
140
+
141
+ # mypy
142
+ .mypy_cache/
143
+ .dmypy.json
144
+ dmypy.json
145
+
146
+ # Pyre type checker
147
+ .pyre/
148
+
149
+ # pytype static type analyzer
150
+ .pytype/
151
+
152
+ # Cython debug symbols
153
+ cython_debug/
154
+
155
+ # PyCharm
156
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
157
+ # be added to the global gitignore or merged into this project gitignore
158
+ .idea/
159
+
160
+ # VS Code
161
+ .vscode/
162
+
163
+ # Project specific ignores
164
+ # Temporary files and processing artifacts
165
+ temp/
166
+ tmp/
167
+ *.tmp
168
+ *.temp
169
+
170
+ # Model files (often large)
171
+ models/
172
+ *.pkl
173
+ *.model
174
+ *.bin
175
+ *.safetensors
176
+
177
+ # Video/audio files for testing
178
+ *.mp4
179
+ *.avi
180
+ *.mov
181
+ *.webm
182
+ *.wav
183
+ *.mp3
184
+ *.m4a
185
+ !tests/fixtures/sample* # Keep small test samples
186
+
187
+ # Development samples (not committed)
188
+ samples/
189
+
190
+ # Generated reports and outputs
191
+ output/
192
+ /reports/ # Only ignore reports/ in root, not src/deep_brief/reports/
193
+ *.html
194
+ *.pdf
195
+ !src/deep_brief/reports/templates/*.html # Keep template files
196
+ !src/deep_brief/**/*.html # Keep source code HTML files
197
+ !src/deep_brief/**/*.py # Keep all Python source files
198
+
199
+ # Cache directories
200
+ .cache/
201
+ cache/
202
+
203
+ # OS specific
204
+ .DS_Store
205
+ .DS_Store?
206
+ ._*
207
+ .Spotlight-V100
208
+ .Trashes
209
+ ehthumbs.db
210
+ Thumbs.db
211
+
212
+ # AI/ML specific
213
+ wandb/
214
+ mlruns/
215
+ .neptune/
216
+ lightning_logs/
217
+
218
+ # Gradio temporary files
219
+ gradio_cached_examples/
220
+ flagged/
221
+
222
+ # Configuration with secrets
223
+ .env.local
224
+ .env.production
225
+ config/secrets.yaml
226
+ config/production.yaml
@@ -0,0 +1,219 @@
1
+ Metadata-Version: 2.4
2
+ Name: video-analyser
3
+ Version: 0.5.17
4
+ Summary: Video analysis lens for the modular assessment platform - extracts frames, transcripts, and quality metrics
5
+ Author-email: Michael Borck <michael@example.com>
6
+ Classifier: Development Status :: 3 - Alpha
7
+ Classifier: Intended Audience :: Education
8
+ Classifier: License :: OSI Approved :: MIT License
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Requires-Python: >=3.11
13
+ Requires-Dist: anthropic>=0.7.0
14
+ Requires-Dist: faster-whisper>=0.10.0
15
+ Requires-Dist: ffmpeg-python>=0.2.0
16
+ Requires-Dist: gradio>=4.8.0
17
+ Requires-Dist: jinja2>=3.1.0
18
+ Requires-Dist: numpy>=1.24.0
19
+ Requires-Dist: opencv-python>=4.8.0
20
+ Requires-Dist: pandas>=2.1.0
21
+ Requires-Dist: pillow>=10.1.0
22
+ Requires-Dist: pydantic-settings>=2.1.0
23
+ Requires-Dist: pydantic>=2.5.0
24
+ Requires-Dist: pytesseract>=0.3.10
25
+ Requires-Dist: python-dotenv>=1.0.0
26
+ Requires-Dist: pyyaml>=6.0.1
27
+ Requires-Dist: rich>=13.7.0
28
+ Requires-Dist: spacy>=3.7.0
29
+ Requires-Dist: torch>=2.2.0
30
+ Requires-Dist: torchvision>=0.17.0
31
+ Requires-Dist: tqdm>=4.66.0
32
+ Requires-Dist: transformers>=4.36.0
33
+ Requires-Dist: typer>=0.9.0
34
+ Requires-Dist: weasyprint>=60.0
35
+ Provides-Extra: api
36
+ Requires-Dist: google-generativeai>=0.3.0; extra == 'api'
37
+ Requires-Dist: openai>=1.12.0; extra == 'api'
38
+ Provides-Extra: audio
39
+ Requires-Dist: speech-analyser>=0.1.0; extra == 'audio'
40
+ Provides-Extra: build
41
+ Requires-Dist: build>=1.0.0; extra == 'build'
42
+ Requires-Dist: twine>=4.0.0; extra == 'build'
43
+ Provides-Extra: dev
44
+ Requires-Dist: basedpyright>=1.8.0; extra == 'dev'
45
+ Requires-Dist: pre-commit>=3.5.0; extra == 'dev'
46
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
47
+ Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
48
+ Requires-Dist: pytest>=7.4.0; extra == 'dev'
49
+ Requires-Dist: ruff>=0.1.6; extra == 'dev'
50
+ Requires-Dist: types-pillow>=10.2.0; extra == 'dev'
51
+ Requires-Dist: types-pyyaml>=6.0.12; extra == 'dev'
52
+ Requires-Dist: types-requests>=2.31.0; extra == 'dev'
53
+ Requires-Dist: types-setuptools>=80.9.0; extra == 'dev'
54
+ Provides-Extra: gpu
55
+ Requires-Dist: torch>=2.2.0; extra == 'gpu'
56
+ Requires-Dist: torchvision>=0.17.0; extra == 'gpu'
57
+ Description-Content-Type: text/markdown
58
+
59
+ # Video Lens
60
+
61
+ [![PyPI version](https://badge.fury.io/py/video-lens.svg)](https://pypi.org/project/video-lens/)
62
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
63
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
64
+
65
+ A video analysis application that helps students, educators, and professionals analyze presentations by combining speech transcription, visual analysis, and AI-powered feedback.
66
+
67
+ > **Status**: Phase 1 MVP in development. Core infrastructure complete, video processing pipeline in progress.
68
+
69
+ ## Features
70
+
71
+ - **Video Processing**: Support for MP4, MOV, AVI, and WebM formats
72
+ - **Speech Analysis**: Automatic transcription with speaking rate and filler word detection
73
+ - **Visual Analysis**: Scene detection with frame captioning and quality assessment
74
+ - **AI Feedback**: Actionable insights and recommendations for improvement
75
+ - **Professional Reports**: Interactive HTML and structured JSON outputs
76
+
77
+ ## Installation
78
+
79
+ ### Prerequisites
80
+
81
+ - Python 3.11 or higher
82
+ - ffmpeg (for video processing)
83
+
84
+ ### Option 1: Install from PyPI (recommended for users)
85
+
86
+ ```bash
87
+ pip install video-lens
88
+ ```
89
+
90
+ ### Option 2: Install from source (for development)
91
+
92
+ ```bash
93
+ # Install uv (fast Python package manager)
94
+ curl -LsSf https://astral.sh/uv/install.sh | sh
95
+
96
+ # Clone the repository
97
+ git clone https://github.com/michael-borck/video-lens.git
98
+ cd video-lens
99
+
100
+ # Create virtual environment and install
101
+ uv venv
102
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
103
+ uv pip install -e ".[dev]"
104
+ ```
105
+
106
+ ### Installing ffmpeg
107
+
108
+ **macOS:**
109
+ ```bash
110
+ brew install ffmpeg
111
+ ```
112
+
113
+ **Ubuntu/Debian:**
114
+ ```bash
115
+ sudo apt update && sudo apt install ffmpeg
116
+ ```
117
+
118
+ **Windows:**
119
+ Download from [https://ffmpeg.org/download.html](https://ffmpeg.org/download.html)
120
+
121
+ ## Quick Start
122
+
123
+ ```bash
124
+ # Show available commands
125
+ video-lens --help
126
+
127
+ # Check version
128
+ video-lens version
129
+
130
+ # Launch web interface (coming soon)
131
+ video-lens analyze
132
+
133
+ # Analyze a specific video (CLI mode - coming soon)
134
+ video-lens analyze video.mp4 --output ./reports
135
+ ```
136
+
137
+ **Current Status**: The CLI framework is complete. Video processing features are in active development.
138
+
139
+ ## Development
140
+
141
+ This project uses modern Python tooling and follows strict quality standards:
142
+
143
+ - **uv** for fast package management
144
+ - **ruff** for formatting and linting
145
+ - **basedpyright** for strict type checking
146
+ - **pytest** for testing with coverage
147
+ - **pyproject.toml** for all configuration (no setup.py)
148
+
149
+ ### Development Setup
150
+
151
+ ```bash
152
+ # Clone and setup
153
+ git clone https://github.com/michael-borck/video-lens.git
154
+ cd video-lens
155
+ uv venv && source .venv/bin/activate
156
+ uv pip install -e ".[dev]"
157
+
158
+ # Verify setup
159
+ video-lens --help
160
+ pytest -v
161
+ ```
162
+
163
+ ### Code Quality Standards
164
+
165
+ ```bash
166
+ # Format code
167
+ ruff format .
168
+
169
+ # Lint code
170
+ ruff check .
171
+
172
+ # Type checking (strict mode)
173
+ basedpyright
174
+
175
+ # Run tests with coverage
176
+ pytest -v
177
+
178
+ # Run all quality checks
179
+ ruff format . && ruff check . && basedpyright && pytest -v
180
+ ```
181
+
182
+ ### Project Structure
183
+
184
+ ```
185
+ src/video_lens/ # Main package
186
+ ├── core/ # Video processing pipeline
187
+ ├── analysis/ # Speech and visual analysis
188
+ ├── reports/ # Report generation
189
+ ├── interface/ # Gradio web interface
190
+ └── utils/ # Configuration and utilities
191
+
192
+ tests/ # Test suite (mirrors src structure)
193
+ docs/ # Documentation and specs
194
+ tasks/ # Development task tracking
195
+ config/ # Configuration files
196
+ ```
197
+
198
+ ### Current Development Phase
199
+
200
+ - ✅ **Phase 0**: Project setup, packaging, PyPI publication
201
+ - 🚧 **Phase 1**: Core video processing pipeline (in progress)
202
+ - 📋 **Phase 2**: Enhanced analysis features
203
+ - 📋 **Phase 3**: Advanced AI features
204
+
205
+ See `tasks/tasks-prd-phase1-mvp.md` for detailed task tracking.
206
+
207
+ ## Links
208
+
209
+ - **PyPI**: https://pypi.org/project/video-lens/
210
+ - **GitHub**: https://github.com/michael-borck/video-lens
211
+ - **Documentation**: Coming soon
212
+
213
+ ## License
214
+
215
+ MIT License - see LICENSE file for details.
216
+
217
+ ## Contributing
218
+
219
+ Contributions are welcome! Please read the development guidelines in `CLAUDE.md` for our coding standards and toolchain requirements.
@@ -0,0 +1,161 @@
1
+ # Video Lens
2
+
3
+ [![PyPI version](https://badge.fury.io/py/video-lens.svg)](https://pypi.org/project/video-lens/)
4
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+
7
+ A video analysis application that helps students, educators, and professionals analyze presentations by combining speech transcription, visual analysis, and AI-powered feedback.
8
+
9
+ > **Status**: Phase 1 MVP in development. Core infrastructure complete, video processing pipeline in progress.
10
+
11
+ ## Features
12
+
13
+ - **Video Processing**: Support for MP4, MOV, AVI, and WebM formats
14
+ - **Speech Analysis**: Automatic transcription with speaking rate and filler word detection
15
+ - **Visual Analysis**: Scene detection with frame captioning and quality assessment
16
+ - **AI Feedback**: Actionable insights and recommendations for improvement
17
+ - **Professional Reports**: Interactive HTML and structured JSON outputs
18
+
19
+ ## Installation
20
+
21
+ ### Prerequisites
22
+
23
+ - Python 3.11 or higher
24
+ - ffmpeg (for video processing)
25
+
26
+ ### Option 1: Install from PyPI (recommended for users)
27
+
28
+ ```bash
29
+ pip install video-lens
30
+ ```
31
+
32
+ ### Option 2: Install from source (for development)
33
+
34
+ ```bash
35
+ # Install uv (fast Python package manager)
36
+ curl -LsSf https://astral.sh/uv/install.sh | sh
37
+
38
+ # Clone the repository
39
+ git clone https://github.com/michael-borck/video-lens.git
40
+ cd video-lens
41
+
42
+ # Create virtual environment and install
43
+ uv venv
44
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
45
+ uv pip install -e ".[dev]"
46
+ ```
47
+
48
+ ### Installing ffmpeg
49
+
50
+ **macOS:**
51
+ ```bash
52
+ brew install ffmpeg
53
+ ```
54
+
55
+ **Ubuntu/Debian:**
56
+ ```bash
57
+ sudo apt update && sudo apt install ffmpeg
58
+ ```
59
+
60
+ **Windows:**
61
+ Download from [https://ffmpeg.org/download.html](https://ffmpeg.org/download.html)
62
+
63
+ ## Quick Start
64
+
65
+ ```bash
66
+ # Show available commands
67
+ video-lens --help
68
+
69
+ # Check version
70
+ video-lens version
71
+
72
+ # Launch web interface (coming soon)
73
+ video-lens analyze
74
+
75
+ # Analyze a specific video (CLI mode - coming soon)
76
+ video-lens analyze video.mp4 --output ./reports
77
+ ```
78
+
79
+ **Current Status**: The CLI framework is complete. Video processing features are in active development.
80
+
81
+ ## Development
82
+
83
+ This project uses modern Python tooling and follows strict quality standards:
84
+
85
+ - **uv** for fast package management
86
+ - **ruff** for formatting and linting
87
+ - **basedpyright** for strict type checking
88
+ - **pytest** for testing with coverage
89
+ - **pyproject.toml** for all configuration (no setup.py)
90
+
91
+ ### Development Setup
92
+
93
+ ```bash
94
+ # Clone and setup
95
+ git clone https://github.com/michael-borck/video-lens.git
96
+ cd video-lens
97
+ uv venv && source .venv/bin/activate
98
+ uv pip install -e ".[dev]"
99
+
100
+ # Verify setup
101
+ video-lens --help
102
+ pytest -v
103
+ ```
104
+
105
+ ### Code Quality Standards
106
+
107
+ ```bash
108
+ # Format code
109
+ ruff format .
110
+
111
+ # Lint code
112
+ ruff check .
113
+
114
+ # Type checking (strict mode)
115
+ basedpyright
116
+
117
+ # Run tests with coverage
118
+ pytest -v
119
+
120
+ # Run all quality checks
121
+ ruff format . && ruff check . && basedpyright && pytest -v
122
+ ```
123
+
124
+ ### Project Structure
125
+
126
+ ```
127
+ src/video_lens/ # Main package
128
+ ├── core/ # Video processing pipeline
129
+ ├── analysis/ # Speech and visual analysis
130
+ ├── reports/ # Report generation
131
+ ├── interface/ # Gradio web interface
132
+ └── utils/ # Configuration and utilities
133
+
134
+ tests/ # Test suite (mirrors src structure)
135
+ docs/ # Documentation and specs
136
+ tasks/ # Development task tracking
137
+ config/ # Configuration files
138
+ ```
139
+
140
+ ### Current Development Phase
141
+
142
+ - ✅ **Phase 0**: Project setup, packaging, PyPI publication
143
+ - 🚧 **Phase 1**: Core video processing pipeline (in progress)
144
+ - 📋 **Phase 2**: Enhanced analysis features
145
+ - 📋 **Phase 3**: Advanced AI features
146
+
147
+ See `tasks/tasks-prd-phase1-mvp.md` for detailed task tracking.
148
+
149
+ ## Links
150
+
151
+ - **PyPI**: https://pypi.org/project/video-lens/
152
+ - **GitHub**: https://github.com/michael-borck/video-lens
153
+ - **Documentation**: Coming soon
154
+
155
+ ## License
156
+
157
+ MIT License - see LICENSE file for details.
158
+
159
+ ## Contributing
160
+
161
+ Contributions are welcome! Please read the development guidelines in `CLAUDE.md` for our coding standards and toolchain requirements.
@@ -0,0 +1,73 @@
1
+ # Video Lens Configuration File
2
+ # This file contains the default configuration for the Video Lens application.
3
+ # You can override these settings with environment variables using the VIDEO_LENS_ prefix.
4
+
5
+ # Application settings
6
+ app_name: "Video Lens"
7
+ debug: false
8
+
9
+ # Video processing configuration
10
+ processing:
11
+ max_video_size_mb: 500
12
+ supported_formats:
13
+ - "mp4"
14
+ - "mov"
15
+ - "avi"
16
+ - "webm"
17
+ temp_dir: "temp"
18
+ cleanup_temp_files: true
19
+
20
+ # Scene detection settings
21
+ scene_detection:
22
+ method: "threshold" # threshold or adaptive
23
+ threshold: 0.4 # 0.1-0.9, lower = more scenes detected
24
+ min_scene_duration: 2.0 # minimum seconds per scene
25
+ fallback_interval: 30.0 # fallback if no scenes detected
26
+
27
+ # Audio processing settings
28
+ audio:
29
+ sample_rate: 16000 # Hz, required by Whisper
30
+ channels: 1 # mono audio
31
+ noise_reduction: false
32
+ normalize_audio: true
33
+
34
+ # Speech transcription settings
35
+ transcription:
36
+ model: "whisper-base" # whisper model size
37
+ language: "auto" # auto-detect or specific language code
38
+ word_timestamps: true # enable word-level timing
39
+ temperature: 0.0 # sampling temperature (0.0 = deterministic)
40
+ device: "auto" # auto, cpu, or cuda
41
+
42
+ # Analysis settings
43
+ analysis:
44
+ filler_words:
45
+ - "um"
46
+ - "uh"
47
+ - "like"
48
+ - "you know"
49
+ - "so"
50
+ - "actually"
51
+ - "basically"
52
+ target_wpm_range: [140, 160] # ideal speaking rate range
53
+ sentiment_analysis: true
54
+ confidence_threshold: 0.7
55
+
56
+ # Output settings
57
+ output:
58
+ formats:
59
+ - "json"
60
+ - "html"
61
+ include_frames: true
62
+ frame_quality: 80 # JPEG quality 1-100
63
+ report_template: "default"
64
+
65
+ # Logging configuration
66
+ logging:
67
+ level: "INFO" # DEBUG, INFO, WARNING, ERROR, CRITICAL
68
+ format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
69
+ file_enabled: true
70
+ file_path: "logs/deep_brief.log"
71
+ max_bytes: 10000000 # 10MB log file size
72
+ backup_count: 5 # number of backup files
73
+ console_enabled: true
@@ -0,0 +1,35 @@
1
+ # Development Configuration
2
+ # This configuration enables debug mode and verbose logging for development
3
+
4
+ # Application settings
5
+ app_name: "Video Lens (Development)"
6
+ debug: true
7
+
8
+ # Inherit most settings from default config, override specific ones
9
+ processing:
10
+ max_video_size_mb: 100 # Smaller limit for testing
11
+ cleanup_temp_files: false # Keep temp files for debugging
12
+
13
+ # More sensitive scene detection for testing
14
+ scene_detection:
15
+ threshold: 0.3 # More sensitive
16
+ min_scene_duration: 1.0 # Shorter scenes for testing
17
+
18
+ # Development transcription settings
19
+ transcription:
20
+ model: "whisper-tiny" # Faster model for development
21
+ temperature: 0.1 # Slightly more randomness for testing
22
+
23
+ # Analysis settings for development
24
+ analysis:
25
+ confidence_threshold: 0.5 # Lower threshold for testing
26
+
27
+ # Development logging - very verbose
28
+ logging:
29
+ level: "DEBUG"
30
+ format: "%(asctime)s - %(name)s - %(levelname)s - %(funcName)s:%(lineno)d - %(message)s"
31
+ file_enabled: true
32
+ file_path: "logs/dev.log"
33
+ max_bytes: 5000000 # 5MB
34
+ backup_count: 3
35
+ console_enabled: true