{ "info": { "author": "Hudson Bailey", "author_email": "hudsondiggsbailey@gmail.com", "bugtrack_url": null, "classifiers": [ "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Discognition\n\n**Discognition** is a command line tool to reorganize your media library. It uses data available from the Discogs API to add/modify ID3 tags, change file names and alter library directory structure. \n\n## Requirements\n\n- python3\n- Discogs account (free)\n\n## Installation & Setup\n\n- Install via pip `pip install discognition` (required python packages: [mutagen](https://github.com/quodlibet/mutagen) and [discogs_client](https://github.com/discogs/discogs_client))\n\n\n- You need to have a Discogs account in order to get a Discogs API token. Once you have registered for an account, you can generate or access your user token at https://www.discogs.com/settings/developers\n\n- Add your Discogs API user-token and your music library directory using the `--generateconfig` option:\n\n```\ndiscognition -g TOKEN /PATH/TO/LIBRARY\n```\n\n- Or if you prefer to create your config file manually, add the following to `~/.discognition-conf.yaml`:\n\n```\ntoken: TOKEN\ndirectory: /PATH/TO/LIBRARY\n```\n\n\n## Usage\n\n```\ndiscognition [-h] [-t [TAG [TAG ...]]] [-p] [-rn] [-rd] [-i] [-R] [-s ]\n [-g [[...]]] [--require-durations] [-v]\n [directory]\n\nupdate mp3 metadata and file/directory names using the discogs api\n\npositional arguments:\n directory specify album directory for querying discogs.\n\noptional arguments:\n -h, --help show this help message and exit\n -t [TAG [TAG ...]], --tag [TAG [TAG ...]]\n update existing files' tags with specific metadata\n fields: options = 'artist', 'album', 'year', 'label',\n 'art', 'track', 'tracknumber'; or 'all' to rewrite\n tags using all available data from Discogs\n -p, --print print album metadata (default action if -t, -rn, and\n -rd are unused)\n -rn, --renametracks rename files from Discogs metadata.\n -rd, --renamedirectories\n rename directories from Discogs metadata.\n -i, --interactive iterate through search items interactively\n -R, --recursive use all subdirectories with mp3s. e.g.: use on an\n artist's directory or music library directory.\n -s [], --search [] query discogs database instead of existing metadata.\n takes search string or release id/url\n -g [ [ ...]], --generateconfig [ [ ...]]\n create yaml configuration file. first argument =\n Discogs API token, second argument = music library\n directory\n --require-durations require album to have durations for individual tracks\n listed.\n -v, --version show program's version number and exit\n\n```\n\n## Examples\n\nSearch for an album and print its metadata, without updating any files or tags:\n\n```\n> discognition -s madvillainy\n\nsearching Discogs for \"madvillainy\"...\nfound 37 album(s)...\nusing album: Doom* & Madlib - Madvillain - Madvillainy\nhttps://www.discogs.com/Doom-Madlib-Madvillain-Madvillainy/release/242785\nTALB : Madvillainy\nTPE1 : MF Doom, Madlib, Madvillain\nTPUB : Stones Throw Records\nTDRC : 2004\nimage_url : https://img.discogs.com/WxPQzrIegpuWDicMoxIx1y0UKNo=/fit-in/600x597/filters:strip_icc():format(jpeg):mode_rgb():quality(90)/discogs-images/R-239980-1290094126.jpeg.jpg\ntracks : {'title': ['The Illest Villains', 'Accordion', 'Meat Grinder', 'Bistro', 'Raid', \"America's Most Blunted\", 'Sickfit (Inst.)', 'Rainbows', 'Curls', 'Do Not Fire! (Inst.)', 'Money Folder', 'Scene Two (Voice Skit)', 'Shadows Of Tomorrow', 'Operation Lifesaver AKA Mint Test', 'Figaro', 'Hardcore Hustle', 'Strange Ways', '(Intro)', 'Fancy Clown', 'Eye', 'Supervillain Theme (Inst.)', 'All Caps', 'Great Day', 'Rhinestone Cowboy']}\n```\n\nAdd record labels to the \"Publisher\" field for all of an artist's albums\n\n```\n> discognition Music/music-library/Annette\\ Peacock/ -R -t label\n\nNo mp3s found in Music/music-library/Annette Peacock/\n\nfound the following directories with mp3s:\nMusic/music-library/Annette Peacock/I'm the One(1972)\nMusic/music-library/Annette Peacock/X-Dreams(1978)\n\nsearching Discogs for \"I'm the One Annette Peacock\"...\nfound 59 album(s)...\nusing album: Annette Peacock - I'm The One\nhttps://www.discogs.com/Annette-Peacock-Im-The-One/release/2704734\n\nchanged TPUB to RCA Victor\n\nsearching Discogs for \"X-Dreams Annette Peacock\"...\nfound 27 album(s)...\nusing album: Annette Peacock - X-Dreams\nhttps://www.discogs.com/Annette-Peacock-X-Dreams/release/540789\n\nchanged TPUB to Aura\n```\n\nUpdate all tags for an album and print Discogs data to terminal \n\n```\n> discognition Music/music-library/Steve\\ Lehman/S\u00e9l\u00e9b\u00e9yone\\(2016\\)/ -p -t all\n\nsearching Discogs for \"Steve Lehman & S\u00e9l\u00e9b\u00e9yone Steve Lehman, S\u00e9l\u00e9b\u00e9yone\"...\nfound 2 album(s)...\nusing album: Steve Lehman & S\u00e9l\u00e9b\u00e9yone - Steve Lehman & S\u00e9l\u00e9b\u00e9yone\nhttps://www.discogs.com/Steve-Lehman-S%C3%A9l%C3%A9b%C3%A9yone-Steve-Lehman-S%C3%A9l%C3%A9b%C3%A9yone/release/9712042\n\nTALB : Steve Lehman & S\u00e9l\u00e9b\u00e9yone\nTPE1 : Steve Lehman, S\u00e9l\u00e9b\u00e9yone\nTPUB : Pi Recordings\nTDRC : 2016\nimage_url : https://img.discogs.com/NuXf8_9vW5DUSCbCIqeFlXGVqt0=/fit-in/500x446/filters:strip_icc():format(jpeg):mode_rgb():quality(90)/discogs-images/R-9712042-1485171083-4918.jpeg.jpg\ntracks : {'title': ['Laamb', 'Are You In Peace? ', 'Akap', 'Origine ', 'Cognition ', 'Hybrid', 'Dualism ', 'Geminou', 'Bamba']}\n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 01 Laamb.mp3's TIT2 to Laamb\n\nchanged APIC to Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/cover.jpg\n\nchanged TDRC to 2016\n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 01 Laamb.mp3's TRCK to 1\n\nchanged TPUB to Pi Recordings\n\nchanged TPE1 to Steve Lehman, S\u00e9l\u00e9b\u00e9yone\n\nchanged TALB to Steve Lehman & S\u00e9l\u00e9b\u00e9yone\n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 02 Are You In Peace-.mp3's TIT2 to Are You In Peace? \n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 02 Are You In Peace-.mp3's TRCK to 2\n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 03 Akap.mp3's TIT2 to Akap\n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 03 Akap.mp3's TRCK to 3\n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 04 Origine.mp3's TIT2 to Origine \n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 04 Origine.mp3's TRCK to 4\n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 05 Cognition.mp3's TIT2 to Cognition \n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 05 Cognition.mp3's TRCK to 5\n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 06 Hybrid.mp3's TIT2 to Hybrid\n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 06 Hybrid.mp3's TRCK to 6\n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 07 Dualism.mp3's TIT2 to Dualism \n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 07 Dualism.mp3's TRCK to 7\n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 08 Geminou.mp3's TIT2 to Geminou\n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 08 Geminou.mp3's TRCK to 8\n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 09 Bamba.mp3's TIT2 to Bamba\n\nchanged Music/music-library/Steve Lehman/S\u00e9l\u00e9b\u00e9yone(2016)/Steve Lehman - S\u00e9l\u00e9b\u00e9yone - 09 Bamba.mp3's TRCK to 9\n```\n\nInteractively search Discogs and download cover art for an album\n\n```\n> discognition Music/music-library/Swans/To\\ Be\\ Kind\\(2014\\)/ -t cover -i -p\n\nsearching Discogs for \"To Be Kind Swans\"...\nsearched for To Be Kind Swans\n\nDo you want: \nSwans - To Be Kind (2014)\n11 tracks on Vinyl\nhttps://www.discogs.com/Swans-To-Be-Kind/release/5690090\n(y/n)? \nn\n\nDo you want: \nSwans - To Be Kind (2014)\n11 tracks on Vinyl\nhttps://www.discogs.com/Swans-To-Be-Kind/release/5679893\n(y/n)? \nn\n\nDo you want: \nSwans - To Be Kind (2014)\n10 tracks on CD\nhttps://www.discogs.com/Swans-To-Be-Kind/release/5649159\n(y/n)? \ny\n\nusing album: To Be Kind\nhttps://www.discogs.com/Swans-To-Be-Kind/release/5649159\n\nTALB : To Be Kind\nTPE1 : Swans\nTPUB : Young God Records\nTDRC : 2014\nimage_url : https://img.discogs.com/cOcqx5xxohqD5INywki8T4Ygc-M=/fit-in/600x538/filters:strip_icc():format(jpeg):mode_rgb():quality(90)/discogs-images/R-5649159-1399990559-7559.jpeg.jpg\ntracks : {'title': ['Screen Shot', 'Just A Little Boy (For Chester Burnett)', 'A Little God In My Hands', \"Bring The Sun / Toussaint L'Ouverture\", 'Some Things We Do', 'She Loves Us', 'Kirsten Supine', 'Oxygen', 'Nathalie Neal', 'To Be Kind']}\n\nchanged APIC to Music/music-library/Swans/To Be Kind(2014)/cover.jpg\n\n```\n\nStandardize all file and directory names in music library\n\n```\n> discognition Music/music-library -R -rn -rd\n```\n\n## License\n\nMIT\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/hdbhdb/discognition", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "discognition", "package_url": "https://pypi.org/project/discognition/", "platform": "", "project_url": "https://pypi.org/project/discognition/", "project_urls": { "Homepage": "https://github.com/hdbhdb/discognition" }, "release_url": "https://pypi.org/project/discognition/0.2.1/", "requires_dist": [ "mutagen (>=1.41.1)", "discogs-client (>=2.2.2)" ], "requires_python": "", "summary": "update mp3 metadata and file/directory names using the discogs api", "version": "0.2.1" }, "last_serial": 5537397, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "eadfe13a7b8f7af9109791a7ef4122c4", "sha256": "ce2b307a2dd7808a35201bd6e7ae073b1a92e78905550af0140fc38a921260ac" }, "downloads": -1, "filename": "discognition-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "eadfe13a7b8f7af9109791a7ef4122c4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10948, "upload_time": "2019-05-02T19:29:04", "url": "https://files.pythonhosted.org/packages/a1/54/4eaee4b20e0484f1384d29b0d0c8cd3c740a112d5858762e04585cd9c8f2/discognition-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5f8a58867e280fd3270f31b1584efc87", "sha256": "f70c1b649135514056153a7e8f6529973e30e0737472f6a5402bddacc04ffd2c" }, "downloads": -1, "filename": "discognition-0.1.1.tar.gz", "has_sig": false, "md5_digest": "5f8a58867e280fd3270f31b1584efc87", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11736, "upload_time": "2019-05-02T19:29:06", "url": "https://files.pythonhosted.org/packages/4b/9d/9eafe6ea00dc44dea149b56e35abcd42d352648b9b9a99c297bf39f3a023/discognition-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "da2db10f2742b06a0661d931508a65ec", "sha256": "b8d7187e3410cba65c3314bfae128e98155d59ac8b1b5f8028ca34c7193b82ce" }, "downloads": -1, "filename": "discognition-0.1.2-py3.6.egg", "has_sig": false, "md5_digest": "da2db10f2742b06a0661d931508a65ec", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 17237, "upload_time": "2019-05-10T01:59:18", "url": "https://files.pythonhosted.org/packages/18/a3/6c3632bf7b4d0e1267f9ecda022755e2e6f51dc2975ee85d2d6a49febc11/discognition-0.1.2-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "d3401f06af8d30e26765b58b4563662a", "sha256": "c10125eb43e082d9c410be96fc66076cad8fdcb8b39098e43363324fcc8864fc" }, "downloads": -1, "filename": "discognition-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d3401f06af8d30e26765b58b4563662a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10950, "upload_time": "2019-05-02T19:32:26", "url": "https://files.pythonhosted.org/packages/f6/28/c9a8b2be51d4e53541dcf7a3ab905e93d16f41a1bd622805fb9811b481e1/discognition-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2bc988c8208d982a5e287ec558f310b0", "sha256": "f2c7cb0a289495eaf149c85ecb8049afd78aa8df0789cfbea2dc98e9db14104c" }, "downloads": -1, "filename": "discognition-0.1.2.tar.gz", "has_sig": false, "md5_digest": "2bc988c8208d982a5e287ec558f310b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11739, "upload_time": "2019-05-02T19:32:27", "url": "https://files.pythonhosted.org/packages/72/5b/3afc4440a8f7ced9935fc9cbdd3e8dfabf2d66d84801497f0ee405d72e1b/discognition-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "0c3efd5de398753455b54eba259ca32c", "sha256": "c57af831e4cbc27a29005e8011cce65982de7a38002c602f3e03a6294449d13b" }, "downloads": -1, "filename": "discognition-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "0c3efd5de398753455b54eba259ca32c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13826, "upload_time": "2019-05-10T01:59:17", "url": "https://files.pythonhosted.org/packages/2d/2b/e71dea2ac60a21259e205942cc329dc83be10da1425c537812fee5ccf1bf/discognition-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1b00004d305b6648b2fb3552bc7d93c6", "sha256": "e43044a711d3fd02c6c97ef493de9546184fc354ca6b4203d3c3d28671b70926" }, "downloads": -1, "filename": "discognition-0.1.3.tar.gz", "has_sig": false, "md5_digest": "1b00004d305b6648b2fb3552bc7d93c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11751, "upload_time": "2019-05-10T01:59:20", "url": "https://files.pythonhosted.org/packages/41/d3/015fe1602cfc29ae7848272bf6e6e7fe09e1eaba10055cba43c7b8685278/discognition-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "9cc82c8cc7286e39bd95aba2bb7630ee", "sha256": "96e77a729fa8f816e86bf08e29a8621ebfa0266348156f23059233b381d42839" }, "downloads": -1, "filename": "discognition-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "9cc82c8cc7286e39bd95aba2bb7630ee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10950, "upload_time": "2019-05-10T02:00:59", "url": "https://files.pythonhosted.org/packages/ce/70/3fb2b0511e63b1bc13fd306d273639ccd42d5873b727cac6df6d5c784a31/discognition-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a86f9191b3488f87eb1cabe734afed58", "sha256": "9cfec18d9ed48eaada7d0001eb45f4cb5a7fbc39030587a65746cead1f722af1" }, "downloads": -1, "filename": "discognition-0.1.4.tar.gz", "has_sig": false, "md5_digest": "a86f9191b3488f87eb1cabe734afed58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11739, "upload_time": "2019-05-10T02:01:01", "url": "https://files.pythonhosted.org/packages/d1/dc/d8ec0a6704d5057117f769076ed218432d03095ac7718783628625beb973/discognition-0.1.4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "e476924de990a2de778ea2d8c06f30df", "sha256": "b8f2e6109c4e56e309fb7ec5d4efac91302921ba43bcee061477d01c298cf741" }, "downloads": -1, "filename": "discognition-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e476924de990a2de778ea2d8c06f30df", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11196, "upload_time": "2019-07-15T22:28:12", "url": "https://files.pythonhosted.org/packages/29/c0/815ee87922447880bb53fa0bfbdbf27922afd24d71edf12a9d151f1f2781/discognition-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9759510642c316865acc2f0f4e718d50", "sha256": "0b3227fcb55a000c160fc854d1027f6b3f74b3b5e1e33f7354b70d6764f6fcbd" }, "downloads": -1, "filename": "discognition-0.2.0.tar.gz", "has_sig": false, "md5_digest": "9759510642c316865acc2f0f4e718d50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11997, "upload_time": "2019-07-15T22:28:14", "url": "https://files.pythonhosted.org/packages/be/b0/9d8b0018d93c38361c2cc2d805c4192e26903a9e073551c392526f168f5a/discognition-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "c661f5620af09169b6be6fa206f4f191", "sha256": "42adacba266762cad774b17521aebba26f70e4aa572000d7c54cc4b3d472b7df" }, "downloads": -1, "filename": "discognition-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c661f5620af09169b6be6fa206f4f191", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11235, "upload_time": "2019-07-15T22:33:55", "url": "https://files.pythonhosted.org/packages/45/d8/87970def21fef264af0a8f75041b6c13e7e5847f6d7fa27ac5b9467c9591/discognition-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7261e9184b31409a6b70ddd911248b09", "sha256": "c1509c21597650f736c262a9acbe65045464a42ddb4e58bcb94c6a0a4487945f" }, "downloads": -1, "filename": "discognition-0.2.1.tar.gz", "has_sig": false, "md5_digest": "7261e9184b31409a6b70ddd911248b09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12039, "upload_time": "2019-07-15T22:33:56", "url": "https://files.pythonhosted.org/packages/d9/bb/bb33f1b4ac1831a4196cfd81459e9e3800ccb29c3ef013ce3794803e1d68/discognition-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c661f5620af09169b6be6fa206f4f191", "sha256": "42adacba266762cad774b17521aebba26f70e4aa572000d7c54cc4b3d472b7df" }, "downloads": -1, "filename": "discognition-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c661f5620af09169b6be6fa206f4f191", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11235, "upload_time": "2019-07-15T22:33:55", "url": "https://files.pythonhosted.org/packages/45/d8/87970def21fef264af0a8f75041b6c13e7e5847f6d7fa27ac5b9467c9591/discognition-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7261e9184b31409a6b70ddd911248b09", "sha256": "c1509c21597650f736c262a9acbe65045464a42ddb4e58bcb94c6a0a4487945f" }, "downloads": -1, "filename": "discognition-0.2.1.tar.gz", "has_sig": false, "md5_digest": "7261e9184b31409a6b70ddd911248b09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12039, "upload_time": "2019-07-15T22:33:56", "url": "https://files.pythonhosted.org/packages/d9/bb/bb33f1b4ac1831a4196cfd81459e9e3800ccb29c3ef013ce3794803e1d68/discognition-0.2.1.tar.gz" } ] }