A lightweight video player that continuously plays random videos or snippets from your video library with optional random start points.
Current Version: 0.1.0-beta
- Download
GoonPlayer-v0.1.0-beta-win64.zipfrom the releases page - Extract the ZIP file to your desired location
- Run
GoonPlayer.exe - That's it! No Python installation required.
When you start GoonPlayer for the first time:
- Click the settings button to open the Settings dialog
- Click Add Folder and browse to a folder containing your videos
- (Optional) Add more folders
- Configure your playback preferences (see below)
- Click Save
- Your video shuffle starts!
- Random Video Selection: Continuously plays videos from your configured folders
- Random Clip Mode: Play random-length segments (e.g., 25-45 seconds each)
- Random Start Points: Begin each video at a random position
- Normal Mode: Play full videos from start to finish (standard player behavior)
- Persistent Settings: Volume, mute state, and preferences saved across sessions
- Fullscreen Mode: Immersive viewing with auto-hiding cursor
- Keyboard Shortcuts: Quick controls for playback and navigation
- Plays video segments of random duration
- Perfect for "ambient" viewing or discovery sessions
- Min/Max seconds: Set the duration range (e.g., 25-45 seconds)
- Countdown timer shows time remaining until next clip
- Begin each video at a random position
- Great for discovering different parts of your videos
- Works in both normal and random clip mode
- Both OFF: Standard video player - plays each randomly selected video from start to finish
- Random Start ON, Clip Length OFF: Start at random position, play until video ends
- Both ON: Play random snippets from random starting points (most chaotic mode)
| Control | Action |
|---|---|
| ▶ / ⏸ | Play / Pause |
| ⏭ | Next Video |
| ⚙️ | Settings |
| 🔊 / 🔇 | Volume / Mute |
| Shortcut | Action |
|---|---|
| Spacebar | Skip to Next Video |
| Alt + Enter | Toggle Fullscreen |
| Double-Click | Toggle Fullscreen |
| Esc | Exit Fullscreen |
- Left: Play/Pause, Next buttons
- Center: Interactive seek bar (click or drag to seek)
- Right: Time display (click to toggle remaining/elapsed), Volume and mute controls
- Left: Countdown to next clip (-MM:SS)
- Center: Progress indicator (read-only, shows position in video)
- Right: Volume and mute controls
- Hides controls and time display
- Cursor auto-hides after 2 seconds of inactivity
- Toggle with Alt+Enter or double-click anywhere on the window
- Move mouse to show cursor temporarily
- Press Esc, Alt+Enter or double-click to exit
- MP4 (.mp4, .m4v)
- Matroska (.mkv)
- AVI (.avi)
- QuickTime (.mov)
- MPEG (.mpg, .mpeg)
- WebM (.webm)
- Flash Video (.flv, .f4v)
- Ogg Video (.ogv)
- DVD Video (.vob)
- Windows Media (.wmv)
- Mobile Video (.3gp, .3g2)
- Transport Stream (.ts, .m2ts, .mts)
- DivX (.divx)
Format support depends on VLC libraries
- Open Settings (⚙️)
- Ensure you've added at least one folder with videos
- Check that the folder path is correct and accessible
- Verify videos are in a supported format
- Try a different video file to rule out file corruption
- Check that the file is in a supported format
- Run
GoonPlayer.exe --debugto see error messages in console
- Delete
GoonPlayer.config.jsonin the GoonPlayer folder to reset settings - Try launching again
- Verify all folders in settings are accessible
- Large video libraries may take a moment to scan on first launch
- Consider organizing videos into smaller folder structures
- Close other resource-intensive applications
- Run with
--debugflag to see detailed console output:GoonPlayer.exe --debug - Check the full documentation for advanced topics
Simply delete the GoonPlayer folder. No registry changes or leftover files.
The GoonPlayer.config.json file (if you want to keep your settings) can be backed up before deleting.
When a new version is released:
- Download the new version ZIP
- Extract to a new folder (or delete the old one first)
- Run the new
GoonPlayer.exe - Your old
GoonPlayer.config.jsonwill still work with new versions!
- Python 3.10 or higher
- pip (Python package manager)
- Clone or download this repository
- Create virtual environment (recommended):
python -m venv venv .\venv\Scripts\activate - Install dependencies:
pip install -r requirements.txt - Run the application:
python GoonPlayer.py
Debug mode is automatically enabled when running from Python source.
Before building, you must have VLC installed on your system:
- Download VLC from videolan.org
- Install using the default installation path
- Standard:
C:\Program Files\VideoLAN\VLC - 32-bit:
C:\Program Files (x86)\VideoLAN\VLC
- Standard:
The build script will automatically detect VLC at the default locations.
.\scripts\build.ps1This script:
- Checks for Python and Nuitka (installs if needed)
- Finds your system VLC installation
- Builds the standalone executable
- Bundles VLC libraries and plugins into the distribution
- Copies icons to the distribution
- Outputs to
dist/GoonPlayer.dist/
If VLC is installed in a non-standard location, specify the path:
.\scripts\build.ps1 -vlcPath "D:\CustomPath\VLC".\scripts\build.ps1 -releaseThis builds and creates a release archive:
release/GoonPlayer-{version}-win64.zip- Binary distribution
.\scripts\build.ps1 -cleanThis removes build/, dist/, release/, __pycache__/, and .spec files.
dist/GoonPlayer.dist/- Standalone build directory with EXE + dependencies*.build/- Temporary Nuitka build cache (auto-cleaned)
GoonPlayer/
├── GoonPlayer.py # Main application
├── version.py # Version management
├── requirements.txt # Python dependencies
├── GoonPlayer.config.json # User settings (auto-generated)
├── scripts/ # Build and utility scripts
│ ├── build.ps1 # Build script (finds VLC from system)
│ └── make-icon.ps1 # Icon generation utility
├── icons/ # Application and UI icons
│ ├── app.svg # Application window icon (SVG)
│ ├── app.ico # Application icon for exe embedding
│ └── *.svg # UI control icons
├── dist/ # Build output (auto-generated)
│ ├── GoonPlayer.dist/ # Built application with bundled VLC
│ └── GoonPlayer.exe # Main executable
└── docs/ # Documentation
├── INDEX.md # Documentation index
├── DEVELOPMENT.md # Developer guide
└── FILE_STRUCTURE.md # Project layout
GoonPlayer uses Semantic Versioning:
- MAJOR.MINOR.PATCH[-PRERELEASE]
- Examples:
0.1.0-beta,0.2.0,1.0.0
Version is stored in version.py and displayed in the Settings dialog title.
- Update version in
version.py - Test thoroughly (see DEVELOPMENT.md)
- Build release archive:
.\scripts\build.ps1 -release - Create git tag and GitHub release
- Upload
release/GoonPlayer-{version}-win64.zipas release asset
See DEVELOPMENT.md for testing guidelines.
Settings are stored in GoonPlayer.config.json:
{
"paths": ["C:\\Videos\\Folder1", "D:\\MoreVideos"],
"min_seconds": 25,
"max_seconds": 45,
"random_start": true,
"random_length": true,
"volume": 80,
"muted": false
}Configuration automatically merges with defaults when the app starts, ensuring backward compatibility with older config files.
Run with the --debug flag to see console output:
GoonPlayer.exe --debugThis opens a console window showing:
- Selected video paths
- Random start positions (if enabled)
- Clip duration and countdown (if in random clip mode)
- Any error messages
Debug is automatically enabled when running from Python source.
- DEVELOPMENT.md - Architecture, code organization, testing checklist
- FILE_STRUCTURE.md - Project layout and file purposes
- PySide6 (Qt6) - GUI framework
- python-vlc - Video playback via VLC libraries
- Nuitka - Native compilation and executable packaging
AGPL-3.0
Enjoy your GoonPlayer experience! 🎬
For detailed developer documentation, see docs/DEVELOPMENT.md.