{ "info": { "author": "Maksim Terpilowski", "author_email": "maximtrp@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: End Users/Desktop", "Intended Audience :: Information Technology", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Home Automation", "Topic :: Internet", "Topic :: Text Processing :: General" ], "description": "# Mufi \ud83d\udc1c\n\n**Mufi** is a command-line **mu**sic **fi**nder written in Python with a bit of Javascript. It is capable of finding albums of various styles, genres, moods (even random, using command-line args). Basically, it uses Allmusic and Last.fm to get brief music information.\n\n**Mufi** comes with two command-line tools:\n\n1. `mufi`: finding albums by style, genre, date, mood.\n2. `mufi-recs`: getting personal recommendations from Last.fm.\n\n## Dependencies\n\nMufi depends heavily on [Selenium](https://pypi.org/project/selenium/) and Chrome WebDriver. I will add support for Firefox WebDriver soon.\n\n## Installation\n\n```bash\n$ pip install mufi\n```\n\nOr you can install from this git repo:\n\n```bash\n$ pip install git+https://github.com/maximtrp/mufi\n```\n\nTo use `mufi-recs` command, you need to provide your Last.fm login data. Mufi reads it from `~/.lastfm` and `~/.config/mufi/.lastfm` files. Just say:\n\n```bash\n$ echo login password > ~/.lastfm\n```\n\n## Usage\n\n### mufi\n\n```bash\n$ mufi -h\nusage: mufi [-h] [-d DATE] [-g GENRE] [-m MOODS] [-n ALBUMS_NUM] [-r RATING]\n [-s STYLE] [-v] [-o {album,year,rating}] [-x] [--and] [--asc]\n [-k SAMPLE_NUM] [--random-album] [--random-style] [--random-genre]\n\nMufi finds albums by style, genre, date, or mood \ud83d\udc1c\n\noptional arguments:\n -h, --help show this help message and exit\n -d DATE date interval, e.g. 2010-2019\n -g GENRE genres, e.g. rock electronic\n -m MOODS moods, e.g. sad\n -n ALBUMS_NUM number of albums to get (default: 1)\n -r RATING rating interval (1-5), e.g. \"3.5 5\"\n -s STYLE styles, e.g. \"blues rock,indie\"\n -v verbose\n\nsorting/matching arguments:\n -o {album,year,rating}\n sorting criteria\n -x strict style/genre matching\n --and AND logic (default is OR logic)\n --asc ascending sort\n\nrandomizer arguments:\n -k SAMPLE_NUM number of random styles/genres to get (default: 1)\n --random-album get random album\n --random-style get random style\n --random-genre get random genre\n```\n\n### mufi-recs\n\n```bash\n$ mufi-recs -h\nusage: mufi-recs [-h] [-a] [-l] [-n NUMBER] [-o ORDERBY] [-s] [-v]\n\nMufi fetches your recommendations from last.fm \ud83d\udc1c\n\noptional arguments:\n -h, --help show this help message and exit\n -a recommended artists (default)\n -l recommended albums\n -n NUMBER results number\n -o ORDERBY sort by: none, random (default), name, listeners\n -s show similar/context\n -v verbose\n```\n\n## Examples\n\n### Defaults\n\nIf executed without arguments, *mufi* selects a random style and fetches just one album from Allmusic.\n\n```bash\n$ mufi\nDierks Bentley - Up on the Ridge (2010) \u22c6\u22c6\u22c6\u22c6\n```\n\n### Selecting 3 random styles and 5 random albums\n\n```bash\n$ mufi --random-style -k 3 -n 5\nBruce Springsteen - Nebraska (1982) \u22c6\u22c6\u22c6\u22c6\u22c6\nBilly Bragg - Life's a Riot with Spy vs Spy (1983) \u22c6\u22c6\u22c6\u22c6\nBruce Springsteen - The Ghost of Tom Joad (1995) \u22c6\u22c6\u22c6\nLucinda Williams - Lucinda Williams (1988) \u22c6\u22c6\u22c6\u22c6\nThe Avett Brothers - Magpie and the Dandelion (2013) \u22c6\u22c6\u22c6\n```\n\nIt will not output the names of styles that were selected randomly. To get all this info, you need to use `-vv` flag. See below.\n\n### Verbosity\n\nYou can tell mufi to be verbose (albums list will become numbered, and artist names will be in bold style):\n\n```bash\n$ mufi -v\n[1] Kenny Neal - Hooked On Your Love (2010) \u22c6\u22c6\u22c6\n```\n\nOr even more verbose (mufi will tell you what it is doing):\n\n```bash\n$ mufi -vv\nSelected styles: Indie Rock\n\n[1] The Smashing Pumpkins - Mellon Collie and the Infinite Sadness (1995) \u22c6\u22c6\u22c6\u22c6\n```\n\n### Getting random albums of certain styles\n\n```bash\n$ mufi -s \"blues rock\" -n 5 -vv\nSelected styles: Blues-Rock\n\n[1] The Jimi Hendrix Experience / Jimi Hendrix - Are You Experienced? (1967) \u22c6\u22c6\u22c6\u22c6\u22c6\n[2] The Jimi Hendrix Experience / Jimi Hendrix - Electric Ladyland (1968) \u22c6\u22c6\u22c6\u22c6\u22c6\n[3] The Jimi Hendrix Experience / Jimi Hendrix - Axis: Bold as Love (1967) \u22c6\u22c6\u22c6\u22c6\u22c6\n[4] Jimi Hendrix / The Jimi Hendrix Experience - Smash Hits (1969) \u22c6\u22c6\u22c6\u22c6\n[5] Jimi Hendrix - First Rays of the New Rising Sun (1997) \u22c6\u22c6\u22c6\u22c6\n```\n\nThere is a difference between using a space and a comma in a style/genre query string. First, the string is split by non-word and non-whitespace symbols (such as punctuation symbols), and then each of substrings is split by non-word symbols. `Blues rock` will match only blues-rock style, but not all styles containing \"rock\" and \"blues\" words. If you want to match all styles with a word \"rock\", use a comma to separate it from another word: `blues,rock`.\n\nSee the following examples. Selecting all styles that contain `afro` substring:\n\n```bash\n$ mufi -s \"afro\" -vv\nSelected styles: Afro-Brazilian OR Afro-Peruvian OR Afro-Pop OR Afro-beat OR Afro-Cuban Jazz OR Afro-Colombian OR Afro-Cuban\n\n[1] Vinicius Cantu\u00e1ria / Bill Frisell - L\u00e1grimas Mexicanas (2011) \u22c6\u22c6\u22c6\u22c6\n```\n\nSelecting just Afro-pop:\n\n```bash\n$ mufi -s \"afro pop\" -vv\nSelected styles: Afro-Pop\n\n[1] Fela Kuti - Koola Lobitos/The '69 Los Angeles Sessions (2001) \u22c6\u22c6\u22c6\u22c6\n```\n\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": "http://github.com/maximtrp/mufi", "keywords": "python music cli", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "mufi", "package_url": "https://pypi.org/project/mufi/", "platform": "", "project_url": "https://pypi.org/project/mufi/", "project_urls": { "Homepage": "http://github.com/maximtrp/mufi" }, "release_url": "https://pypi.org/project/mufi/0.2.0/", "requires_dist": [ "selenium" ], "requires_python": "", "summary": "Mufi: simple music finder for command-line", "version": "0.2.0" }, "last_serial": 5718790, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "cdc5d882f0fa00e359a5ee4a4aab445c", "sha256": "9c567542f410b8336b17a8ba1f3dec525a1d00a389d4d7ef20ab50c86882ae99" }, "downloads": -1, "filename": "mufi-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cdc5d882f0fa00e359a5ee4a4aab445c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21764, "upload_time": "2019-07-14T10:53:01", "url": "https://files.pythonhosted.org/packages/70/2c/cd5e5523857d5a32e5eda0021ce92d227c5caca1b6b026e475197d90ecd3/mufi-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "efe4f6401ab042c493b9be53335716fe", "sha256": "d9d092424bbc750cf64c33279f076de35832a8fb8f5cc9fb013dcefe0a441730" }, "downloads": -1, "filename": "mufi-0.1.0.tar.gz", "has_sig": false, "md5_digest": "efe4f6401ab042c493b9be53335716fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9428, "upload_time": "2019-07-14T10:53:04", "url": "https://files.pythonhosted.org/packages/73/bd/83b8b28fb5a322cb9ff5331bb9bdef8ff779a5869ca0ade3db7ebd090f7e/mufi-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "bd447d069e4129f44b86954859eeec6d", "sha256": "097a325dd05dcc2f1ce23b7e5d8edf0b97f3337693a41d71ebde2b98c23b650f" }, "downloads": -1, "filename": "mufi-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bd447d069e4129f44b86954859eeec6d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21970, "upload_time": "2019-08-23T04:42:16", "url": "https://files.pythonhosted.org/packages/79/e6/f12b0c6b936ba45562f81c11f910a7db4939a221597df1c753eac1ca1c7b/mufi-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d239f1ddff2ef14fd71fe85fbade2b18", "sha256": "a4a019f930c426d9e3575ebe4f81872fb6aa399d4cdf03c2d42460ca8e1fcc83" }, "downloads": -1, "filename": "mufi-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d239f1ddff2ef14fd71fe85fbade2b18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9644, "upload_time": "2019-08-23T04:42:18", "url": "https://files.pythonhosted.org/packages/14/28/2d6a50bf2f4e15e232d8d90ac011e1bf64ce3039f1a2ee0698f556a3258a/mufi-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bd447d069e4129f44b86954859eeec6d", "sha256": "097a325dd05dcc2f1ce23b7e5d8edf0b97f3337693a41d71ebde2b98c23b650f" }, "downloads": -1, "filename": "mufi-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bd447d069e4129f44b86954859eeec6d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21970, "upload_time": "2019-08-23T04:42:16", "url": "https://files.pythonhosted.org/packages/79/e6/f12b0c6b936ba45562f81c11f910a7db4939a221597df1c753eac1ca1c7b/mufi-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d239f1ddff2ef14fd71fe85fbade2b18", "sha256": "a4a019f930c426d9e3575ebe4f81872fb6aa399d4cdf03c2d42460ca8e1fcc83" }, "downloads": -1, "filename": "mufi-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d239f1ddff2ef14fd71fe85fbade2b18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9644, "upload_time": "2019-08-23T04:42:18", "url": "https://files.pythonhosted.org/packages/14/28/2d6a50bf2f4e15e232d8d90ac011e1bf64ce3039f1a2ee0698f556a3258a/mufi-0.2.0.tar.gz" } ] }