Skip to content

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. Powered by LibVLCSharp

License

GPL-3.0, GPL-3.0 licenses found

Licenses found

GPL-3.0
LICENSE
GPL-3.0
License.txt
Notifications You must be signed in to change notification settings

EZTechhelp/Samson-Media-Player

Repository files navigation

Samson Media Player

Example, subject to change

Synopsis

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.

Table of Contents

  1. Synopsis
  2. Project Status
  3. Current Features
  4. Other Features, Notes and Requirements
  5. Modules, Libraries and Credits
  6. Available Versions
  7. Installation and Configuration
    1. Choose/Download Available Version
    2. API Setup and Configuration (Optional)
    3. Run First Time Setup
  8. CLI Options
  9. Uninstalling
  10. Manually Building Source Files

Project Status

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.

Why PowerShell?

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

Current Features

Spotify Ability to import and play Spotify playlists and tracks from valid Spotify Account

Ability to import and play Spotify playlists and tracks from valid Spotify Account. Playback with Web-Player and audio monitor enabled pictured.

  • Play Spotify playlists and tracks from a valid Spotify Account
  • Premium and free accounts supported (Free accounts require Spotify Windows client)
  • Auto-sync Spotify playlists and playlist tracks to the apps media library
  • Record Spotify media to local disk. Currently saves as FLAC, further customization options planned. (Basic/WIP)
  • Supports EQ and audio filters (requires enabling EQ support for Web Players)

Youtube Ability to import and play YouTube playlists and videos

Ability to import and play YouTube playlists and videos. Web-Player with comments enabled pictured

  • Import and play YouTube playlists and videos from a valid YouTube account
  • Auto-sync YouTube playlists and playlist videos to the apps media library
  • Select preferred quality options, download YouTube videos to local disk (via YT-DLP) and more
  • Alternate YouTube Web Player option using Invidious
  • Supports playing YoutubeTV channels (currently channels must be added manually)
  • Supports Youtube comments and live YouTube 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 when using Web Player

Twitch Ability to import and play Twitch live streams with chat integration

Supports Twitch live streams with chat integration

  • Play Twitch live streams with native chat integration
  • Import all followed/subscribed channels with valid Twitch account
  • Auto-update/refresh followed streams and their status
  • 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

Local Media Supports Twitch live streams with chat integration

  • Add directory paths to scan and import all supported media into the apps media library
  • Supports most media file types or URLs that VLC player proper supports
  • Supports UNC/Network Mapped drives, external storage..etc
  • 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 monitoring of provided directories. Automatically add, remove or update media files as they are changed in the file system when app is running

Media Library/Playlists/Queue

Media library with dock-able/tabbed UI supporting advanced filtering and multi-level grouping

  • Media library data-grids in a dock-able/tabbed UI (powered by AvalonDock) 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
  • Add media via Drag-n-Drop of media files or URL links directly into app or for moving from library to playlists
    • Drag-n-drop 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

Mini-Player

Includes a 'Mini-Player' opened from tray icon/menu. Small skinned UI with only basic playback controls

  • 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

Discord Rich Presence integration to display media playback info in your Discord status/profile

  • 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

Other Features, Notes and Requirements

See FEATURES for a more exhaustive list of core features and important requirements

Modules, Libraries and Credits

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


Available Versions

  • (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 under src\launcher if you wish to build or inspect yourself
    • Samson.exe allows the ability to enable some settings such as Start on Windows Login which will not work if the exe is missing

Installation and Configuration

1. Choose/Download Available Version

  • 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

2. API Setup and Configuration (Optional)

  • 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

3. Run First Time Setup

  • 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

Uninstalling

  • Uninstall is triggered by passing -Uninstall to Samson.exe or Samson.ps1. It is also triggered when uninstalling the package from windows or via the Inno Setup unins000.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

CLI Options

See CLI Options for available CLI parameters and other advanced options

Manually Building Source Files

See BUILDING for more information on manually compiling core assemblies and helper components

About

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. Powered by LibVLCSharp

Topics

Resources

License

GPL-3.0, GPL-3.0 licenses found

Licenses found

GPL-3.0
LICENSE
GPL-3.0
License.txt

Stars

Watchers

Forks

Releases

No releases published