=============================== 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 ---------------- Return Start playing. Space, ``p`` Toggle pause. ``/``, ``?`` Search forward/backward for a pattern. ``<``, ``>`` Go backward/forward in the playlist. ``A`` Toggle mute. ``D`` Delete the current entry. ``N`` Repeat previous search in reverse direction. ``V`` Toggle video. ``W`` Save the current playlist under JSON format. ``d`` Deselect/reselect the current entry. ``i`` Insert playlist. ``m``, ``M`` Cycle forward/backward through playing modes. ``n`` Repeat previous search. ``o`` Open playlist. Up, ``k`` Move a single line up. Down, ``j`` Move a single line down. Left, ``h`` Seek backward 5 seconds. Right, ``l`` Seek forward 5 seconds. Home Move to the beginning of the playlist. End Move to the end of the playlist. Page Up Move a single page up. Page Down Move a single page down. F5 Redraw the screen content. Configuration files ------------------- If not specified by the ``--config``, (user-specific) configuration file is ``~/.config/mpv/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] # Initial video channel. auto selects the default, no disables video. video = auto # Specify the video output backend to be used. See VIDEO OUTPUT DRIVERS in # mpv(1) man page for details and descriptions of available drivers. video-output = [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 = best 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.