=============================== comp - Curses Omni Media Player =============================== **comp** is a `mpv `_ 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 `_, 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 `_, using ``pip`` (Python 3 version) is a must. After `installing it `_, run ``pip3 install comp`` (you might want to add ``--user`` flag to use the `User Scheme `_). For developers, clone the `Github repo `_ 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 `_: 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.