Thank you for considering contributing to Video-Summary! This document provides guidelines and instructions for contributing.
- Python 3.8 or higher
- Git
- ffmpeg (for video processing)
-
Clone the repository
git clone https://github.com/Askill/Video-Summary.git cd Video-Summary -
Create a virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt pip install -e ".[dev]" # Install development dependencies
-
Install pre-commit hooks
pip install pre-commit pre-commit install
We use the following tools to maintain code quality:
- Black: Code formatting (line length: 140)
- isort: Import sorting
- flake8: Linting
- mypy: Type checking (optional but recommended)
Run these tools before committing:
# Format code
black .
isort .
# Check for issues
flake8 .
mypy Application/ main.pyOr simply commit - pre-commit hooks will run automatically!
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Write clean, readable code
- Add type hints where applicable
- Update documentation as needed
- Add tests for new functionality
-
Test your changes
# Run tests (if available) pytest # Test the CLI python main.py path/to/test/video.mp4 output_test
-
Commit your changes
git add . git commit -m "feat: Add your feature description"
We follow Conventional Commits:
feat:- New featurefix:- Bug fixdocs:- Documentation changesrefactor:- Code refactoringtest:- Adding testschore:- Maintenance tasks
-
Push and create a Pull Request
git push origin feature/your-feature-name
- Keep PRs focused on a single feature or fix
- Write a clear description of what the PR does
- Reference any related issues
- Ensure CI passes (linting, tests, build)
- Update documentation if needed
- Add screenshots for UI changes
While we're building out the test suite, please ensure:
- Your code runs without errors
- You've tested with sample videos
- Edge cases are handled (missing files, corrupt videos, etc.)
- Memory usage is reasonable
When reporting issues, please include:
-
Environment details
- OS and version
- Python version
- Dependency versions
-
Steps to reproduce
- Exact commands run
- Input file characteristics (if applicable)
-
Expected vs. actual behavior
-
Error messages and logs
-
Screenshots (if applicable)
Video-Summary/
├── Application/ # Core processing modules
│ ├── Config.py # Configuration management
│ ├── ContourExctractor.py # Extract contours from video
│ ├── LayerFactory.py # Group contours into layers
│ ├── LayerManager.py # Manage and clean layers
│ ├── Exporter.py # Export processed results
│ └── ...
├── main.py # CLI entry point
├── pyproject.toml # Project configuration
└── requirements.txt # Dependencies
- ContourExtractor: Analyzes video frames to detect movement
- LayerFactory: Groups related contours across frames
- LayerManager: Filters and optimizes layers
- Exporter: Generates output videos
- Maintainers will review your PR
- Address any requested changes
- Once approved, your PR will be merged
- Your contribution will be credited in releases
- Open an issue for questions
- Tag maintainers for urgent matters
- Be patient and respectful
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to Video-Summary! 🎥✨