All Projects → and3rson → Clay

and3rson / Clay

Licence: gpl-3.0
Awesome standalone command line player for Google Play Music.

Programming Languages

python
139335 projects - #7 most used programming language
python3
1442 projects
python2
120 projects

Projects that are alternatives of or similar to Clay

vue-music-player
🎵 basic music player, keeps your favorite musics
Stars: ✭ 77 (-51.87%)
Mutual labels:  player, songs
react-native-vlc-media-player
React native media player for video streaming and playing. Supports RTSP, RTMP and other protocols supported by VLC player
Stars: ✭ 221 (+38.13%)
Mutual labels:  player, vlc
Jcplayer
🎵 A simple audio player for Android applications.
Stars: ✭ 209 (+30.63%)
Mutual labels:  player, songs
Libvlc Go
Go bindings for libVLC and high-level media player interface
Stars: ✭ 188 (+17.5%)
Mutual labels:  player, vlc
Flutter Assetsaudioplayer
Play simultaneously music/audio from assets/network/file directly from Flutter, compatible with android / ios / web / macos, displays notifications
Stars: ✭ 458 (+186.25%)
Mutual labels:  player, songs
soube
Music player based on electronjs
Stars: ✭ 32 (-80%)
Mutual labels:  player, songs
CommenPlayer
CommenPlayer ——Video player, Support ijkPlayer, Vlc, MediaPlayer, ExoPlayer; 视频播放器,支持ijkPlayer,Vlc,MediaPlayer,ExoPlayer
Stars: ✭ 81 (-49.37%)
Mutual labels:  player, vlc
Lofi Player
🎧 A Lofi Player built with HTML, CSS and Javascript using Parcel as Module Bundler https://lakscastro.github.io/lofi-player
Stars: ✭ 38 (-76.25%)
Mutual labels:  player, songs
libvlc-nuget
NuGet packaging setup for LibVLC
Stars: ✭ 52 (-67.5%)
Mutual labels:  player, vlc
larafy
Larafy is a Laravel package for Spotify API. It is more like a wrapper for the Spotify API.
Stars: ✭ 53 (-66.87%)
Mutual labels:  player, songs
Libvlcsharp
Cross-platform .NET/Mono bindings for LibVLC
Stars: ✭ 752 (+370%)
Mutual labels:  player, vlc
Vlc Android
VLC for Android, Android TV and ChromeOS
Stars: ✭ 1,045 (+553.13%)
Mutual labels:  player, vlc
Timecat
A Magical Web Recorder & Player 🖥
Stars: ✭ 1,955 (+1121.88%)
Mutual labels:  player
Swiftcolorgen
A tool that generate code for Swift projects, designed to improve the maintainability of UIColors
Stars: ✭ 152 (-5%)
Mutual labels:  alpha
Player
▶️ video player in Swift, simple way to play and stream media on iOS/tvOS
Stars: ✭ 1,849 (+1055.63%)
Mutual labels:  player
Yinyuetaiplayer
高仿音悦台播放页面效果
Stars: ✭ 140 (-12.5%)
Mutual labels:  player
Html Midi Player
🎹 Play and display MIDI files on the web
Stars: ✭ 158 (-1.25%)
Mutual labels:  player
Dmskin Wallpaper Maker
Windows 桌面动态壁纸 视频壁纸
Stars: ✭ 151 (-5.62%)
Mutual labels:  vlc
Asciinema Player
asciinema player is an open-source terminal session player written in Javascript and Rust/WASM. Unlike other video players asciinema player doesn't play heavy-weight video files (.mp4, .webm etc) and instead plays light-weight terminal session files called asciicasts.
Stars: ✭ 1,948 (+1117.5%)
Mutual labels:  player
React Native Yz Vlcplayer
VLC Player for react-native
Stars: ✭ 136 (-15%)
Mutual labels:  vlc

Clay Player

Clay [beta]

Build Status Documentation Status PyPI version Maintainability

Standalone command line player for Google Play Music.

This app wouldn't be possible without the wonderful gmusicapi and VLC libraries.

This project is neither affiliated nor endorsed by Google.

It's being actively developed, but is still in the early beta stage, so many features are missing and/or may be bugged.

We're on IRC!

  • Server: irc.oftc.net
  • Channel: #clay

Screenshot:

Clay Player screenshot

Click the image below to see the screencast:

asciicast

Quick start

sudo apt install python-gi python-gi-cairo python3-gi python3-gi-cairo vlc keybinder python-keybinder
pip install --user clay-player
clay

Documentation

Documentation is available here.

