comp icon indicating copy to clipboard operation
comp copied to clipboard

Migrated to https://git.sr.ht/~cnx/comp

=============================== comp - Curses Omni Media Player

comp is a mpv <https://mpv.io/>_ front-end using curses. It has basic media player functions and can to extract playlists from multiple sources such as media sites supported by youtube-dl <https://rg3.github.io/youtube-dl/>_, local and direct URL to video/audio and its own JSON playlist format.

.. image:: https://github.com/McSinyx/comp/raw/master/doc/screenshot.png

Installation

comp requires Python 3.5+ with curses module (only available on Unix-like OSes such as GNU/Linux and the BSDs) and libmpv (available as libmpv1 in Debian/Ubuntu, openSUSE; and as mpv in Arch Linux, Gentoo, macOS Homebrew repository). It also depends on python-mpv and youtube-dl but the setup program will automatically install them if they are missing.

As setuptools will install in an egg and cause breakage <https://github.com/McSinyx/comp/issues/5>, using pip (Python 3 version) is a must. After installing it <https://pip.pypa.io/en/latest/installing/>, run pip3 install comp (you might want to add --user flag to use the User Scheme <https://pip.pypa.io/en/stable/user_guide/#user-installs>_).

For developers, clone the Github repo <https://github.com/McSinyx/comp>_ then simply run the comp executable to test the program. If you insist on installing it, still use pip3: pip3 install .. Note that comp is distibuted in a wheel created via ./setup.py bdist_wheel.

Command line options

::

usage: comp [-h] [-v] [-e {json,mpv,youtube-dl}] [-c CONFIG] [--vid VID] [--vo DRIVER] [-f YTDL_FORMAT] playlist

Curses Omni Media Player

positional arguments: playlist path or URL to the playlist

optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit -e {json,mpv,youtube-dl}, --extractor {json,mpv,youtube-dl} playlist extractor, default is youtube-dl -c CONFIG, --config CONFIG path to the configuration file --vid VID initial video channel. auto selects the default, no disables video --vo DRIVER specify the video output backend to be used. See VIDEO OUTPUT DRIVERS in mpv(1) for details and descriptions of available drivers -f YTDL_FORMAT, --format YTDL_FORMAT video format/quality to be passed to youtube-dl

Examples ^^^^^^^^

Open a JSON playlist::

comp -e json test/playlist.json

Open a Youtube playlist with video height lower than 720::

comp -f '[height<720]' https://www.youtube.com/watch?list=PLnk14Iku8QM7R3ARnrj1TwYSZleF-i7jT

Keyboard control

Bindings inherited from mpv ^^^^^^^^^^^^^^^^^^^^^^^^^^^

For convenience purpose, I try to mimic mpv default keybindings, but many are slightly different from mpv exact behaviour (mainly because of the lack of keys which are unsupported by curses). So I will list all of them here for you to compare <https://github.com/mpv-player/mpv/blob/master/DOCS/man/mpv.rst#keyboard-control>_:

Left and Right Seek backward/forward 5 seconds. Shifted arrow does a 1 second seek.

Up and Down Seek backward/forward 1 minute.

[ and ] Decrease/increase current playback speed by 10%.

{ and } Halve/double current playback speed.

Backspace Reset playback speed to normal.

< and > Go backward/forward in the playlist.

Return Start playing.

Space / p Pause (pressing again unpauses).

. Step forward. Pressing once will pause, every consecutive press will play one frame and then go into pause mode again.

, Step backward. Pressing once will pause, every consecutive press will play one frame in reverse and then go into pause mode again.

q Stop playing and quit.

/ / 9 and * / 0 Decrease/increase volume.

m Mute sound.

_ Cycle through the available video tracks.

# Cycle through the available audio tracks.

f Toggle fullscreen.

T Toggle stay-on-top.

w and e Decrease/increase pan-and-scan range.

o / P Show progression bar, elapsed time and total duration on the OSD.

O Toggle OSD states between normal and playback time/duration.

v Toggle subtitle visibility.

j and J Cycle through the available subtitles.

x and z Adjust subtitle delay by +/- 0.1 seconds.

l Set/clear A-B loop points.

L Toggle infinite looping.

Ctrl-+ and Ctrl-- Adjust audio delay (A/V sync) by +/- 0.1 seconds.

u Switch between applying no style overrides to SSA/ASS subtitles, and overriding them almost completely with the normal subtitle style.

V Toggle subtitle VSFilter aspect compatibility mode.

r and t Move subtitles up/down.

s Take a screenshot.

S Take a screenshot, without subtitles.

Alt-s Take a screenshot each frame.

Page Up and Page Down Seek to the beginning of the previous/next chapter.

d Activate/deactivate deinterlacer.

A Cycle aspect ratio override.

1 and 2 Adjust contrast.

3 and 4 Adjust brightness.

5 and 6 Adjust gamma.

7 and 8 Adjust saturation.

Alt-0 Resize video window to half its original size.

Alt-1 Resize video window to its original size.

Alt-2 Resize video window to double its original size.

E Cycle through editions.

Movements and selections ^^^^^^^^^^^^^^^^^^^^^^^^

The following keybindings are Emacs-like since most characters are taken by mpv.

Ctrl-p and Ctrl-n Move a single line up/down.

Alt-v and Ctrl-v Move a single page up/down.

Home / Ctrl-< and End / Ctrl-> Move to the beginning/end of the playlist.

Ctrl-Space Deselect/reselect the current entry and move down a line.

Playlist manipulation ^^^^^^^^^^^^^^^^^^^^^

Ctrl-o Open playlist.

Ctrl-i Insert playlist.

Ctrl-f and Alt-f Search forward/backward for a pattern.

Alt-m Cycle through playing modes.

Delete Delete the current entry.

W Save the current playlist under JSON format.

F5 Redraw the screen content.

: Execute a mpv command.

Configuration files

If not specified by the --config, (user-specific) configuration file is ~/.config/comp/settings.ini. Default configurations are listed below::

[comp]

Initial playing mode, which can be one of these 8 modes: play-current,

play-all, play-selected, repeat-current, repeat-all, repeat-selected,

shuffle-all and shuffle-selected.

play-mode = play-current

[mpv]

Options to be parsed to mpv. See OPTIONS section on mpv(1) man pages for

its complete list of available options.

For example:

#vo = xv #ontop = yes #border = no #force-window = yes #autofit = 500x280 #geometry = -15-50

[youtube-dl]

Video format/quality to be passed to youtube-dl. See FORMAT SELECTION in

youtube-dl(1) man page for more details and descriptions.

format = bestvideo+bestaudio

Bugs

Media durations are not extracted from online playlists as youtube-dl.YoutubeDL option extract_flat is set to 'in_playlist'. This is rather a feature to save up bandwidth than a bug because a track's duration is updated when it's played.