Skip to main content

CLI tools for finding, organizing, and playing audio files

Project description

Install

Install the actual MOC player/server

% sudo apt-get install -y moc

or

% brew install moc

If you don’t havedockerinstalled, 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

Optional Installs

yt-helper

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]"

Usage

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

mocp_cli-0.1.21-py3-none-any.whl (8.6 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page