Samson Media Player is a universal media player built in PowerShell that allows you to play and manage all of your local or internet based media within a single app. Import playlists and media from Spotify, YouTube, Twitch and more.
The screenshot above is from a personalized and custom version made as a fun gift for a friend and his cat Samson, hence the name.
- Synopsis
- Project Status
- Current Features
- Other Features, Notes and Requirements
- Modules, Libraries and Credits
- Available Versions
- Installation and Configuration
- CLI Options
- Uninstalling
- Manually Building Source Files
This app is still under development and undergoing testing to address issues, so expect some rough edges. However, the app is ready for community testing and feedback to help identify remaining issues.
If you wish to help, see TESTERS for more information. Testers will get access to special private builds with extra features to make submitting feedback easier.
This project has been both educational and enjoyable, allowing me to explore the capabilities of PowerShell for complex development. The core functionality and a significant portion of the app are built entirely in PowerShell. While using other common languages would be more practical, this showcases PowerShells potential for unconventional yet powerful applications.
For a code line count and language breakdown, see Latest Code Count
- Premium and free accounts supported (Free accounts require Spotify Windows client)
- Auto-sync playlists and tracks to the media library
- Record Spotify media to local disk
- Supports EQ and audio filters
- Auto-sync playlists and videos to the media library
- Preferred playback quality options, AD blocking, download videos to local disk (via YT-DLP) and more
- Alternate Web Player option using Invidious
- Supports YoutubeTV channels (currently channels must be added manually)
- Supports comments and live streams with chat integration (with built-in support for BetterTTV)
- Built-in support for SponsorBlock, with configurable options to skip or mute sponsored segments
- Supports EQ and audio filters
- Play Twitch live streams with native chat integration
- Auto-sync followed/subscribed channels
- Display notifications for configured channels when they go live
- Multiple Twitch AD blocking solutions supported, including TTVLOL and luminous
- Can provide custom list of proxy servers that support TTVLOL and luminous
- BetterTTV support included for enhanced chat viewer
- Uses StreamLink by default for getting playback streams, with ability to specify preferred quality
- Scan and import supported media from local, network or external storage
- Supports most media file types or URLs that VLC player proper supports
- Scan media file IDTags (via TagLib) to populate library with metadata
- Configurable scanning modes for 'Fast' import or 'Slow' to assist scanning storage devices that have slow read/write speeds (such as older external USB drives)
- Option to skip import/scan of duplicates
- Real-time file system monitoring. Automatically add, remove or update media files as they are changed in the file system when app is running
- Media library data-grids in a dock-able/tabbed UI (powered by AvalonDock and Syncfusion) supporting advanced filtering, search and multi-level grouping
- Create custom playlists, combining media from any supported platform
- Playlists can be exported or imported for sharing or backup
- Drag-n-Drop of media files or URL links directly into app or for moving from library to playlists
- Also supported when moving items between playlists or re-ordering within existing
- Start playback directly from playlists, library or add to the playback queue
- Supports auto-play, playback history tracking, shuffle, repeat and other playback options
- A small skinned UI with playback controls and shortcuts to various settings/features
- Can open quickly from system tray icon/menu, switch back and forth with main player skin or set to always start in mini-player mode
- Discord Rich Presence integration to display media playback info in your Discord status/profile
- Supports clickable label links when playing Spotify, YouTube and Twitch media
See FEATURES for a more exhaustive list of core features and important requirements
See CREDITS for a quick list of the various, external apps, components, modules or libraries used in this project as well as endorsement for each
- (NOT YET AVAILABLE TO PUBLIC - SOON™) Available builds will be listed under
Releases
or shared directly/privately to QA Testers - Prepackaged installer using Inno setup. Will be the primary and recommended version for regular usage
- NOTE: Using the prepackaged installer is not required, but highly recommended. It is used to provide a convenient way to package, deliver and configure.
- The installer also performs optimizations to improve app performance, such as installing assembles to the GAC and creating native images via ngen
- Using the installer also registers Samson as a 'proper' application which provides a few benefits. For example:
- GUI windows will appear in the task bar as its own application/icon. Otherwise all windows would just show as PowerShell.
- Samson will be listed in Add/Remove programs and can be uninstalled
- Taskbar features such as jump-lists are only available with the installed version
- PowerShell source files only version, main script to launch is Samson.ps1
- Source code is available via this repository or from installer once run and you choose an install folder
- Manually download and extract the files to desired location, then execute the main script
Samson.ps1
within the root folder- Alternatively, even without using the installed version, you can use
Samson.exe
in the root folder to launch the application Samson.exe
is just a simple self-executable launcher built in C#. Source code included undersrc\launcher
if you wish to build or inspect yourselfSamson.exe
allows the ability to enable some settings such asStart on Windows Login
which will not work if the exe is missing
- Alternatively, even without using the installed version, you can use
- If using installer, just run through install wizard, choosing location to install. Let it finish but do not launch yet
- If downloading source files, extract/copy to desired location
- Spotify, YouTube and Twitch features require additional setup for their respective API's.
- See API Setup and Configuration for set-by-step instructions on how to setup your own API accounts for these services, which are free.
- I really wanted to make this more seamless by including my own development APIs but there is just no way to do that securely
- If using installer, run Samson from shortcut created or via
Samson.exe
in the install folder - If you downloaded source files, execute
Samson.ps1
in the root folder from PowerShell (non-admin) - Upon running for the first time, the First Run Setup/Settings window will appear. Go through and configure as desired
- Highly recommend reading the help documentation for each setting, by clicking on the ? icon next to each
- After finishing setup, the app may restart. If it closes but doesn't restart on its own, wait a minute or so then just relaunch
- Uninstall is triggered by passing
-Uninstall
toSamson.exe
orSamson.ps1
. It is also triggered when uninstalling the package from windows or via the Inno Setupunins000.exe
- The uninstaller performs the removal of any installed external components (StreamLink, Chocolatey..etc), removes related files (including temp files) and removes any stored secrets from secure vault
- The uninstaller will prompt the user to decide if they also wish to remove user related data, such as media profiles, custom playlists, settings..etc
- Log files are NOT removed by the uninstaller
See CLI Options for available CLI parameters and other advanced options
See BUILDING for more information on manually compiling core assemblies and helper components