{ "info": { "author": "Cyker Way", "author_email": "cykerway@example.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Multimedia" ], "description": "# spotish\n\ndownload tracks and playlists on spotify;\n\n## install\n\ninstall spotish with pip:\n\n pip install spotish\n\n## usage\n\nto use spotish, you need to create a spotify application:\n\n1. go to and log in;\n\n2. click *create a client id*;\n\n3. fill in any name and description, then choose *desktop app*;\n\n4. on next page, when asked *are you developing a commercial integration?*,\n choose *no*;\n\n5. on next page, tick all boxes and click *submit*;\n\n6. now the app is created; the app page lists its client id and client secret,\n which will be used when you run spotish; we also need a redirect uri, so\n click *edit settings*;\n\n7. add `http://localhost/callback/` in *redirect uris*; this uri will be used\n when you run spotish;\n\n8. click *save*;\n\nnow we have a spotify username, a client id, a client secret and a redirect uri;\n\n### download tracks\n\nto download saved tracks into the default `out` dir:\n\n spotish --user {username} \\\n --client-id {client_id} --client-secret {client_secret} \\\n --redirect-uri {redirect_uri} \\\n tracks\n\non first run, this will open a web browser and ask you to enter the redirect uri\nto authenticate; simply follow the instructions; this will generate a hidden\ncache file named `.cache-{username}` in current dir, containing spotify web api\naccess token; later runs of spotish dont need authentication until the access\ntoken expires;\n\ntracks are organized by their albums; both albums and tracks are named after\ntheir uuids; an album uuid contains total tracks in album, album uri and album\nname; a track uuid contains track number within the album, track uri and track\nname; album and track uris already guarantee uniqueness; however, uuids contain\nmore information and are easier to visualize; by using uuids, tracks within an\nalbum are automatically sorted by their track numbers, which looks very nice;\n\nto download saved tracks with more complete metadata and helpful progress text:\n\n spotish --user {username} \\\n --client-id {client_id} --client-secret {client_secret} \\\n --redirect-uri {redirect_uri} \\\n --output {dir} \\\n --album-image --track-preview \\\n --verbose \\\n tracks\n\n### download playlists\n\nto download saved playlists, use command `playlists` instead of `tracks`:\n\n spotish --user {username} \\\n --client-id {client_id} --client-secret {client_secret} \\\n --redirect-uri {redirect_uri} \\\n --output {dir} \\\n --playlist-image --track-preview \\\n --verbose \\\n playlists\n\ntracks are organized by their playlists, not albums; both playlists and tracks\nare named after their uuids; a playlist uuid contains playlist index, playlist\nuri and playlist name; a track uuid contains track index within the playlist,\ntrack uri and track name;\n\n## depend\n\nspotish depends on:\n\n- [spotipy](https://github.com/plamere/spotipy);\n\n## license\n\nCopyright (c) 2012-2018 Cyker Way\n\nThis program is free software: you can redistribute it and/or modify it under\nthe terms of the GNU General Public License as published by the Free Software\nFoundation, either version 3 of the License, or (at your option) any later\nversion.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY\nWARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A\nPARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with\nthis program. If not, see .", "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/cykerway/spotish", "keywords": "spotify music", "license": "", "maintainer": "", "maintainer_email": "", "name": "spotish", "package_url": "https://pypi.org/project/spotish/", "platform": "", "project_url": "https://pypi.org/project/spotish/", "project_urls": { "Homepage": "https://github.com/cykerway/spotish", "Source": "https://github.com/cykerway/spotish" }, "release_url": "https://pypi.org/project/spotish/1.2.5/", "requires_dist": null, "requires_python": "", "summary": "download tracks and playlists on spotify;", "version": "1.2.5" }, "last_serial": 4701032, "releases": { "1.1.0": [ { "comment_text": "", "digests": { "md5": "935622fc6386df57a84e51a659799084", "sha256": "da6e7e4a86370afd15e18556e96de610e153d364c049473be8a3388e35a369b3" }, "downloads": -1, "filename": "spotish-1.1.0.tar.gz", "has_sig": false, "md5_digest": "935622fc6386df57a84e51a659799084", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20914, "upload_time": "2018-11-27T15:14:11", "url": "https://files.pythonhosted.org/packages/92/7d/c80a041f90360f6a67c2ff507b22f97bb2764dc7559b2a395e0640271250/spotish-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "aaa3aa196a9aaf150dd436a24774403a", "sha256": "280750c2604b432fc5d77770abe595a9020572807fa9becac10e69b3cf50d0eb" }, "downloads": -1, "filename": "spotish-1.2.0.tar.gz", "has_sig": false, "md5_digest": "aaa3aa196a9aaf150dd436a24774403a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20492, "upload_time": "2018-11-30T12:05:38", "url": "https://files.pythonhosted.org/packages/f5/4e/cdfbb6c65a21a100d021dee7883ce36743415fdf04fc36b5f351348a8241/spotish-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "d756f87d19f5f1e22e9933de002eff02", "sha256": "f1f75adc6975c1f2c23d83b324165336e6bd70b7c86b4b8710d32b0718d22360" }, "downloads": -1, "filename": "spotish-1.2.1.tar.gz", "has_sig": false, "md5_digest": "d756f87d19f5f1e22e9933de002eff02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20463, "upload_time": "2018-11-30T14:07:26", "url": "https://files.pythonhosted.org/packages/17/49/b8fa4fff0241c464c2145b6204782465ecb45208e555be1b32ad0c52cbbe/spotish-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "dbed62b4bc66ea7b96fed1e306626e0d", "sha256": "5ac7f195607116828965aff26f6131811963211241162d66b815a69a71a1bbed" }, "downloads": -1, "filename": "spotish-1.2.2.tar.gz", "has_sig": false, "md5_digest": "dbed62b4bc66ea7b96fed1e306626e0d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20457, "upload_time": "2018-12-02T05:56:28", "url": "https://files.pythonhosted.org/packages/3d/e5/14c774665ab4f9ea25c2bb37a52f502e18d9615e6ea732c51799e5a7ac1a/spotish-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "54354073bf0c94cb98006df85f687641", "sha256": "7683f967bb3b3ed052f2ef9a1c8f4f85150f72c63e25da83b54f0d52fd10f4c8" }, "downloads": -1, "filename": "spotish-1.2.3.tar.gz", "has_sig": false, "md5_digest": "54354073bf0c94cb98006df85f687641", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20453, "upload_time": "2018-12-03T13:10:12", "url": "https://files.pythonhosted.org/packages/32/e0/d1ff3d1c3fc0554d0ed78956941a79e49e6f79e4d11c88368e007bca33cc/spotish-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "5ada9bb6f1d730b675705312928d4c49", "sha256": "3ffacd442d742f9c0454509995d9bf78b84e232ee89f37ef3d89b241fa529493" }, "downloads": -1, "filename": "spotish-1.2.4.tar.gz", "has_sig": false, "md5_digest": "5ada9bb6f1d730b675705312928d4c49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20463, "upload_time": "2018-12-03T13:58:11", "url": "https://files.pythonhosted.org/packages/f2/23/18a844987beb8e834f301658f349ae48e40f20dc1246f83de61981c59300/spotish-1.2.4.tar.gz" } ], "1.2.5": [ { "comment_text": "", "digests": { "md5": "4ddc5d58974565473224a8c00b51c279", "sha256": "ce0a1ce024dffea1d9cb7afeed72b65211ba31fff4e5fe2277756603e8358ce6" }, "downloads": -1, "filename": "spotish-1.2.5.tar.gz", "has_sig": false, "md5_digest": "4ddc5d58974565473224a8c00b51c279", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19372, "upload_time": "2019-01-16T00:30:07", "url": "https://files.pythonhosted.org/packages/8b/8a/1c21ffbd8ac2f14f4bb89c86b17e5a3f63917844ace4f3302237aa7c924e/spotish-1.2.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4ddc5d58974565473224a8c00b51c279", "sha256": "ce0a1ce024dffea1d9cb7afeed72b65211ba31fff4e5fe2277756603e8358ce6" }, "downloads": -1, "filename": "spotish-1.2.5.tar.gz", "has_sig": false, "md5_digest": "4ddc5d58974565473224a8c00b51c279", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19372, "upload_time": "2019-01-16T00:30:07", "url": "https://files.pythonhosted.org/packages/8b/8a/1c21ffbd8ac2f14f4bb89c86b17e5a3f63917844ace4f3302237aa7c924e/spotish-1.2.5.tar.gz" } ] }