{
"info": {
"author": "Nguy\u1ec5n Gia Phong",
"author_email": "vn.mcsinyx@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Environment :: Console :: Curses",
"Intended Audience :: End Users/Desktop",
"License :: OSI Approved :: GNU Affero General Public License v3",
"Natural Language :: English",
"Natural Language :: Vietnamese",
"Operating System :: POSIX",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Topic :: Multimedia :: Sound/Audio :: Players",
"Topic :: Multimedia :: Video :: Display"
],
"description": "===============================\ncomp - Curses Omni Media Player\n===============================\n\n**comp** is a `mpv `_ front-end using curses. It has basic\nmedia player functions and can to extract playlists from multiple sources such\nas media sites supported by `youtube-dl `_,\nlocal and direct URL to video/audio and its own JSON playlist format.\n\n.. image:: https://github.com/McSinyx/comp/raw/master/doc/screenshot.png\n\nInstallation\n------------\n\n**comp** requires Python 3.5+ with ``curses`` module (only available on\nUnix-like OSes such as GNU/Linux and the BSDs) and ``libmpv`` (available as\n``libmpv1`` in Debian/Ubuntu, openSUSE; and as ``mpv`` in Arch Linux, Gentoo,\nmacOS Homebrew repository). It also depends on ``python-mpv`` and\n``youtube-dl`` but the setup program will automatically install them if they\nare missing.\n\nAs ``setuptools`` will `install in an egg and cause breakage\n`_, using ``pip`` (Python 3 version) \nis a must. After `installing it `_,\nrun ``pip3 install comp`` (you might want to add ``--user`` flag to use the\n`User Scheme `_).\n\nFor developers, clone the `Github repo `_ then\nsimply run the ``comp`` executable to test the program. If you insist on\ninstalling it, still use ``pip3``: ``pip3 install .``. Note that **comp** is\ndistibuted in a ``wheel`` created via ``./setup.py bdist_wheel``.\n\nCommand line options\n--------------------\n\n::\n\n usage: comp [-h] [-v] [-e {json,mpv,youtube-dl}] [-c CONFIG] [--vid VID]\n [--vo DRIVER] [-f YTDL_FORMAT]\n playlist\n\n Curses Omni Media Player\n\n positional arguments:\n playlist path or URL to the playlist\n\n optional arguments:\n -h, --help show this help message and exit\n -v, --version show program's version number and exit\n -e {json,mpv,youtube-dl}, --extractor {json,mpv,youtube-dl}\n playlist extractor, default is youtube-dl\n -c CONFIG, --config CONFIG\n path to the configuration file\n --vid VID initial video channel. auto selects the default, no\n disables video\n --vo DRIVER specify the video output backend to be used. See\n VIDEO OUTPUT DRIVERS in mpv(1) for details and\n descriptions of available drivers\n -f YTDL_FORMAT, --format YTDL_FORMAT\n video format/quality to be passed to youtube-dl\n\nExamples\n^^^^^^^^\n\nOpen a JSON playlist::\n\n comp -e json test/playlist.json\n\nOpen a Youtube playlist with video height lower than 720::\n\n comp -f '[height<720]' https://www.youtube.com/watch?list=PLnk14Iku8QM7R3ARnrj1TwYSZleF-i7jT\n\nKeyboard control\n----------------\n\nBindings inherited from mpv\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nFor convenience purpose, I try to mimic **mpv** default keybindings, but many\nare slightly different from **mpv** exact behaviour (mainly because of the lack\nof keys which are unsupported by ``curses``). So I will list all of them here\nfor you to `compare `_:\n\nLeft and Right\n Seek backward/forward 5 seconds. Shifted arrow does a 1 second seek.\n\nUp and Down\n Seek backward/forward 1 minute.\n\n``[`` and ``]``\n Decrease/increase current playback speed by 10%.\n\n``{`` and ``}``\n Halve/double current playback speed.\n\nBackspace\n Reset playback speed to normal.\n\n``<`` and ``>``\n Go backward/forward in the playlist.\n\nReturn\n Start playing.\n\nSpace / ``p``\n Pause (pressing again unpauses).\n\n``.``\n Step forward. Pressing once will pause, every consecutive press will play\n one frame and then go into pause mode again.\n\n``,``\n Step backward. Pressing once will pause, every consecutive press will play\n one frame in reverse and then go into pause mode again.\n\n``q``\n Stop playing and quit.\n\n``/`` / ``9`` and ``*`` / ``0``\n Decrease/increase volume.\n\n``m``\n Mute sound.\n\n``_``\n Cycle through the available video tracks.\n\n``#``\n Cycle through the available audio tracks.\n\n``f``\n Toggle fullscreen.\n\n``T``\n Toggle stay-on-top.\n\n``w`` and ``e``\n Decrease/increase pan-and-scan range.\n\n``o`` / ``P``\n Show progression bar, elapsed time and total duration on the OSD.\n\n``O``\n Toggle OSD states between normal and playback time/duration.\n\n``v``\n Toggle subtitle visibility.\n\n``j`` and ``J``\n Cycle through the available subtitles.\n\n``x`` and ``z``\n Adjust subtitle delay by +/- 0.1 seconds.\n\n``l``\n Set/clear A-B loop points.\n\n``L``\n Toggle infinite looping.\n\nCtrl-``+`` and Ctrl-``-``\n Adjust audio delay (A/V sync) by +/- 0.1 seconds.\n\n``u``\n Switch between applying no style overrides to SSA/ASS subtitles, and\n overriding them almost completely with the normal subtitle style.\n\n``V``\n Toggle subtitle VSFilter aspect compatibility mode.\n\n``r`` and ``t``\n Move subtitles up/down.\n\n``s``\n Take a screenshot.\n\n``S``\n Take a screenshot, without subtitles.\n\nAlt-``s``\n Take a screenshot each frame.\n\nPage Up and Page Down\n Seek to the beginning of the previous/next chapter.\n\n``d``\n Activate/deactivate deinterlacer.\n\n``A``\n Cycle aspect ratio override.\n\n``1`` and ``2``\n Adjust contrast.\n\n``3`` and ``4``\n Adjust brightness.\n\n``5`` and ``6``\n Adjust gamma.\n\n``7`` and ``8``\n Adjust saturation.\n\nAlt-``0``\n Resize video window to half its original size.\n\nAlt-``1``\n Resize video window to its original size.\n\nAlt-``2``\n Resize video window to double its original size.\n\n``E``\n Cycle through editions.\n\nMovements and selections\n^^^^^^^^^^^^^^^^^^^^^^^^\n\nThe following keybindings are Emacs-like since most characters are taken by\n**mpv**.\n\nCtrl-``p`` and Ctrl-``n``\n Move a single line up/down.\n\nAlt-``v`` and Ctrl-``v``\n Move a single page up/down.\n\nHome / Ctrl-``<`` and End / Ctrl-``>``\n Move to the beginning/end of the playlist.\n\nCtrl-Space\n Deselect/reselect the current entry and move down a line.\n\nPlaylist manipulation\n^^^^^^^^^^^^^^^^^^^^^\n\nCtrl-``o``\n Open playlist.\n\nCtrl-``i``\n Insert playlist.\n\nCtrl-``f`` and Alt-``f``\n Search forward/backward for a pattern.\n\nAlt-``m``\n Cycle through playing modes.\n\nDelete\n Delete the current entry.\n\n``W``\n Save the current playlist under JSON format.\n\nF5\n Redraw the screen content.\n\n``:``\n Execute a **mpv** command.\n\nConfiguration files\n-------------------\n\nIf not specified by the ``--config``, (user-specific) configuration file is\n``~/.config/comp/settings.ini``. Default configurations\nare listed below::\n\n [comp]\n # Initial playing mode, which can be one of these 8 modes: play-current,\n # play-all, play-selected, repeat-current, repeat-all, repeat-selected,\n # shuffle-all and shuffle-selected.\n play-mode = play-current\n\n [mpv]\n # Options to be parsed to mpv. See OPTIONS section on mpv(1) man pages for\n # its complete list of available options.\n # For example:\n #vo = xv\n #ontop = yes\n #border = no\n #force-window = yes\n #autofit = 500x280\n #geometry = -15-50\n\n [youtube-dl]\n # Video format/quality to be passed to youtube-dl. See FORMAT SELECTION in\n # youtube-dl(1) man page for more details and descriptions.\n format = bestvideo+bestaudio\n\n\nBugs\n----\n\nMedia durations are not extracted from online playlists as\n``youtube-dl.YoutubeDL`` option ``extract_flat`` is set to ``'in_playlist'``.\nThis is rather a feature to save up bandwidth than a bug because a track's\nduration is updated when it's played.\n\n\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/McSinyx/comp",
"keywords": "youtube-dl mpv-wrapper curses console-application multimedia",
"license": "AGPLv3+",
"maintainer": "",
"maintainer_email": "",
"name": "comp",
"package_url": "https://pypi.org/project/comp/",
"platform": "POSIX",
"project_url": "https://pypi.org/project/comp/",
"project_urls": {
"Homepage": "https://github.com/McSinyx/comp"
},
"release_url": "https://pypi.org/project/comp/0.4.6/",
"requires_dist": [
"python-mpv",
"youtube-dl"
],
"requires_python": ">=3.5",
"summary": "Curses Omni Media Player",
"version": "0.4.6"
},
"last_serial": 4287931,
"releases": {
"0.2.3": [
{
"comment_text": "",
"digests": {
"md5": "4fad4d29136817cd0fa55594c65d9cda",
"sha256": "d7a0365ed4957f31f539bc8f8b710fbc966e69ba100e6e5cf363b500a87f59b2"
},
"downloads": -1,
"filename": "comp-0.2.3.tar.gz",
"has_sig": false,
"md5_digest": "4fad4d29136817cd0fa55594c65d9cda",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 36191,
"upload_time": "2017-05-24T13:08:38",
"url": "https://files.pythonhosted.org/packages/87/66/061f90c75873a964331d9a781540d9ac5da8b67518e72cac9bd36fbe0dbc/comp-0.2.3.tar.gz"
}
],
"0.3.10": [
{
"comment_text": "",
"digests": {
"md5": "77cc3b061fd33dfaeadf8d7775dabba1",
"sha256": "110e68e2370c7e796afc6c722b55f86413cdef6894cabf8f58a92ba6401075d1"
},
"downloads": -1,
"filename": "comp-0.3.10-py3-none-any.whl",
"has_sig": false,
"md5_digest": "77cc3b061fd33dfaeadf8d7775dabba1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 19573,
"upload_time": "2017-07-04T08:56:12",
"url": "https://files.pythonhosted.org/packages/e5/27/21a3ef8ea12b074b6742264316ea86111ec83b705265ca180b9ca1ef9a66/comp-0.3.10-py3-none-any.whl"
}
],
"0.3.11": [
{
"comment_text": "",
"digests": {
"md5": "3901c1393344b930b4488c89290d4495",
"sha256": "ee333d6bd2b072ee9e38dc8eb8a37dabe05f36b0827f2db75c45ccfeecb29f39"
},
"downloads": -1,
"filename": "comp-0.3.11-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3901c1393344b930b4488c89290d4495",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 19617,
"upload_time": "2017-07-04T17:05:02",
"url": "https://files.pythonhosted.org/packages/dd/b1/d554ee538742ef13114dcbb81f789302ab56f1d257cfed828d61b88f4a1c/comp-0.3.11-py3-none-any.whl"
}
],
"0.3.12": [
{
"comment_text": "",
"digests": {
"md5": "137c2b0955d5898eedc32f10eeda9097",
"sha256": "642159026d1a24a2bcba9e2ff46218553fb9c61bbf19b2f7d580cccd34bc9ad5"
},
"downloads": -1,
"filename": "comp-0.3.12-py3-none-any.whl",
"has_sig": false,
"md5_digest": "137c2b0955d5898eedc32f10eeda9097",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 19600,
"upload_time": "2017-08-07T07:25:01",
"url": "https://files.pythonhosted.org/packages/5b/44/083c574f8b40fd966e4cbc94701c171fcf39dd2cc39440f321e22f60a345/comp-0.3.12-py3-none-any.whl"
}
],
"0.3.2": [
{
"comment_text": "",
"digests": {
"md5": "fbb84e1e09020f6a4217e3d323742978",
"sha256": "0e5ed19da77c9c129cb677b0b23eab299a73b50cecb6e429068e9a957f2f7cbd"
},
"downloads": -1,
"filename": "comp-0.3.2.tar.gz",
"has_sig": false,
"md5_digest": "fbb84e1e09020f6a4217e3d323742978",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 854401,
"upload_time": "2017-06-10T15:20:21",
"url": "https://files.pythonhosted.org/packages/c8/07/1fb0e6a13cf904f8e6f6140b1f82256817a301331706cac51202edffe1c1/comp-0.3.2.tar.gz"
}
],
"0.3.3": [
{
"comment_text": "",
"digests": {
"md5": "81926587b03a213a185bfade5f6104e1",
"sha256": "4d9c8d2c743f718a567dc24f07cdc5799cce889a2cdaa184f0922eff62b395bf"
},
"downloads": -1,
"filename": "comp-0.3.3.tar.gz",
"has_sig": false,
"md5_digest": "81926587b03a213a185bfade5f6104e1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 854547,
"upload_time": "2017-06-12T06:42:17",
"url": "https://files.pythonhosted.org/packages/a9/96/a27619f27fb47aaacd5b8caca98cfa18962a62547de811aa80d0a43eb46f/comp-0.3.3.tar.gz"
}
],
"0.3.5": [
{
"comment_text": "",
"digests": {
"md5": "f7c7cee22b9bcb600f9db54059a8e68c",
"sha256": "ad8fe9679cb8a6ff4211c6f498061cb8355815435382133fd6b699c164a4c229"
},
"downloads": -1,
"filename": "comp-0.3.5.tar.gz",
"has_sig": false,
"md5_digest": "f7c7cee22b9bcb600f9db54059a8e68c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 854627,
"upload_time": "2017-06-14T06:16:39",
"url": "https://files.pythonhosted.org/packages/00/ae/28b2917a86e3650a190cd9a5eb4bddbe70745adee43ad0096eec0cd985fa/comp-0.3.5.tar.gz"
}
],
"0.3.6": [
{
"comment_text": "",
"digests": {
"md5": "f600c622684234c580eb995dcfd96791",
"sha256": "b2134586c6cd0d6c8ed3a52315e80ca8630e5b9ec53366773854702a3eb20208"
},
"downloads": -1,
"filename": "comp-0.3.6.tar.gz",
"has_sig": false,
"md5_digest": "f600c622684234c580eb995dcfd96791",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.5",
"size": 855591,
"upload_time": "2017-06-25T10:42:02",
"url": "https://files.pythonhosted.org/packages/6e/cc/cbc516fccc36574291b95c92462fc0ae93dda5f819a6c0d03c9c52d8b110/comp-0.3.6.tar.gz"
}
],
"0.3.7": [
{
"comment_text": "",
"digests": {
"md5": "7bd148c016a50690344b9143d4222ded",
"sha256": "0be429d2ccdcfc847a385bb2126720326e44d7977ed4906c0895c96db8185579"
},
"downloads": -1,
"filename": "comp-0.3.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7bd148c016a50690344b9143d4222ded",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 19398,
"upload_time": "2017-06-25T14:28:16",
"url": "https://files.pythonhosted.org/packages/49/8e/21c6114c6ace59eae73bb723dc4ac3bc87b35c8c33144971962a902043c6/comp-0.3.7-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "a900c44b5171aa8634ac6fb482aee474",
"sha256": "d93a7b16b9c6a6092b7098fe2d280d95e07b26344f10049ae8e4e3ee54093c88"
},
"downloads": -1,
"filename": "comp-0.3.7.tar.gz",
"has_sig": false,
"md5_digest": "a900c44b5171aa8634ac6fb482aee474",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.5",
"size": 855447,
"upload_time": "2017-06-25T13:35:25",
"url": "https://files.pythonhosted.org/packages/43/9f/ede51007d955f1f3fbf4459162c7a93ede9d397ede3c13c5db93ffc5184e/comp-0.3.7.tar.gz"
}
],
"0.3.8": [
{
"comment_text": "",
"digests": {
"md5": "2b4a3124ce6973d2df0df21126d1542d",
"sha256": "5cfd370bd3274f6e8fdd55764985f1ced2076463e7db6ca43748976e7d7a7306"
},
"downloads": -1,
"filename": "comp-0.3.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2b4a3124ce6973d2df0df21126d1542d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 19400,
"upload_time": "2017-07-03T07:23:30",
"url": "https://files.pythonhosted.org/packages/c1/24/7690cdc3f6160c5160ad36467fe28c897752fc48f335d996ec95021a3218/comp-0.3.8-py3-none-any.whl"
}
],
"0.3.9": [
{
"comment_text": "",
"digests": {
"md5": "ae7dc1920a849e41d2c284070ab5bca5",
"sha256": "985b1ea352497116b8dfbb6daae7a11daa2cca3045508fbd87195c26f17452c7"
},
"downloads": -1,
"filename": "comp-0.3.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ae7dc1920a849e41d2c284070ab5bca5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 19722,
"upload_time": "2017-07-03T13:58:35",
"url": "https://files.pythonhosted.org/packages/62/48/dfcd144c8dc60f8f54b2e7413047849410a80530c9674b474355d4e6f92b/comp-0.3.9-py3-none-any.whl"
}
],
"0.4.2": [
{
"comment_text": "",
"digests": {
"md5": "55c9de14e0348059db025085e841a186",
"sha256": "7360d8b1e14342fb187f6acbfc0db7eef3024140ee8b30378107aa8b4643995e"
},
"downloads": -1,
"filename": "comp-0.4.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "55c9de14e0348059db025085e841a186",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 23094,
"upload_time": "2018-01-25T14:37:19",
"url": "https://files.pythonhosted.org/packages/a9/2f/3e34248abdebbd727f2c66e4dcd53176cf6cdd54fdb2f19b3ec61db309dd/comp-0.4.2-py3-none-any.whl"
}
],
"0.4.3": [
{
"comment_text": "",
"digests": {
"md5": "e05a76f51b48138afe67db108fb58118",
"sha256": "0f90bc10d3f96295b0ff2b511b5fb2895bfec15bff3c59a600c183e1b864746d"
},
"downloads": -1,
"filename": "comp-0.4.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e05a76f51b48138afe67db108fb58118",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 23383,
"upload_time": "2018-01-28T16:04:46",
"url": "https://files.pythonhosted.org/packages/5a/2c/2a13b54c5f8f7b4a6ede422811d644f5f0d7b9388b5f859ea430fc7d7bb6/comp-0.4.3-py3-none-any.whl"
}
],
"0.4.4": [
{
"comment_text": "",
"digests": {
"md5": "0af2f6c325049f4ee7c2427fd5729680",
"sha256": "81320b059a3bcc713f7a7c941612ae25817fa43ba5908a1a5c2fc25977daa4f0"
},
"downloads": -1,
"filename": "comp-0.4.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0af2f6c325049f4ee7c2427fd5729680",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 23352,
"upload_time": "2018-01-30T02:42:55",
"url": "https://files.pythonhosted.org/packages/8a/cd/9afc79f0df3ecfe3b061650c92fe58fab137e501e44666c7b0d7699331cb/comp-0.4.4-py3-none-any.whl"
}
],
"0.4.5": [
{
"comment_text": "",
"digests": {
"md5": "bc7787385e6ba324442940cc756b4c6b",
"sha256": "1b3c313507c50659b491367dfa2f8ccb0fa959bac444884aaabcee8e47ac76dd"
},
"downloads": -1,
"filename": "comp-0.4.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bc7787385e6ba324442940cc756b4c6b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 23729,
"upload_time": "2018-01-30T13:03:26",
"url": "https://files.pythonhosted.org/packages/a8/d5/a84a8c89f57a5bf304722a30f4fb11ed1e5bf40abf6d3c02b022b4a5cb07/comp-0.4.5-py3-none-any.whl"
}
],
"0.4.6": [
{
"comment_text": "",
"digests": {
"md5": "cbaa4d461830eda583e49f52aead0d4f",
"sha256": "15e61fcac996fd095cf17ff9d0fceb67868cbd7d551ce7b4dcddde90a532674b"
},
"downloads": -1,
"filename": "comp-0.4.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "cbaa4d461830eda583e49f52aead0d4f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 23603,
"upload_time": "2018-09-19T10:24:31",
"url": "https://files.pythonhosted.org/packages/f0/a4/28abbd9643d4f82ac66b5f1b8919cbf2612a1f02b3db20a40a5411092957/comp-0.4.6-py3-none-any.whl"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "cbaa4d461830eda583e49f52aead0d4f",
"sha256": "15e61fcac996fd095cf17ff9d0fceb67868cbd7d551ce7b4dcddde90a532674b"
},
"downloads": -1,
"filename": "comp-0.4.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "cbaa4d461830eda583e49f52aead0d4f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 23603,
"upload_time": "2018-09-19T10:24:31",
"url": "https://files.pythonhosted.org/packages/f0/a4/28abbd9643d4f82ac66b5f1b8919cbf2612a1f02b3db20a40a5411092957/comp-0.4.6-py3-none-any.whl"
}
]
}