A web-based application that helps you track your progress while watching tutorial videos or TV shows downloaded locally in your PC. It automatically remembers where you left off in each video and lets you resume from that point.
./docker-run.shThen open: http://localhost:5000
The app features a modern web-based interface that runs in your browser!
- 📁 Folder Browser: Select any folder containing videos (supports nested subfolders)
▶️ Video Player: Built-in video player with playback controls- 💾 Auto-Save Progress: Automatically saves your position every 5 seconds
- 🔄 Resume Playback: Asks if you want to resume from where you left off
- 📊 Progress Tracking: Shows completion percentage for each video
- ⏭️ Navigation: Easy navigation between videos with Next/Previous buttons
- ⌨️ Keyboard Shortcuts: Control playback with keyboard
- 🎚️ Playback Speed: Adjust playback speed from 0.5x to 2.0x
- 🗑️ Clear Completed: Remove videos that are 95%+ complete from tracking
- MP4
- AVI
- MKV
- MOV
- WMV
- FLV
- WEBM
Python 3.8 or higher
pip install -r requirements.txtOr:
pip install FlaskPrerequisites: Docker and Docker Compose
# Build and start the container
./docker-run.sh
# Or manually:
docker-compose up -dThen open: http://localhost:5000
Docker Commands:
# Stop the container
./docker-stop.sh
# or: docker-compose stop
# View logs
docker-compose logs -f
# Restart
docker-compose restart
# Remove container and image
docker-compose down
docker-compose down --rmi allImportant: Edit docker-compose.yml to mount your video folders:
volumes:
- /path/to/your/videos:/path/to/your/videos:ro
- /home/user:/home/user:ro./run_web.shOr:
python3 app.pyThen open your browser and go to: http://localhost:5000
If you prefer a desktop GUI (requires VLC):
python3 main.py- Select Folder: Click "Select Folder" and choose the directory containing your videos
- Choose Video: Click on any video in the list to load it
- Play: The video will start playing automatically
- Resume: If you've watched the video before, you'll be asked if you want to resume
- Navigation: Use the Previous/Next buttons or keyboard shortcuts to navigate between videos
Space: Play/PauseLeft Arrow: Rewind 5 secondsRight Arrow: Forward 5 secondsUp Arrow: Next videoDown Arrow: Previous video
Videos in the list show their completion percentage:
[45%] 01 Introduction/001 Introduction.mp4
[0%] 01 Introduction/002 Data Pipeline.mp4
The application stores progress in a SQLite database (video_progress.db) in the same directory as the script. This file is created automatically and contains:
- Video file paths
- Last watched position (in milliseconds)
- Video duration
- Last watched timestamp
- Watch count
Watch-Marker/
├── app.py # Flask web server (main)
├── main.py # Desktop GUI application (alternative)
├── video_tracker.py # Database operations and video scanning
├── templates/
│ └── index.html # Web UI template
├── static/
│ ├── style.css # Web UI styles
│ └── app.js # Web UI JavaScript
├── Dockerfile # Docker image definition
├── docker-compose.yml # Docker Compose configuration
├── .dockerignore # Docker ignore file
├── docker-run.sh # Docker launcher script
├── docker-stop.sh # Docker stop script
├── requirements.txt # Python dependencies
├── run_web.sh # Web server launcher
├── install.sh # Installation script
├── README.md # This file
├── data/ # Docker volume data (created automatically)
└── video_progress.db # SQLite database (created automatically)
Can't find videos in the container:
- Make sure you mounted your video folders in
docker-compose.yml - The paths inside the container must match where your videos are
- Example:
-/home/user/Videos:/home/user/Videos:ro
Permission errors in Docker:
# Make sure the data directory is writable
chmod -R 777 data/Container won't start:
# Check logs
docker-compose logs
# Rebuild the image
docker-compose down
docker-compose build --no-cache
docker-compose up -dPort 5000 already in use:
Edit docker-compose.yml and change:
ports:
- "5001:5000" # Use port 5001 instead"No module named 'flask'" error:
pip install FlaskVideo not playing in browser:
- Make sure your browser supports HTML5 video
- Try using Chrome or Firefox
- Check browser console for errors (F12)
Can't access from other devices:
The server runs on 0.0.0.0 so it's accessible from other devices:
- Find your local IP:
ip addrorifconfig - Access from other devices:
http://YOUR_IP:5000 - Make sure firewall allows port 5000
Permission denied:
chmod +x *.shThe desktop version requires VLC:
sudo apt install vlc python3-tk
pip install python-vlc- The app auto-saves your position every 5 seconds, so you can close it anytime
- Use "Clear Completed" to remove finished videos from the tracking database
- The app works with any folder structure - videos can be in the root or nested subfolders
- Progress is tracked per file path, so moving videos will reset their progress
MIT License - Feel free to use and modify as needed!