{ "info": { "author": "S\u00e9bastien MB", "author_email": "seb@essembeh.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Utilities" ], "description": "[![Build Status](https://travis-ci.org/essembeh/RegexTagForMusic.svg?branch=master)](https://travis-ci.org/essembeh/RegexTagForMusic)\n![Github](https://img.shields.io/github/tag/essembeh/RegexTagForMusic.svg)\n![PyPi](https://img.shields.io/pypi/v/RegexTagForMusic.svg)\n![Python](https://img.shields.io/pypi/pyversions/RegexTagForMusic.svg)\n\n\n\n# RegexTagForMusic\n\nRegexTagForMusic is a tool to tag *mp3* files using *regular expressions* to extract *ID3 tags* the the file path. In other words, if the path matches a regex, you can use any matching group as *ID3 tag*.\n\n\nI originally developed *RegexTagForMusic* to automatize tagging my music using [eyeD3](http://eyed3.nicfit.net/). ID3 tags are some metadata just like the way you store your files on your filesystem so I wanted a way to synchronize tags *from* the filesystem:\n- the *album field* is the parent folder of the file\n- the *artist field* is the parent folder of the *album* folder\n- the *tracknumber field* is the first digit of the filename\n- the *title field* is the rest of the filename\n\n\n# Install\n\nYou can install *RegexTagForMusic* directly from [PyPI](https://pypi.org/project/RegexTagForMusic/) using pip:\n\n```sh\n# Ensure pip is installed on the system\n$ sudo apt install python3-pip\n# You can install just for the current user\n$ pip install --user RegexTagForMusic\n# Or install it for all users\n$ sudo pip install RegexTagForMusic\n```\n\nYou can also build *RegexTagForMusic* from the sources:\n```sh\n$ git clone https://github.com/essembeh/RegexTagForMusic\n$ cd RegexTagForMusic\n$ make\n$ pip install --user dist/RegexTagForMusic-*.whl\n```\n\n# Try it\n\nSee [the default configuration file](samples/config/default.json) and [samples documentation](SAMPLES.md).\n```sh\n$ cd samples/config/default\n$ tree\n```\n![tree](images/tree.png)\n\n\nNow verify that all the files are recognized using the filters from the configuration file:\n```sh\n$ rtfm --config ../default.json\n```\n![list](images/list.png)\n\n\nAlso check all the properties declared in the filters:\n```sh\n$ rtfm --config ../default.json --verbose\n```\n![list-verbose](images/list-verbose.png)\n\n\nThe command `check` verifies that the existing tags in the mp3 files are matching the properties extracted from the file path:\n```sh\n$ rtfm --config ../default.json -x check\n```\n![check](images/check.png)\n\n\nIn our example, the files are not tagged yet, so le's tag them:\n```sh\n$ rtfm --config ../default.json -x tag\n```\n![tag](images/tag.png)\n\n\nThe `clean` action removes all the tags present in the files:\n```sh\n$ rtfm --config ../default.json -x clean\n```\n![clean](images/clean.png)\n\n\n\n\n# Command line options and arguments\n\n```\n$ rtfm --help\nusage: rtfm [-h] [-v] [-c CONFIG] [-l LIBRARY] [-r ROOT] [--folders]\n [-x ACTION] [-n] [--continue]\n [FILE [FILE ...]]\n\nSimple hello world python sample\n\npositional arguments:\n FILE files to process\n\noptional arguments:\n -h, --help show this help message and exit\n -v, --verbose be more verbose\n -c CONFIG, --config CONFIG\n configuration file (default:\n ~/.config/rtfm.json\n -l LIBRARY, --library LIBRARY\n library file\n -r ROOT, --root ROOT make all paths relative to given folder (default is\n current folder, $PWD)\n --folders also process folders\n -x ACTION, --execute ACTION\n action to perform\n -n, --dryrun dryrun mode, do not modify files\n --continue continue in case of error\n```\n\n# Configuration file\n\nSee [sample configuration files](samples/config/) and [samples documentation](SAMPLES.md)\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/essembeh/RegexTagForMusic", "keywords": "", "license": "GNU General Public License v3 (GPLv3)", "maintainer": "", "maintainer_email": "", "name": "RegexTagForMusic", "package_url": "https://pypi.org/project/RegexTagForMusic/", "platform": "", "project_url": "https://pypi.org/project/RegexTagForMusic/", "project_urls": { "Bug Reports": "https://github.com/essembeh/RegexTagForMusic/issues", "Homepage": "https://github.com/essembeh/RegexTagForMusic", "Source": "https://github.com/essembeh/RegexTagForMusic" }, "release_url": "https://pypi.org/project/RegexTagForMusic/5.0.1/", "requires_dist": [ "pytput", "eyed3" ], "requires_python": "", "summary": "Simple python3 hello world", "version": "5.0.1" }, "last_serial": 5656950, "releases": { "5.0.1": [ { "comment_text": "", "digests": { "md5": "0d710049a1bbf2c278b6bb4c824812e8", "sha256": "f90beea07e51e584139d66e9a7a5360bd0a6ae953e7f6f21b649beae7694ff26" }, "downloads": -1, "filename": "RegexTagForMusic-5.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0d710049a1bbf2c278b6bb4c824812e8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19930, "upload_time": "2019-08-09T17:35:38", "url": "https://files.pythonhosted.org/packages/c5/b8/ae5860927223eb51af2e55ca71a87924004cb25a239896dbeca4e1a21edd/RegexTagForMusic-5.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3da6abcdf6496ec9c36caad0b62fc608", "sha256": "35698a06875e5f510f1b8bbf090627337561fd968ebdc94cb7f80ef62fed62b0" }, "downloads": -1, "filename": "RegexTagForMusic-5.0.1.tar.gz", "has_sig": false, "md5_digest": "3da6abcdf6496ec9c36caad0b62fc608", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 548131, "upload_time": "2019-08-09T17:35:41", "url": "https://files.pythonhosted.org/packages/1b/36/381dc2eafb51911eec501b5c935263463c4d64b64dbc1b66a5a1c8958861/RegexTagForMusic-5.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0d710049a1bbf2c278b6bb4c824812e8", "sha256": "f90beea07e51e584139d66e9a7a5360bd0a6ae953e7f6f21b649beae7694ff26" }, "downloads": -1, "filename": "RegexTagForMusic-5.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0d710049a1bbf2c278b6bb4c824812e8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19930, "upload_time": "2019-08-09T17:35:38", "url": "https://files.pythonhosted.org/packages/c5/b8/ae5860927223eb51af2e55ca71a87924004cb25a239896dbeca4e1a21edd/RegexTagForMusic-5.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3da6abcdf6496ec9c36caad0b62fc608", "sha256": "35698a06875e5f510f1b8bbf090627337561fd968ebdc94cb7f80ef62fed62b0" }, "downloads": -1, "filename": "RegexTagForMusic-5.0.1.tar.gz", "has_sig": false, "md5_digest": "3da6abcdf6496ec9c36caad0b62fc608", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 548131, "upload_time": "2019-08-09T17:35:41", "url": "https://files.pythonhosted.org/packages/1b/36/381dc2eafb51911eec501b5c935263463c4d64b64dbc1b66a5a1c8958861/RegexTagForMusic-5.0.1.tar.gz" } ] }