{ "info": { "author": "Andy Chase", "author_email": "andychase@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Multimedia :: Sound/Audio", "Topic :: Software Development :: Libraries" ], "description": "# PyRealPro\n\nThe pyrealpro module provides classes that can be used to build a representation of a song, and render it in the import\nURL format used by the iRealPro app. It assumes that you have a passing familiarity with the \n[iRealPro import format](https://irealpro.com/ireal-pro-file-format/), but hopefully makes it easier to programmatically \nconstruct an iRealPro song than resorting to brute-force string concatenation.\n\n## Concepts\n\nThe `Song` class is used to define a song that you wish to import into iRealPro. In addition to basic information like\ntitle, composer, key, and style, a song's `measures` property may contain a list of `Measure` objects.\n\nA `Measure` object's `chords` property will have one or more chord names, as well as additional properties that describe\ntime signature (as a `TimeSignature` object), barlines, endings, rehearsal marks, and text to be displayed underneath.\n\nThe `TimeSignature` class provides simple objects used by the `Measure` class to properly format the output ultimately\nused by the `Song` class to generate an iRealPro URL.\n\n## Example\n\n```\nfrom pyrealpro import Song, Measure, TimeSignature\n\ns = Song(title=\"Automation Blues\", composer=\"pyrealpro\", key='G', style='New Orleans Swing',\n composer_name_first=\"Otto\",\n composer_name_last=\"Matonne\")\n\ns.measures.append(Measure(chords='G7', barline_open='{', staff_text='Generated by pyrealpro'))\ns.measures.append(Measure(chords='G7'))\ns.measures.append(Measure(chords='G7'))\ns.measures.append(Measure(chords='G7', barline_close=']'))\n\ns.measures.append(Measure(chords='C7', barline_open='['))\ns.measures.append(Measure(chords='C7'))\ns.measures.append(Measure(chords='G7'))\ns.measures.append(Measure(chords='G7', barline_close=']'))\n\ns.measures.append(Measure(chords='D7', barline_open='['))\ns.measures.append(Measure(chords='C7'))\n\ns.measures.append(Measure(chords='G7', ending='N1'))\ns.measures.append(Measure(chords='D7', barline_close='}'))\n\ns.measures.append(Measure(chords='G7', ending='N2'))\ns.measures.append(Measure(chords='G7', barline_close='Z'))\n\nprint(s.url())\n\n```\n\nThe above program will output the following URL, which can be imported into iRealPro:\n\n[irealbook://Automation%20Blues=Matonne%20Otto=New%20Orleans%20Swing=G=n=%7BT44%3CGenerated%20by%20pyrealpro%3EG7%20%20%20%7CG7%20%20%20%7CG7%20%20%20%7CG7%20%20%20%5D%5BC7%20%20%20%7CC7%20%20%20%7CG7%20%20%20%7CG7%20%20%20%5D%5BD7%20%20%20%7CC7%20%20%20%7CN1G7%20%20%20%7CD7%20%20%20%7DN2G7%20%20%20%7CG7%20%20%20Z](irealbook://Automation%20Blues=Matonne%20Otto=New%20Orleans%20Swing=G=n=%7BT44%3CGenerated%20by%20pyrealpro%3EG7%20%20%20%7CG7%20%20%20%7CG7%20%20%20%7CG7%20%20%20%5D%5BC7%20%20%20%7CC7%20%20%20%7CG7%20%20%20%7CG7%20%20%20%5D%5BD7%20%20%20%7CC7%20%20%20%7CN1G7%20%20%20%7CD7%20%20%20%7DN2G7%20%20%20%7CG7%20%20%20Z)\n\n## iReal Pro File Format Reference\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": "https://github.com/splendidtoad/pyrealpro", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pyrealpro", "package_url": "https://pypi.org/project/pyrealpro/", "platform": "", "project_url": "https://pypi.org/project/pyrealpro/", "project_urls": { "Homepage": "https://github.com/splendidtoad/pyrealpro" }, "release_url": "https://pypi.org/project/pyrealpro/0.2.0/", "requires_dist": null, "requires_python": ">=3.6", "summary": "Tools for building iRealPro songs.", "version": "0.2.0", "yanked": false, "yanked_reason": null }, "last_serial": 11273173, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "cf4e501daff824781925eda99a3b7bb3", "sha256": "213e39956c727c84779e33d10074a6904899636babc2c821b56d6aefacfb1aa1" }, "downloads": -1, "filename": "pyrealpro-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "cf4e501daff824781925eda99a3b7bb3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9680, "upload_time": "2019-10-26T23:29:45", "upload_time_iso_8601": "2019-10-26T23:29:45.460537Z", "url": "https://files.pythonhosted.org/packages/b1/08/d5360340c0933bfb05c9aa17e30d3c1a4aecde95a940b43873d2cce831bd/pyrealpro-0.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "466bfcf956ab813c72ae1c481b5790e0", "sha256": "85743211ee5607685b3ab5590119333604c9fb0a349b476ebe28156a2fd50efb" }, "downloads": -1, "filename": "pyrealpro-0.1.0.tar.gz", "has_sig": false, "md5_digest": "466bfcf956ab813c72ae1c481b5790e0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 24120, "upload_time": "2019-10-26T23:29:48", "upload_time_iso_8601": "2019-10-26T23:29:48.999221Z", "url": "https://files.pythonhosted.org/packages/eb/6d/ee2abd9a4312f9db8b7ce2406bbc2bdc7bef391b8f2fa842eb088a5c4c97/pyrealpro-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "3a211ccfa657333c098b019bfd1278b7", "sha256": "bb356e09413a02fbc51c68406b3d01a077a08c60704c8b2c79665fad2c87b88f" }, "downloads": -1, "filename": "pyrealpro-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3a211ccfa657333c098b019bfd1278b7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9677, "upload_time": "2019-10-26T23:29:47", "upload_time_iso_8601": "2019-10-26T23:29:47.642032Z", "url": "https://files.pythonhosted.org/packages/2d/75/1a924428370e538a535663d361640808ef67e0bc31c04448fc5596b37f85/pyrealpro-0.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "60d6cdc480b7a52242492b38aa483de5", "sha256": "12caee50819daade7e61ad6820e5be9a5625ef24594483e10c24458d2e9884ad" }, "downloads": -1, "filename": "pyrealpro-0.1.1.tar.gz", "has_sig": false, "md5_digest": "60d6cdc480b7a52242492b38aa483de5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 24134, "upload_time": "2019-10-26T23:29:50", "upload_time_iso_8601": "2019-10-26T23:29:50.440820Z", "url": "https://files.pythonhosted.org/packages/a6/29/a7299d6d0c95f32884862075fe6c841a69309609ade561c6ce5f7e4c3ce4/pyrealpro-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "c89e75d215f302c92fd418e7313cd14d", "sha256": "a1e68ed1a02c28dd144b80f96d81d7af01f4af446ef128b87d0a021edad468c4" }, "downloads": -1, "filename": "pyrealpro-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c89e75d215f302c92fd418e7313cd14d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 12281, "upload_time": "2019-10-30T01:15:51", "upload_time_iso_8601": "2019-10-30T01:15:51.178470Z", "url": "https://files.pythonhosted.org/packages/0f/0d/7e0235a3d580bbd3d96f6e444e6183d4c3a3db0250e7620e78a722833519/pyrealpro-0.1.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "deb0be0193a9b7190521a917b02e4a51", "sha256": "8415c05956445f05914bfb15963a0c383d64a24918a38d958c5a3ebccfd96a99" }, "downloads": -1, "filename": "pyrealpro-0.1.2.tar.gz", "has_sig": false, "md5_digest": "deb0be0193a9b7190521a917b02e4a51", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 9303, "upload_time": "2019-10-30T01:15:52", "upload_time_iso_8601": "2019-10-30T01:15:52.634120Z", "url": "https://files.pythonhosted.org/packages/22/bc/d0af252d47c16cc614824b2ae8690175d945a2a06bee50b62fda94dbcb15/pyrealpro-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "7d2a0a1a869742a5036f5100d736c1ee", "sha256": "58aea7c020d26a64ebb3a353d3b2a7c604c5d7687cf617b7026b1d00197c88a7" }, "downloads": -1, "filename": "pyrealpro-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "7d2a0a1a869742a5036f5100d736c1ee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 12352, "upload_time": "2019-10-31T12:54:36", "upload_time_iso_8601": "2019-10-31T12:54:36.602742Z", "url": "https://files.pythonhosted.org/packages/77/f5/2049e132bf1370fe93c6942bbf43b0a0fdd0c32492330dbd4ae11e45b20a/pyrealpro-0.1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "536507396380c2f0a924b735318f6323", "sha256": "e7cafad3890e5198515583b5e324c4711b0f5d23476bf19914fa62c44c1ecb6c" }, "downloads": -1, "filename": "pyrealpro-0.1.3.tar.gz", "has_sig": false, "md5_digest": "536507396380c2f0a924b735318f6323", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 9419, "upload_time": "2019-10-31T12:54:38", "upload_time_iso_8601": "2019-10-31T12:54:38.022121Z", "url": "https://files.pythonhosted.org/packages/c2/e3/e731a3564046bfa6d8de4c6e0cb65b1bbdc3afcbf64ebefa1d43083715db/pyrealpro-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "a9c7ac4c1d0d9f4291c00b9380303767", "sha256": "6a1847e954c205567990e9258b106c69353e07831f8948a74073c49c3a54f04e" }, "downloads": -1, "filename": "pyrealpro-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a9c7ac4c1d0d9f4291c00b9380303767", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 5794, "upload_time": "2021-08-25T13:25:48", "upload_time_iso_8601": "2021-08-25T13:25:48.310855Z", "url": "https://files.pythonhosted.org/packages/e0/4e/51e6eebc02e1a3e442ae19df25ba32c363ef8dbbce01d3a63f285427cedc/pyrealpro-0.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3a3b1075964ac4a88293e5d2b0a9d4eb", "sha256": "8cd8be2a5c78fa77062472db3c3fa80ae196c0abcc01772ee217920a3f10939e" }, "downloads": -1, "filename": "pyrealpro-0.2.0.tar.gz", "has_sig": false, "md5_digest": "3a3b1075964ac4a88293e5d2b0a9d4eb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 9980, "upload_time": "2021-08-25T13:25:50", "upload_time_iso_8601": "2021-08-25T13:25:50.330788Z", "url": "https://files.pythonhosted.org/packages/31/07/596f65d26c890ff2bef1233940c209b736590ee7f1d177f7a86e1fb14372/pyrealpro-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a9c7ac4c1d0d9f4291c00b9380303767", "sha256": "6a1847e954c205567990e9258b106c69353e07831f8948a74073c49c3a54f04e" }, "downloads": -1, "filename": "pyrealpro-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a9c7ac4c1d0d9f4291c00b9380303767", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 5794, "upload_time": "2021-08-25T13:25:48", "upload_time_iso_8601": "2021-08-25T13:25:48.310855Z", "url": "https://files.pythonhosted.org/packages/e0/4e/51e6eebc02e1a3e442ae19df25ba32c363ef8dbbce01d3a63f285427cedc/pyrealpro-0.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3a3b1075964ac4a88293e5d2b0a9d4eb", "sha256": "8cd8be2a5c78fa77062472db3c3fa80ae196c0abcc01772ee217920a3f10939e" }, "downloads": -1, "filename": "pyrealpro-0.2.0.tar.gz", "has_sig": false, "md5_digest": "3a3b1075964ac4a88293e5d2b0a9d4eb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 9980, "upload_time": "2021-08-25T13:25:50", "upload_time_iso_8601": "2021-08-25T13:25:50.330788Z", "url": "https://files.pythonhosted.org/packages/31/07/596f65d26c890ff2bef1233940c209b736590ee7f1d177f7a86e1fb14372/pyrealpro-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }