Thank you for your interest in contributing to MoodCutter! We welcome contributions from everyone, whether you're fixing a bug, adding a feature, or improving documentation.
- Code of Conduct
- Getting Started
- How to Contribute
- Development Setup
- Coding Standards
- Submitting Changes
- Reporting Bugs
- Feature Requests
Be respectful, inclusive, and constructive. We're all here to learn and build something great together.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/axtheon/MoodCutter.git cd MoodCutter - Add the upstream repository:
git remote add upstream https://github.com/axtheon/MoodCutter.git
- 🐛 Bug fixes
- ✨ New features (emotion detection algorithms, export formats, etc.)
- 📚 Documentation improvements
- 🧪 Tests (unit tests, integration tests)
- 🎨 UI/UX improvements
- 🌍 Translations
- 💡 Ideas and suggestions
-
Install dependencies (including dev tools):
pip install -r requirements.txt
-
Install development dependencies:
# Uncomment dev dependencies in requirements.txt or install manually: pip install black pylint pytest -
Verify your setup:
python src/main.py --input examples/sample_input.mp4 --mode funny
- Follow PEP 8 style guidelines
- Use meaningful variable names
- Add docstrings to functions and classes
- Keep functions focused and small
We use black for automatic code formatting:
black src/Run pylint before committing:
pylint src/def detect_laughter(audio_path: str, threshold: float = 0.8) -> list:
"""
Detect laughter in audio file.
Args:
audio_path: Path to the audio file
threshold: Confidence threshold for detection (0.0-1.0)
Returns:
List of tuples containing (start_time, end_time) of laughter segments
"""
# Implementation here
pass-
Create a new branch for your feature:
git checkout -b feature/your-feature-name
-
Make your changes and commit them:
git add . git commit -m "Add: Brief description of your changes"
-
Keep your branch updated with upstream:
git fetch upstream git rebase upstream/main
-
Push to your fork:
git push origin feature/your-feature-name
-
Open a Pull Request on GitHub with:
- Clear title describing the change
- Detailed description of what you changed and why
- Reference any related issues (e.g., "Fixes #123")
- Use present tense ("Add feature" not "Added feature")
- Use imperative mood ("Move cursor to..." not "Moves cursor to...")
- Start with a verb:
Add,Fix,Update,Remove,Refactor - Keep the first line under 50 characters
- Add detailed description if needed after a blank line
Examples:
Add sad moment detection algorithm
Implement basic sad moment detection using audio analysis
and facial expression recognition. Includes unit tests.
Fix video cropping bug for vertical videos
Resolves issue where vertical videos were being cropped
incorrectly. Fixes #42.
Found a bug? Please create an issue with:
- Clear title describing the bug
- Steps to reproduce the issue
- Expected behavior vs actual behavior
- System information (OS, Python version, etc.)
- Error messages or logs (if any)
- Screenshots or videos (if applicable)
**Description:**
Brief description of the bug
**To Reproduce:**
1. Run command '...'
2. Use video file '...'
3. See error
**Expected Behavior:**
What should happen
**Actual Behavior:**
What actually happens
**Environment:**
- OS: [e.g., Windows 11, Ubuntu 22.04]
- Python Version: [e.g., 3.10.5]
- MoodCutter Version: [e.g., v0.1]
**Additional Context:**
Any other relevant informationHave an idea? We'd love to hear it!
Create an issue with:
- Clear description of the feature
- Use case - why would this be useful?
- Possible implementation (if you have ideas)
- Examples from other projects (if relevant)
- Open an issue with the
questionlabel - Check existing issues to see if your question has been answered
- Be patient and respectful - maintainers are often volunteers
Contributors will be acknowledged in:
- The project README
- Release notes
- Our hearts ❤️
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for making MoodCutter better! 🎉