Ever found yourself overwhelmed by a folder full of video tutorials? You start watching a course, then life happens. A week later, you’re trying to remember which videos you’ve already watched, where you left off, and what was tagged as “important.”
Sound familiar? I’ve been there too. That’s exactly why I built OpenCourseFlow—a simple desktop application that helps you organize, track, and complete your video courses without the frustration.
OpenCourseFlow is a Python desktop app that organizes your video courses, automatically tracks what you’ve watched, lets you tag videos by difficulty, and shows exactly how much time is left. No more guessing!
What You’ll Learn
- How OpenCourseFlow helps manage video courses
- How to install and set it up
- How to use the tagging and filtering system
- How progress tracking works
- Tips for getting the most out of your video courses
Key Features
📁 Multi-Format Video Support
OpenCourseFlow handles all popular video formats:
- MP4
- MKV
- AVI
- MOV
- WebM
Just point it to your course folder, and it handles the rest.
📖 ⏱️ Automatic Progress Tracking
Your watch progress is automatically saved to a JSON file. Close the app, come back a week later—your progress is exactly where you left it.
📖 🏷️ Intelligent Tagging System
Tag videos after watching:
- Easy - Simple, quick to complete
- Medium - Moderate difficulty
- Hard - Challenging content requiring more time
- Custom - Create your own tags
Filter and find videos by any tag instantly.
📊 Time Summary
See exactly how much time each section and the entire course will take:
- Total course duration
- Remaining time to complete
- Time per directory
Perfect for planning your study sessions.
🔍 Filter by Difficulty
Not ready for the hard stuff? Use the tag filter dropdown to focus on:
- Only Easy videos when you’re warming up
- Medium when you’re in the flow
- Hard when you’re ready for a challenge
📖 🖥️ Cross-Platform
Works on:
- Linux
- Windows
- macOS
Same great experience on any operating system.
How It Works
OpenCourseFlow uses a clean, simple architecture:
Video Folder → Scan → Display in GUI → Track Progress → Save to JSON
The Technical Details
- Directory Scanning: When you select a course folder, OpenCourseFlow scans for all video files
- Metadata Extraction: Uses Mutagen to read video duration
- Progress Loading: Reads existing progress from JSON file
- Display: Shows videos in a clean PySide6 interface
- Video Playback: Opens videos in your default player (or mpv on Linux/macOS)
- Auto-Save: Progress saves automatically when you tag videos
Data Storage
Progress is saved in a simple JSON file alongside your videos:
{
"videos": {
"01-intro.mp4": {
"watched": true,
"tag": "Easy",
"duration": 300
},
"02-advanced.mp4": {
"watched": false,
"tag": "Hard",
"duration": 1800
}
}
}
The JSON file is human-readable. You can even edit it manually if needed!
Installation
Step 1: Clone the Repository
git clone https://gitlab.com/krafi/opencourseflow.git
cd opencourseflow
Step 2: Install Dependencies
pip install PySide6 mutagen
Step 3: Install Video Player (Linux/macOS)
sudo apt install mpv
sudo dnf install mpv
brew install mpv
Step 4: Run the Application
python main.py
Usage Guide
Getting Started
- Launch OpenCourseFlow
- Click “Select Course Directory”
- Browse to your video course folder
- The app scans and displays all videos
Watching Videos
- Double-click any video to open it in your default player
- After watching, mark it as watched
- Assign a difficulty tag (Easy/Medium/Hard/Custom)
Filtering Videos
Use the tag filter dropdown to show:
- All videos
- Only Easy
- Only Medium
- Only Hard
- Only Custom tags
- Only unwatched
Checking Progress
Look at the status bar to see:
- Total course time
- Remaining time
- Percentage complete
Use Cases
1. Online Course Platforms
Taking courses from Udemy, Coursera, or YouTube? Download the videos and organize them in OpenCourseFlow. Track which ones you’ve finished.
2. Programming Tutorials
Organize programming video tutorials by difficulty. Start with “Easy” videos to build confidence, then tackle “Hard” content.
3. Language Learning
Create tags for different levels (A1, A2, B1, etc.) and track progress through your language course.
4. Certification Prep
Organize videos by exam topic. See exactly how much content you have left to cover before your certification exam.
5. Skill Development
Group videos by skill. Tag and filter to create a personalized learning path.
Why This Project is Useful
OpenCourseFlow solves real problems:
- No More Guessing: Always know exactly what you’ve watched
- Organized Learning: Tags and filters help you focus
- Time Awareness: See exactly how long courses take
- Progress Motivation: Watch that remaining time decrease!
- Offline-First: Works completely offline, no internet needed
- Your Data, Your Control: JSON format is portable and backup-friendly
Combine OpenCourseFlow with PiperClipTTS (for text-to-speech) to create a complete learning workflow—listen to code documentation while following along with video tutorials!
Troubleshooting
📖 No videos showing?
- Make sure your folder contains video files (.mp4, .mkv, .avi, .mov, .webm)
- Check that the folder path is correct
- Try refreshing the directory
📖 Video won't play on Linux/macOS?
- Verify mpv is installed:
mpv --version - Check that video files are not corrupted
- Try playing the video directly in mpv first
📖 Progress not saving?
- Check write permissions in the course folder
- Verify the JSON file is being created
- Try running the app with administrator privileges
📖 Video duration showing as 0?
The Mutagen library needs to read video metadata. Some heavily compressed or unusual formats may not report duration correctly. The video should still play fine.
Conclusion
OpenCourseFlow is a simple but powerful tool for anyone taking video courses. Whether you’re learning to code, studying a new language, or preparing for certifications, it helps you stay organized and track your progress.
Download your courses, fire up OpenCourseFlow, and start making real progress through your learning journey!
Source Code
View and contribute to the project: OpenCourseFlow on GitLab
Happy learning!
Discussion
0 commentsJoin the Discussion
Sign in to post comments and join the conversation.
No comments yet. Be the first to share your thoughts!