Requirements

  • Python 3.x (native)
  • gmusicapi (PYPI)
  • urwid (PYPI)
  • PyYAML (PYPI)
  • libVLC (native, distributed with VLC player)
  • PyGObject (optional) (native, used for global X keybinds)
  • Keybinder (optional) (native, used for global X keybinds)
  • setproctitle (optional) PYPI, used to change clay process name from 'python' to 'clay')
  • python-dbus (optional)

What works

  • Audio equalizer
  • Caching (not for song data, that one is coming soon)
  • Configurable keybinds and colours
  • Configuration UI
  • Filtering results
  • Global hotkeys
  • Like/dislike tracks
  • Liked songs playlist
  • Music library browsing & management
  • Notifications - in-app & OSD (via DBus)
  • PYPI package
  • Playback
  • Playlists
  • Queue management
  • Radio stations
  • Song file caching
  • Song operations (add to library, start station etc.)
  • Song search
  • Token caching for faster authorizations

What is being developed

  • Artist/album display
  • Artist/album search
  • Other functionality that is supported by gmusicapi
  • Playlist editing

Installation

Warning: The AUR and PyPy packages called python3-keybinder will not work with Clay since you need to use the official bindings. Since Ubuntu seperated the official bindings into a different package but with the same name as the unofficial one it can cause some confusion. So if you get a Namespace Keybinder not available warning it is probably caused by this. So, for example, on Arch Linux you need the libkeybinder3 package instead.

  1. Install Python 3, and VLC from your package manager.
  2. Optionally, you can install PyGObject, DBus for Python and keybinder plus bindings if you want global X keybinds.

Method 1 (PyPi, automatic)

Just install the player using pip:

pip install --user clay-player
clay

Method 2 (from source, manual)

  1. Clone the source code.

  2. Create & activate virtualenv with system packages:

    virtualenv --system-site-packages --prompt="(clay) " .env
    source .env/bin/activate
    
  3. Install the requirements:

    pip install -r requirements.txt
    
  4. Run the player:

    ./clay/app.py
    

Method 3 (in Docker)

Sometimes you want to run stuff in Docker. You can run Clay in docker as well.

There are two strict requirements:

  • You need to build the container by yourself (bacause of PulseAudio related paths & magic cookies.)
  • You must have PulseAudio running on host with module-native-protocol-tcp module enabled.

Here's how you do it:

  1. Clone the source code

  2. Create "~/.config/clay" directory (to have proper volume permissions in docker)

    mkdir ~/.config/clay
    
  3. Build & run the image

    make run
    

You should get the sound working. Also docker will reuse the Clay config file from host (if you have one).

Configuration

  • Once you launch the app, use the "Settings" page to enter your login and password.
  • You will also need to know your Device ID. Thanks to gmusicapi, the app should display possible IDs once you enter a wrong one.
  • Please be aware that this app has not been tested with 2FA yet.
  • For people with 2FA, you can just create an app password in Google accounts page and proceed normally. (Thanks @j605)

Controls

General

  • <UP|DOWN|LEFT|RIGHT> - nagivate around
  • <ALT> + 0..9 - switch active tab

Songs

  • <ENTER> - play highlighted track
  • <CTRL> w - play/pause
  • <CTRL> e - play next song
  • <CTRL> a - append highlighted song to the queue
  • <CTRL> u - remove highlighted song from the queue
  • <CTRL> p - start station from highlighted song
  • <ALT> m - show context menu for this song
  • <ALT> u - thumb up the highlighted song
  • <ALT> d - thumb down the highlighted song

Playback

  • <CTRL> s - toggle shuffle
  • <CTRL> r - toggle song repeat
  • <SHIFT> <LEFT|RIGHT> - seek backward/forward by 5% of the song duration
  • <CTRL> q - seek to song beginning

Equalizer

  • + - increase amplification
  • - - decrease amplification

Misc

  • <ESC> or <CTRL> / or _ - close most recent notification or popup
  • <CTRL> x - exit app
  • To filter songs just start typing words. Hit <ESC> to cancel.

X keybinds

NOTE: you need to pass the --with-x-keybinds flag for these to work

  • <XF86AudioPlay> - play/pause the song
  • <XF86AudioNext> - play the next song
  • <XF86AudioPrev> - play previous song

Troubleshooting

At some point, the app may fail. Possible reasons are app bugs, Google Play Music API issues, gmusicapi bugs, urwid bugs etc.

If you encounter a problem, please feel free to submit an issue. I'll try to figure it out ASAP.

Most issues can be reproduced only with specific data coming from Google Play Music servers.

Use "Debug" tab within app to select the error and hit "Enter" to copy it into clipboard. This will help me to investigate this issue.

Credits

Made by Andrew Dunai.

Regards to gmusicapi and VLC who made this possible.

People who contribute to this project:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].