Install the actual MOC player/server
% sudo apt-get install -y moc
or
% brew install moc
If you don't have docker installed, install Redis and start server
% sudo apt-get install -y redis-server
or
% brew install redis
% brew services start redis
Install with pip
% pip3 install mocp-cli
A lot of what powers the cool interactive features are provided by the
COMMENTS
and FILES
redis_helper.Collections
defined in yt_helper
.
Install with pip
% pip3 install yt-helper
or
% pip3 install "mocp-cli[extras]"
The mocplayer
script is provided
$ venv/bin/mocplayer --help
Usage: mocplayer [OPTIONS] [GLOB_PATTERNS]...
Start a REPL to control music on console player (mocp)
Options:
--help Show this message and exit.
Calling mocplayer
will start a REPL that will send commands to the running
instance of mocp --server
. Any arguments passed to mocplayer
are assumed to
be glob patterns that should be passed to the moc.find_and_play
function.
% venv/bin/mocplayer
:docstrings to see all colon commands
:shortcuts to see all hotkeys
mocplayer> ?
Loop forever, receiving character input from user and performing actions
- ^d or ^c to break the loop
- ':' to enter a command (and any arguments)
- any method defined on GetCharLoop (or a sub-class) will be callable
as a "colon command" (if its name does not start with '_')
- the method for the `:command` should only accept `*args`
- '-' to allow user to provide input that will be processed by the `input_hook`
- '?' to show the class docstring(s) and the startup message
A wrapper to control moc (music on console) player with vim keybindings
:docstrings to see all colon commands
:shortcuts to see all hotkeys
mocplayer> :docstrings
.:: delete ::.
Delete current audio file and remove related data from COMMENTS
.:: delete_comments ::.
Select comments/marks for currently playing file to delete
.:: docstrings ::.
Print/return the docstrings of methods defined on this class
.:: edit_timestamp ::.
Select comment/mark for currently playing file to edit the timestamp
.:: errors ::.
Print/return any colon commands that raised exceptions (w/ traceback)
.:: find ::.
Find and select audio files at specified glob patterns
.:: go ::.
Go to a particular timestamp
.:: history ::.
Print/return successful colon commands used
.:: ipython ::.
Start ipython shell. To continue back to the input loop, use 'ctrl + d'
.:: jump ::.
Jump to a saved comment/mark
.:: jumploop ::.
Loop an unbuffered input session, jumping between selected marks (up to 62)
.:: most_commented ::.
Select files that have been most commented and play (up to 62)
.:: pdb ::.
Start pdb (debugger). To continue back to the input loop, use 'c'
.:: recent_files ::.
Select files that were most recently added and play (up to 62)
.:: seek ::.
Seek forward or backward
.:: shortcuts ::.
Print/return any hotkey shortcuts defined on this class
mocplayer> :shortcuts
' ' -- pause/unpause
'i' -- show info about currently playing file
'm' -- mark the current timestamp
'c' -- show comments/marks (requires yt_helper package)
'C' -- select files that have been most commented and play (requires yt_helper package)
'R' -- select files that were most recently added and play (requires yt_helper package)
'J' -- jump to a saved comment or mark (requires yt_helper package)
'e' -- select comment/mark to edit timestamp (requires yt_helper package)
'd' -- select comments/marks to delete (requires yt_helper package)
'f' -- find and play audio files found in current directory
'F' -- find, select, and play audio files found in current directory
'q' -- quit
'Q' -- stop MOC server and quit
'n' -- next file in playlist
'p' -- previous file in playlist
'H' -- rewind 30 seconds
'h' -- rewind 5 seconds
'\x1b[D' -- rewind 1 second (left arrow)
'L' -- fast foward 30 seconds
'l' -- fast foward 5 seconds
'\x1b[C' -- fast foward 1 second (right arrow)
'j' -- lower volume
'\x1b[B' -- lower volume (down arrow)
'k' -- raise volume
'\x1b[A' -- raise volume (up arrow)
mocplayer> i
00:55 (55) of 43:03 into /tmp/Samurai_Champloo_-_Lofi_HipHop_Mix_Nujabes_inspired-kq7cQNO0gYc.mp3
mocplayer> :go 12:00
mocplayer> i
12:00 (720) of 43:03 into /tmp/Samurai_Champloo_-_Lofi_HipHop_Mix_Nujabes_inspired-kq7cQNO0gYc.mp3
mocplayer> :go 500
mocplayer> i
08:20 (500) of 43:03 into /tmp/Samurai_Champloo_-_Lofi_HipHop_Mix_Nujabes_inspired-kq7cQNO0gYc.mp3
mocplayer> :seek -45
mocplayer> i
07:42 (462) of 43:03 into /tmp/Samurai_Champloo_-_Lofi_HipHop_Mix_Nujabes_inspired-kq7cQNO0gYc.mp3
mocplayer> L
mocplayer> L
mocplayer> L
mocplayer> i
09:32 (572) of 43:03 into /tmp/Samurai_Champloo_-_Lofi_HipHop_Mix_Nujabes_inspired-kq7cQNO0gYc.mp3