comp
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.