OpenCourseFlow: Organize and Track Your Video Courses Effortlessly

Learn how to organize and track your video courses with OpenCourseFlow. A Python desktop app that tracks progress, tags videos by difficulty, and shows time summaries. Perfect for self-paced learning.

Rafi
Written by Rafi
📅
Published January 20, 2025
⏱️
Read Time 2 min
📊
Difficulty Beginner

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.

ℹ️ Info

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

  1. Directory Scanning: When you select a course folder, OpenCourseFlow scans for all video files
  2. Metadata Extraction: Uses Mutagen to read video duration
  3. Progress Loading: Reads existing progress from JSON file
  4. Display: Shows videos in a clean PySide6 interface
  5. Video Playback: Opens videos in your default player (or mpv on Linux/macOS)
  6. 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
    }
  }
}
💡 Tip

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)

Press on a tab to see code
sudo apt install mpv
sudo dnf install mpv
brew install mpv

Step 4: Run the Application

python main.py

Usage Guide

Getting Started

  1. Launch OpenCourseFlow
  2. Click “Select Course Directory”
  3. Browse to your video course folder
  4. The app scans and displays all videos

Watching Videos

  1. Double-click any video to open it in your default player
  2. After watching, mark it as watched
  3. 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
💡 Tip

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?
  1. Make sure your folder contains video files (.mp4, .mkv, .avi, .mov, .webm)
  2. Check that the folder path is correct
  3. Try refreshing the directory
📖 Video won't play on Linux/macOS?
  1. Verify mpv is installed:
    mpv --version
    
  2. Check that video files are not corrupted
  3. Try playing the video directly in mpv first
📖 Progress not saving?
  1. Check write permissions in the course folder
  2. Verify the JSON file is being created
  3. 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!

Knowledge Check

Test your knowledge about OpenCourseFlow

Discussion

0 comments
Reading Progress
4 min left 0%
Welcome back! Sign in to join the discussion.

Please verify your email to sign in.

Enter the 6-digit code from your verification email.

Didn't receive the email?

Remember your password?

Create an account to comment and join the community.
Letters, numbers, and underscores only

Check your email! We've sent a verification code.

Enter the 6-digit code to complete your registration, or click the link in your email.

Didn't receive the email?

Wrong email?

Enter your email address and we'll send you a code to reset your password.

Remember your password?

Enter the 6-digit code from your email and create a new password.

Didn't receive code?

Welcome aboard!

Your account has been created successfully.

Welcome back! Sign in to join the discussion.

Please verify your email to sign in.

Enter the 6-digit code from your verification email.

Didn't receive the email?

Remember your password?

Create an account to comment and join the community.
Letters, numbers, and underscores only

Check your email! We've sent a verification code.

Enter the 6-digit code to complete your registration, or click the link in your email.

Didn't receive the email?

Wrong email?

Enter your email address and we'll send you a code to reset your password.

Remember your password?

Enter the 6-digit code from your email and create a new password.

Didn't receive code?

Welcome aboard!

Your account has been created successfully.