tagrenamer


Nametagrenamer JSON
Version 0.0.3 PyPI version JSON
download
home_pagehttps://github.com/nielsvm/tagrenamer
SummaryMass music collection renamer.
upload_time2024-03-29 10:36:58
maintainerNone
docs_urlNone
authorNiels van Mourik
requires_python>=3.6
licenseGNU General Public License v3
keywords tagrenamer
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ==========
tagrenamer
==========

.. image:: https://img.shields.io/github/languages/top/nielsvm/tagrenamer.svg
        :target: https://github.com/nielsvm/tagrenamer

.. image:: https://img.shields.io/github/license/nielsvm/tagrenamer.svg
        :target: https://raw.githubusercontent.com/nielsvm/tagrenamer/master/LICENSE

.. image:: https://img.shields.io/pypi/v/tagrenamer.svg
        :target: https://pypi.python.org/pypi/tagrenamer

.. image:: https://img.shields.io/readthedocs/tagrenamer.svg
        :target: https://tagrenamer.readthedocs.io/

*Mass music collection renamer.*

**Tagrenamer completely cleans up your music folder for you, all you need**
**to do is to make sure all music files have the right tags.**

Imagine this is inside your music folder:

.. code-block:: console

   Music/
   ├── MUTTER (2001) - Adios.mp3
   ├── MUTTER (2001) - Feuer Frei.mp3
   ├── MUTTER (2001) - Ich Will.mp3
   ├── MUTTER (2001) - Links 2 3 4.mp3
   ├── MUTTER (2001) - Mein Herz Brennt.mp3
   ├── MUTTER (2001) - Mutter.mp3
   ├── MUTTER (2001) - Nebel.mp3
   ├── MUTTER (2001) - Rein Raus.mp3
   ├── MUTTER (2001) - Sonne.mp3
   ├── MUTTER (2001) - Spieluhr.mp3
   └── MUTTER (2001) - Zwitter.mp3

What a mess, let's clean it up:

.. code-block:: console

   $ tagrenamer --format '{artist}/{album}/{artist}-{title}.{ext}' Music/
    - Tagrenamer version 0.0.3.
    - Leftovers directory '__LEFTOVERS/' created.
    - Stage directory '__STAGE/' created.
    - Traverse the collection and extract music tags.
    - Validating tag input and sanitizing variables.
    - Moving non music files to '__LEFTOVERS/'.
    - Moving music to new tree in stage directory '__STAGE/'.
    - Remove empty directories (except stage/leftover directories).
    - Move everything from stage into the final location.
    - Deleting the temporary stage directory '__STAGE/'.
    - Deleting the empty leftovers directory '__LEFTOVERS/'.
    - DONE! Processed 11 files.

.. code-block:: console

   Music/
   └── rammstein
       └── mutter
           ├── rammstein-adios.mp3
           ├── rammstein-feuer frei.mp3
           ├── rammstein-ich will.mp3
           ├── rammstein-links 2 3 4.mp3
           ├── rammstein-mein herz brennt.mp3
           ├── rammstein-mutter.mp3
           ├── rammstein-nebel.mp3
           ├── rammstein-rein raus.mp3
           ├── rammstein-sonne.mp3
           ├── rammstein-spieluhr.mp3
           └── rammstein-zwitter.mp3

Features
--------

#. **Python**

   Pure Python command-line application that is cross-platform and strives to
   meet all modern quality criteria such as PEP8-compliance and test coverage.
#. **Formats**

   Supports ``.mp3``, ``.ogg`` and ``.flac`` files and more are easy to add.

#. **Only deals with music**

   Files that are not music, are moved into a folder named ``__LEFTOVERS/``
   which contains the original structure they were originally in. Letting you
   decide what to do with them.

#. **Fail-safe**

   Tagrenamer leverages an internal staging process in which it detects failures
   before it touched a single file. The paranoid can combine ``--dry-run`` and
   ``-vvvv`` to see what is going on under the hood or even run with ``--shell``
   to generate Shell commands for you to inspect without renaming anything.

#. **Scalability**

   Renames a few music albums as well as a 2Tb music collection.

Installation
------------

Install Tagrenamer directly from `PyPI`_ using ``pip``:

.. code-block:: console

   $ pip3 install tagrenamer

.. _PyPI: https://pypi.org/project/tagrenamer/



=========
Changelog
=========

Unreleased
----------

0.0.3 (2024-03-29)
------------------

