{ "info": { "author": "Christodoulos Tsoulloftas", "author_email": "\"chris@komposta.net\",", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython" ], "description": "pytuber\n=======\n\n\n.. image:: https://travis-ci.org/tefra/pytuber.svg?branch=master\n :target: https://travis-ci.org/tefra/pytuber\n\n.. image:: https://readthedocs.org/projects/pytuber/badge\n :target: https://pytuber.readthedocs.io/en/latest\n\n.. image:: https://codecov.io/gh/tefra/pytuber/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/tefra/pytuber\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/ambv/black\n\n.. image:: https://img.shields.io/github/languages/top/tefra/pytuber.svg\n :target: https://pytuber.readthedocs.io/\n\n.. image:: https://api.codacy.com/project/badge/Grade/5d21d2a3c7fd4dc5883c48124cac44de\n :target: https://app.codacy.com/app/tefra/pytuber?utm_source=github.com&utm_medium=referral&utm_content=tefra/pytuber&utm_campaign=Badge_Grade_Dashboard\n\n.. image:: https://img.shields.io/pypi/pyversions/pytuber.svg\n :target: https://pypi.org/pypi/pytuber/\n\n.. image:: https://img.shields.io/pypi/v/pytuber.svg\n :target: https://pypi.org/pypi/pytuber/\n\n----\n\n.. image:: https://github.com/tefra/pytuber/raw/master/docs/_static/demo.gif\n :align: center\n\n----\n\n**pytuber** is a cli tool to manage your music **playlists** on youtube.\n - Generate playlists from `Last.fm `_ or\n - Import from file formats: XSPF, JSPF, M3U\n - Create with a simple copy paste in a text editor\n - Search and match tracks to Youtube videos\n - Sync pytuber playlists (fetch/push)\n - Update youtube playlist items (add/remove)\n - Keep track of youtube api quota usage\n\nCheck `Documentation `__ | `Changelog `__\n\nInstall & Setup\n~~~~~~~~~~~~~~~\n\n.. code-block:: console\n\n $ pip install pytuber\n $ pytuber setup autocomplete # Enable autocomplete\n\n\nRead how to setup youtube `authentication `_\n\nStart creating youtube playlists \u2728\u2728\n\n\nYoutube API Quota\n~~~~~~~~~~~~~~~~~\n\nYoutube api has a daily api `quota `_ limit which resets at midnight Pacific Time (PT).\n\npytuber includes a quota calculator\n\n.. code-block:: console\n\n $ pytuber quota\n\nAdditionally to the api quota limit Youtube limits the amount of how many playlists you can create per day to only **10**.\n\nIn case you reach that number, you can push a new playlist manually.\n - Create a playlist with `pytuber add` command\n - View the playlist by using this command `pytuber show xxxx --mime`\n - This mime string is base64 signature used by pytuber internally to link local to youtube playlists\n - Add a youtube playlists manually from the web site and add the mime signature at the bottom of the playlist description\n - Fetch the new playlist info `pytuber fetch youtube --playlists`\n\nAfterwards you will be aple to push tracks like normally.\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/tefra/pytuber", "keywords": "youtube,music,playlist,last.fm,cli", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pytuber", "package_url": "https://pypi.org/project/pytuber/", "platform": "", "project_url": "https://pypi.org/project/pytuber/", "project_urls": { "Documentation": "https://pytuber.readthedocs.io/", "Homepage": "https://github.com/tefra/pytuber", "Source": "https://github.com/tefra/pytuber" }, "release_url": "https://pypi.org/project/pytuber/19.2/", "requires_dist": [ "lxml (==4.3.1)", "click (==7.0)", "click-completion (==0.5.0)", "pydrag (==18.1)", "attrs (==18.2.0)", "tabulate[widechars] (==0.8.3)", "yaspin (==0.14.1)", "google-api-python-client (==1.7.8)", "google-auth (==1.6.2)", "google-auth-oauthlib (==0.2.0)", "pre-commit ; extra == 'dev'", "pytest ; extra == 'dev'", "pytest-cov ; extra == 'dev'", "codecov ; extra == 'dev'", "tox ; extra == 'dev'", "Pygments ; extra == 'dev'", "check-manifest ; extra == 'dev'", "sphinx ; extra == 'docs'", "sphinx-rtd-theme ; extra == 'docs'", "sphinxcontrib-programoutput ; extra == 'docs'" ], "requires_python": "", "summary": "Manage youtube music playlists", "version": "19.2" }, "last_serial": 4831211, "releases": { "19.1": [ { "comment_text": "", "digests": { "md5": "fd83545d6002fa362d7da60d562d260b", "sha256": "a2065a0eaa57b24f56b129e68d7454a579076fad0966376bf75c999bf3d50abd" }, "downloads": -1, "filename": "pytuber-19.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fd83545d6002fa362d7da60d562d260b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41391, "upload_time": "2019-01-27T00:45:08", "url": "https://files.pythonhosted.org/packages/41/01/973d237e53f3e629fed95f5ccacf4f3724d2d0bee95d37833041f2a3c724/pytuber-19.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "89b30db9ddcf8526d37b0bb7aa5f6af2", "sha256": "ebc8fadba5d2bbac42f3b98f4c1095d141ed86bd037263c4d0a89e3fb9560399" }, "downloads": -1, "filename": "pytuber-19.1.tar.gz", "has_sig": false, "md5_digest": "89b30db9ddcf8526d37b0bb7aa5f6af2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1770956, "upload_time": "2019-01-27T00:45:38", "url": "https://files.pythonhosted.org/packages/7e/a9/c09ffd4cad75841b5409d04c0be755e7784409b9f045a5d1eb3adbcd62d7/pytuber-19.1.tar.gz" } ], "19.2": [ { "comment_text": "", "digests": { "md5": "e2dca566ecdcd009f364e80dc993efd3", "sha256": "288642d9f0e6ec89b320cd414f596d85b125b813b6f0f907db011e03a1dac719" }, "downloads": -1, "filename": "pytuber-19.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e2dca566ecdcd009f364e80dc993efd3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 49884, "upload_time": "2019-02-17T10:30:57", "url": "https://files.pythonhosted.org/packages/56/71/dfbf53289e6051cd7701cfb652e005f61b4da4b63ae168ce3d71087144e2/pytuber-19.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "75c15e2021447f01de0a8794642a1f5d", "sha256": "56f1947ecca33b872a1abe3aa0199d3c6cec74440643200305f3f09f60c2e025" }, "downloads": -1, "filename": "pytuber-19.2.tar.gz", "has_sig": false, "md5_digest": "75c15e2021447f01de0a8794642a1f5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39977, "upload_time": "2019-02-17T10:31:00", "url": "https://files.pythonhosted.org/packages/87/25/2bb4450ed79741157594a3135f4d35b5ca60e2d3d64a2c0e10c4f3d7d639/pytuber-19.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e2dca566ecdcd009f364e80dc993efd3", "sha256": "288642d9f0e6ec89b320cd414f596d85b125b813b6f0f907db011e03a1dac719" }, "downloads": -1, "filename": "pytuber-19.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e2dca566ecdcd009f364e80dc993efd3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 49884, "upload_time": "2019-02-17T10:30:57", "url": "https://files.pythonhosted.org/packages/56/71/dfbf53289e6051cd7701cfb652e005f61b4da4b63ae168ce3d71087144e2/pytuber-19.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "75c15e2021447f01de0a8794642a1f5d", "sha256": "56f1947ecca33b872a1abe3aa0199d3c6cec74440643200305f3f09f60c2e025" }, "downloads": -1, "filename": "pytuber-19.2.tar.gz", "has_sig": false, "md5_digest": "75c15e2021447f01de0a8794642a1f5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39977, "upload_time": "2019-02-17T10:31:00", "url": "https://files.pythonhosted.org/packages/87/25/2bb4450ed79741157594a3135f4d35b5ca60e2d3d64a2c0e10c4f3d7d639/pytuber-19.2.tar.gz" } ] }