Giter Club home page Giter Club logo

id3-editor's Introduction

ID3 Editor

OpenSource Apache 2.0 Tested on linux, Win10 Change language

The simplest console tool for batch editing of mp3 metadata in interactive or manual mode

Now this version of the project is in the active stage of refactoring. A roadmap of planned changes will be added later. If you want to contribute to the project already at this stage, please contact the author.

πŸ“¦ Installation

Clone this repo, change the directory and install the necessary requirements:

$ git clone https://github.com/dan-sazonov/id3-editor.git
$ cd id3-editor
$ python3 -m pip install -r requirements.txt

note: you may need to enter python instead of python3.
The program was tested on Win10 x64 and Ubuntu 20.04 x64 on Python 3.9.0. I do not know if everything will work fine on other os, and it will be great if you share your experience of using it and tell me about the found bugs.

βš™ Usage

The easiest way to start is just:

$ python3 main.py

After that, the program will ask for the path to the directory where the tracks need to be edited. Then change the value of each parameter for each file. If you want to apply the value from the brackets, press [Enter]. You can use a parser to search for the album name. Just enter [!] instead of the album name. Also, the name of the band and track are copied to the clipboard. It looks like this:

Main process screenshot

Default Parameters

If there is a same values for each tracks in this folder, you can predefine it by specifying one of the flags when starting the program (see below). The value of this parameter will be asked once at start, and will be applied to all tracks. It looks like this:

Usage with the presets of some data screenshot

Flags:
  • '-T', '--title' - title for all tracks;
  • '-R', '--artist' - artist for all tracks;
  • '-A', '--album' - album for all tracks;
  • '-N', '--number' - number for all tracks;
  • '-G', '--genre' - genre for all tracks;
  • '-D', '--date' - date for all tracks.

Logging and manual mode

The log will be saved if the program was terminated with an error. You can also save a json log with the metadata of the edited files. To do this, run the program with flags -l or --log'. By the path stored in the LOG_PATHvariable in the fileconfig.py `, a file of the following format will be created:

{
  "file-name.mp3": {
    "data": ["value"]
  }
}

You can restore metadata based on information from any log file. For example, this may be useful if you have the same files in different directories, and you need to edit them all. Run the program with the -p or --parse flag, set the log file and enter the path to the required directory. Any other flags except -r or --rename will be ignored.

Also, you can write the current unchanged metadata to a json file. To do this, run the program with the -s or --scan flag. I call this manual mode - at first you create a json file with the unchanged metadata, then you edit them and apply it by running the program with the -p or --parse flag.

If you need to print artist-title pairs for all tracks, use the --min_scan flag. The output information will be copied to the clipboard. The DO_OUTPUT_COPY flag in the file config.py is responsible for this behavior.

More Features

  • If the file contains information about the copyright holder, and you want to leave it, use the -c or --copyright flag.
  • You can run the program in minimal mode with -m or --minimal flag. It will only ask for title, artist, album and genre. Other data will be cleared.
  • Files could be renamed in the form of artist_track-title.mp3. Use the -r or --rename flag. Keep in mind that the information in the logs will be associated with the new name at the regular end of the program.
  • You can also rename all files without changing the metadata. Run the program with the --auto_rename flag. Don't use other flags with this.
  • If there are several files with the same name, a number in parentheses will be added to the end of it
  • To remove all data from the tracks, run the program with the -d or --delete flag. Any other flags will be ignored.
  • If you need to go back to editing the previous track in the interactive mode, enter the ^ character in any field.
  • In interactive mode, two colons after the letters a, o or u will be replaced with this letter with an umlaut. For example, Mo::tley Cru::e will be replaced by MΓΆtley CrΓΌe.
  • To avoid bugs, the data entered by the user will be validated. To disable it, set the SKIP_VALIDATION variable in config.py to True. Be careful using it!
  • You can specify metadata that does not need to be cleaned in minimal mode. Add their keys to the LEAVE_THIS_DATA list in the file config.py .
  • To view the quick help, run the program with the -h or --help flag.

🀝 Contributing

If you have any ideas or found any bugs here, plz open the issue or make a fork and offer a pull request. And it will be great if you tell me about these ideas, maybe I'm already working on them.

πŸ‘¨β€πŸ’» Author

The author of this repository and code - @dan-sazonov.
Reach me:
✈️ Telegram
πŸ“§ Email

id3-editor's People

Contributors

dan-sazonov avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

t-sazonova

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.