{ "info": { "author": "Time Traveller", "author_email": "time.traveller.san@gmail.com", "bugtrack_url": null, "classifiers": [ "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3" ], "description": "# ytTerm player (BETA)\nPlay youtube playlists as audio on linux terminal\n\n[![Build Status](https://travis-ci.com/SamSamhuns/yTermPlayer.svg?branch=master)](https://travis-ci.com/SamSamhuns/yTermPlayer)\n[![PyPI version](https://badge.fury.io/py/yTermPlayer.svg)](https://badge.fury.io/py/yTermPlayer)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/yTermPlayer.svg)](https://pypi.python.org/pypi/yTermPlayer/)\n[![PyPI license](https://img.shields.io/pypi/l/yTermPlayer.svg)](https://pypi.python.org/pypi/yTermPlayer/)\n\n## About\nytTerm player is a terminal youtube music player. It's completely written in python.\n\n**UI**: Made using a wrapper for curses called [urwid][urwid]\n\n**Player**: Handled using [python-mpv](https://github.com/jaseg/python-mpv)\n\n**Stream fetch**: Audio streams from youtube are fetched using [pafy][pafy]\n\nFeatures:\n- Import and play youtube playlists on terminal\n- Save playlists in library\n- Use several playback modes such as repeat one, repeat list, random\n- Download complete list (coming soon)\n\n### Installation\n\nSet up a virtual environment and install the dependencies:\n```sh\n$ pip install -r requirements.txt\n```\n\npython3 pip :-\n```sh\n$ pip install ytermplayer\n$ yterm\n```\n\nor Git clone :-\n```sh\n$ git clone https://github.com/TimeTraveller-San/yTermPlayer\n$ cd yTermPlayer/yTermPlayer/\n$ python __main__.py\n```\n\n### Dependencies\n\nPython 3\n\nytTerm player uses a number of open source projects to work properly:\n\n* [urwid][urwid]\n* [python-mpv](https://github.com/jaseg/python-mpv)\n* [pafy][pafy]\n* python3\n* mpv player (sudo pacman -S mpv) or (sudo apt-get install mpv)\n\nytTerm player itself is open source. Feel free to modify and distribute the code\n\n### KeyBindings\n\n| Key | Function |\n| :--- | :--- |\n| s | save current list |\n| enter | select option/play song at selection |\n| n | play next song |\n| p | play previous song |\n| space | pause/play song |\n| u | volume up |\n| d | volume down |\n| q | quit |\n| 1 | playback mode: Repeat one |\n| 2 | playback mode: Repeat list |\n| 3 | playback mode: None |\n| r | playback mode: Random |\nmore features coming soon\n\n\n### Screenshots\n### Working video: \n### Working video 2: \n### Start screen :\n![Start Screem](https://i.imgur.com/rvVUmDP.png)\n### The UI will automatically use your terminal colors.\n![Blue](https://i.imgur.com/R8a0Zy5.png)\n![Yellow](https://i.imgur.com/TrHKuQg.jpg)\n\n [urwid]: \n [vlc]: \n [pafy]: \n\n### FAQ\n- How to fix out of range/url not found errors?\n\nYouTube keeps changing its structure so it's important you have installed the latest version of youtube-dl as follows:\n` pip install --upgrade youtube_dl `\n\n- Where are my playlists stored and how to delete playlists?\n\nPlaylists are saved in `$HOME/.yTermPlayer/playlists` as plain text. You may delete or add new playlists directly here.\n\n- How to contact me?\n\n**Email:** time.traveller.san@gmail.com\n**Twitter:** \n\n\n### Known Bugs\n- ~~Buggy / unexpected playback behavior~~\nIt was caused because of race conditions and absence of critical section among the threads. Fixed it using semaphores\n\n- ~~If some VLC error starts showing up on the screen, just resize the terminal and it will be gone~~\nCompletely removed VLC and replaced it with much more minimal and faster mpv player. Thank to [python-mpv by jaseg](https://github.com/jaseg/python-mpv)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/TimeTraveller-San/yTermPlayer", "keywords": "", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "yTermPlayer", "package_url": "https://pypi.org/project/yTermPlayer/", "platform": "", "project_url": "https://pypi.org/project/yTermPlayer/", "project_urls": { "Homepage": "https://github.com/TimeTraveller-San/yTermPlayer" }, "release_url": "https://pypi.org/project/yTermPlayer/1.2.2/", "requires_dist": [ "pafy (>=0.5.4)", "python-dateutil (>=2.7.5)", "python-mpv (>=0.3.9)", "urwid (>=2.0.1)", "virtualenv (>=16.0.0)", "youtube-dl (>=2019.5.20)" ], "requires_python": ">=3", "summary": "Stream youtube playlists as audio on linux terminal", "version": "1.2.2" }, "last_serial": 5494957, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "253fed95a90f17a519c38a338b80cde6", "sha256": "89cae216e81dbb3a2dc8b8b2fed62c7596068fe092b2239fb04927f3018ab380" }, "downloads": -1, "filename": "yTermPlayer-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "253fed95a90f17a519c38a338b80cde6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 10009, "upload_time": "2018-09-01T18:10:11", "url": "https://files.pythonhosted.org/packages/3f/dd/09b4f9057601701c6936db1fe0682344082162d913f584fa6ef63fd57861/yTermPlayer-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dcfd73a3cb7cd0fba87583ec33aa72ea", "sha256": "384a980e346e9689bbe709e0146c2e0d2438d5774e8ec639844f48dd18655dfa" }, "downloads": -1, "filename": "yTermPlayer-1.0.0.tar.gz", "has_sig": false, "md5_digest": "dcfd73a3cb7cd0fba87583ec33aa72ea", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 9126, "upload_time": "2018-09-01T18:10:13", "url": "https://files.pythonhosted.org/packages/df/18/c725fbf4f779e751e235c6f524323492c6eba701d1eb965d272c0b571558/yTermPlayer-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "61445c9111e664eaf96d3b91c9635ec9", "sha256": "f0d422f292ba5cdc1bc25a178d3baeee7125d0240e66198410c87727e4548d94" }, "downloads": -1, "filename": "yTermPlayer-1.1.0.tar.gz", "has_sig": false, "md5_digest": "61445c9111e664eaf96d3b91c9635ec9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 9880, "upload_time": "2018-12-10T19:14:26", "url": "https://files.pythonhosted.org/packages/bf/79/3f9125fd609d0d87bf87316afedd509d80ac8c029918258e9de6ab5a33bc/yTermPlayer-1.1.0.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "4a5c405fa672575a6307465e4572454f", "sha256": "a4e417c84edbd00921a939a1f4bf433714613f0cb31b22ac20ee7ae27a23e315" }, "downloads": -1, "filename": "yTermPlayer-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4a5c405fa672575a6307465e4572454f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 23380, "upload_time": "2018-12-11T06:45:28", "url": "https://files.pythonhosted.org/packages/78/28/6d0bf8bb9f300dfba222ba2a9eeac120063565136b4b24570984b657b675/yTermPlayer-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bd2f109b2678dba8893a448681651b52", "sha256": "71af80903135c1590095f629bf4a4d69d28efe3ea00daf7805f16fadb64f6e2b" }, "downloads": -1, "filename": "yTermPlayer-1.1.2.tar.gz", "has_sig": false, "md5_digest": "bd2f109b2678dba8893a448681651b52", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 9975, "upload_time": "2018-12-11T06:45:30", "url": "https://files.pythonhosted.org/packages/3d/84/e49fbeb07bb4fef41795d0156e3c309ccd9db427bc4613688e1e8b46bf45/yTermPlayer-1.1.2.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "77e7c9d68439c7dea7561ea385caa8a5", "sha256": "3d4cc443f6831be7a7dfb90a2ec7528a0587efa00a25922dd36196e9ec67e2d6" }, "downloads": -1, "filename": "yTermPlayer-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "77e7c9d68439c7dea7561ea385caa8a5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 23275, "upload_time": "2019-05-24T06:58:10", "url": "https://files.pythonhosted.org/packages/a8/ee/3309cb71d2a3ea8d62c2bdc72ec3171696af9422cf2bd273a75d1f345e8f/yTermPlayer-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f201eebe2864c546245e4352dc0c79a2", "sha256": "8beb2e66732bf45f10ad3e1bade64ae9e26017dcfbd1671f3b3ae77a89d8741d" }, "downloads": -1, "filename": "yTermPlayer-1.2.0.tar.gz", "has_sig": false, "md5_digest": "f201eebe2864c546245e4352dc0c79a2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10169, "upload_time": "2019-05-24T06:58:12", "url": "https://files.pythonhosted.org/packages/9f/3a/2400acf5861616b6a301b8ca78d7de85c62beb39092cdc76247c5b1f4386/yTermPlayer-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "ac0a037eb0395b578d70450c3e394c4c", "sha256": "26e3f3b92f36b2e2f31a1f4dcd5ab2da5a92998e7b44b9a5e7df3788f6f02334" }, "downloads": -1, "filename": "yTermPlayer-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ac0a037eb0395b578d70450c3e394c4c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 23279, "upload_time": "2019-06-30T09:54:42", "url": "https://files.pythonhosted.org/packages/20/6e/150960bd934e5c01e69ebf34ae636dc2535b02fd0127475b55b9acfb91e2/yTermPlayer-1.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8dc655f498bb138a493901f9fc965189", "sha256": "c70e94c20ee853b8ece7438173db674a98330cadf1d0fce3ae7e223788397a4c" }, "downloads": -1, "filename": "yTermPlayer-1.2.1.tar.gz", "has_sig": false, "md5_digest": "8dc655f498bb138a493901f9fc965189", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10162, "upload_time": "2019-06-30T09:54:44", "url": "https://files.pythonhosted.org/packages/27/b6/55c3234d37deb3497da6dcc6eab3f008e9a67f4af115a7cb8bf1de969e5a/yTermPlayer-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "462dc116dce7c2a3b4a96a9fd73c3e5c", "sha256": "2346a5732f059612d6fb93a1a5be80e549bf08a388d0f63642abe53cf771de75" }, "downloads": -1, "filename": "yTermPlayer-1.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "462dc116dce7c2a3b4a96a9fd73c3e5c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 23735, "upload_time": "2019-07-06T15:13:17", "url": "https://files.pythonhosted.org/packages/2f/51/0d423536105fb88a89bacfac36af4fde95c91d52d809e2955caddff1b66c/yTermPlayer-1.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d33273152f32c25db3c975f2459778c5", "sha256": "b2a5c124e192b958134cccb9080ee7b664f341effb07e397504edcd750a5e9e5" }, "downloads": -1, "filename": "yTermPlayer-1.2.2.tar.gz", "has_sig": false, "md5_digest": "d33273152f32c25db3c975f2459778c5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10643, "upload_time": "2019-07-06T15:13:19", "url": "https://files.pythonhosted.org/packages/5f/51/327782848198bcdb3f3005601e0106257b10d209cd626ac33b7f006cda1b/yTermPlayer-1.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "462dc116dce7c2a3b4a96a9fd73c3e5c", "sha256": "2346a5732f059612d6fb93a1a5be80e549bf08a388d0f63642abe53cf771de75" }, "downloads": -1, "filename": "yTermPlayer-1.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "462dc116dce7c2a3b4a96a9fd73c3e5c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 23735, "upload_time": "2019-07-06T15:13:17", "url": "https://files.pythonhosted.org/packages/2f/51/0d423536105fb88a89bacfac36af4fde95c91d52d809e2955caddff1b66c/yTermPlayer-1.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d33273152f32c25db3c975f2459778c5", "sha256": "b2a5c124e192b958134cccb9080ee7b664f341effb07e397504edcd750a5e9e5" }, "downloads": -1, "filename": "yTermPlayer-1.2.2.tar.gz", "has_sig": false, "md5_digest": "d33273152f32c25db3c975f2459778c5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10643, "upload_time": "2019-07-06T15:13:19", "url": "https://files.pythonhosted.org/packages/5f/51/327782848198bcdb3f3005601e0106257b10d209cd626ac33b7f006cda1b/yTermPlayer-1.2.2.tar.gz" } ] }