* Updated dependencies.
* Added tagrenamer.toml to move away  from setup.py.
* Replaced setup.py-based instructions.
* Updated development installation instructions to suggest pipx.

0.0.2 (2021-11-26)
------------------

* Development procedures refined and release tested.
* Integrated readthedocs: https://tagrenamer.readthedocs.io/
* Updated changelog to reflect 0.0.1 release.


0.0.1 (2021-11-26)
------------------

* Ported the code from 2013 to Python 3.
* Reorganized the project to become a first-class Python package.
* Updated majority of PEP8 violations but not all.
* Added documentation.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/nielsvm/tagrenamer",
    "name": "tagrenamer",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": "tagrenamer",
    "author": "Niels van Mourik",
    "author_email": "niels@nielsvm.org",
    "download_url": "https://files.pythonhosted.org/packages/f4/48/03199f00aa7bb13b45967a31093a05b72a171b8bd04e479b6e54cb05ebcf/tagrenamer-0.0.3.tar.gz",
    "platform": null,
    "description": "==========\ntagrenamer\n==========\n\n.. image:: https://img.shields.io/github/languages/top/nielsvm/tagrenamer.svg\n        :target: https://github.com/nielsvm/tagrenamer\n\n.. image:: https://img.shields.io/github/license/nielsvm/tagrenamer.svg\n        :target: https://raw.githubusercontent.com/nielsvm/tagrenamer/master/LICENSE\n\n.. image:: https://img.shields.io/pypi/v/tagrenamer.svg\n        :target: https://pypi.python.org/pypi/tagrenamer\n\n.. image:: https://img.shields.io/readthedocs/tagrenamer.svg\n        :target: https://tagrenamer.readthedocs.io/\n\n*Mass music collection renamer.*\n\n**Tagrenamer completely cleans up your music folder for you, all you need**\n**to do is to make sure all music files have the right tags.**\n\nImagine this is inside your music folder:\n\n.. code-block:: console\n\n   Music/\n   \u251c\u2500\u2500 MUTTER (2001) - Adios.mp3\n   \u251c\u2500\u2500 MUTTER (2001) - Feuer Frei.mp3\n   \u251c\u2500\u2500 MUTTER (2001) - Ich Will.mp3\n   \u251c\u2500\u2500 MUTTER (2001) - Links 2 3 4.mp3\n   \u251c\u2500\u2500 MUTTER (2001) - Mein Herz Brennt.mp3\n   \u251c\u2500\u2500 MUTTER (2001) - Mutter.mp3\n   \u251c\u2500\u2500 MUTTER (2001) - Nebel.mp3\n   \u251c\u2500\u2500 MUTTER (2001) - Rein Raus.mp3\n   \u251c\u2500\u2500 MUTTER (2001) - Sonne.mp3\n   \u251c\u2500\u2500 MUTTER (2001) - Spieluhr.mp3\n   \u2514\u2500\u2500 MUTTER (2001) - Zwitter.mp3\n\nWhat a mess, let's clean it up:\n\n.. code-block:: console\n\n   $ tagrenamer --format '{artist}/{album}/{artist}-{title}.{ext}' Music/\n    - Tagrenamer version 0.0.3.\n    - Leftovers directory '__LEFTOVERS/' created.\n    - Stage directory '__STAGE/' created.\n    - Traverse the collection and extract music tags.\n    - Validating tag input and sanitizing variables.\n    - Moving non music files to '__LEFTOVERS/'.\n    - Moving music to new tree in stage directory '__STAGE/'.\n    - Remove empty directories (except stage/leftover directories).\n    - Move everything from stage into the final location.\n    - Deleting the temporary stage directory '__STAGE/'.\n    - Deleting the empty leftovers directory '__LEFTOVERS/'.\n    - DONE! Processed 11 files.\n\n.. code-block:: console\n\n   Music/\n   \u2514\u2500\u2500 rammstein\n       \u2514\u2500\u2500 mutter\n           \u251c\u2500\u2500 rammstein-adios.mp3\n           \u251c\u2500\u2500 rammstein-feuer frei.mp3\n           \u251c\u2500\u2500 rammstein-ich will.mp3\n           \u251c\u2500\u2500 rammstein-links 2 3 4.mp3\n           \u251c\u2500\u2500 rammstein-mein herz brennt.mp3\n           \u251c\u2500\u2500 rammstein-mutter.mp3\n           \u251c\u2500\u2500 rammstein-nebel.mp3\n           \u251c\u2500\u2500 rammstein-rein raus.mp3\n           \u251c\u2500\u2500 rammstein-sonne.mp3\n           \u251c\u2500\u2500 rammstein-spieluhr.mp3\n           \u2514\u2500\u2500 rammstein-zwitter.mp3\n\nFeatures\n--------\n\n#. **Python**\n\n   Pure Python command-line application that is cross-platform and strives to\n   meet all modern quality criteria such as PEP8-compliance and test coverage.\n#. **Formats**\n\n   Supports ``.mp3``, ``.ogg`` and ``.flac`` files and more are easy to add.\n\n#. **Only deals with music**\n\n   Files that are not music, are moved into a folder named ``__LEFTOVERS/``\n   which contains the original structure they were originally in. Letting you\n   decide what to do with them.\n\n#. **Fail-safe**\n\n   Tagrenamer leverages an internal staging process in which it detects failures\n   before it touched a single file. The paranoid can combine ``--dry-run`` and\n   ``-vvvv`` to see what is going on under the hood or even run with ``--shell``\n   to generate Shell commands for you to inspect without renaming anything.\n\n#. **Scalability**\n\n   Renames a few music albums as well as a 2Tb music collection.\n\nInstallation\n------------\n\nInstall Tagrenamer directly from `PyPI`_ using ``pip``:\n\n.. code-block:: console\n\n   $ pip3 install tagrenamer\n\n.. _PyPI: https://pypi.org/project/tagrenamer/\n\n\n\n=========\nChangelog\n=========\n\nUnreleased\n----------\n\n0.0.3 (2024-03-29)\n------------------\n\n* Updated dependencies.\n* Added tagrenamer.toml to move away  from setup.py.\n* Replaced setup.py-based instructions.\n* Updated development installation instructions to suggest pipx.\n\n0.0.2 (2021-11-26)\n------------------\n\n* Development procedures refined and release tested.\n* Integrated readthedocs: https://tagrenamer.readthedocs.io/\n* Updated changelog to reflect 0.0.1 release.\n\n\n0.0.1 (2021-11-26)\n------------------\n\n* Ported the code from 2013 to Python 3.\n* Reorganized the project to become a first-class Python package.\n* Updated majority of PEP8 violations but not all.\n* Added documentation.\n",
    "bugtrack_url": null,
    "license": "GNU General Public License v3",
    "summary": "Mass music collection renamer.",
    "version": "0.0.3",
    "project_urls": {
        "Homepage": "https://github.com/nielsvm/tagrenamer"
    },
    "split_keywords": [
        "tagrenamer"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9a6c840ed4e5180c8471991c3c4b67a60ddaa27cc4dc43b5675aab9d3155f337",
                "md5": "226bdbfb2ae73890e5921e7c76543b4f",
                "sha256": "58e89f4775a55ce135f93ee8375d3139b9af21f8d2c2bce656bb978f12e147b5"
            },
            "downloads": -1,
            "filename": "tagrenamer-0.0.3-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "226bdbfb2ae73890e5921e7c76543b4f",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": ">=3.6",
            "size": 29008,
            "upload_time": "2024-03-29T10:36:57",
            "upload_time_iso_8601": "2024-03-29T10:36:57.126325Z",
            "url": "https://files.pythonhosted.org/packages/9a/6c/840ed4e5180c8471991c3c4b67a60ddaa27cc4dc43b5675aab9d3155f337/tagrenamer-0.0.3-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f44803199f00aa7bb13b45967a31093a05b72a171b8bd04e479b6e54cb05ebcf",
                "md5": "af527dc26185de631ebf5f62384bc0bf",
                "sha256": "65a7a7c7504cb3260e2a1290d028823908f035007323f25926da0f23961c92d7"
            },
            "downloads": -1,
            "filename": "tagrenamer-0.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "af527dc26185de631ebf5f62384bc0bf",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 27119,
            "upload_time": "2024-03-29T10:36:58",
            "upload_time_iso_8601": "2024-03-29T10:36:58.884438Z",
            "url": "https://files.pythonhosted.org/packages/f4/48/03199f00aa7bb13b45967a31093a05b72a171b8bd04e479b6e54cb05ebcf/tagrenamer-0.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-29 10:36:58",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "nielsvm",
    "github_project": "tagrenamer",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "tagrenamer"
}
        
Elapsed time: 0.26608s