Cross-platform music tagger written in Rust, Vue

You might need to install additional dependencies to make One Tagger work:

OneTagger

.js and Quasar. It can fetch metadata from Beatport, Traxsource, Juno Download and Discogs. It is also able to fetch Spotify's Audio Features based on ISRC & exact match. There is a manual tag editor and quick tag editor which lets you use keyboard shortcuts.

MP3, AIFF, FLAC, M4A (AAC, ALAC) supported.

For more info check out our website.

Installing

You can download latest binaries from releases

Linux

sudo apt install libsndfile1-dev

Credits

Bas Curtiz - UI, Idea, Help

Support

You can support this project by donating on PayPal or Patreon

Compilling

Linux & Mac

Mac version is cross compiled from linux, the build script is designed to run on Github Actions enviromnent, so you have to install some dependencies manually: rustup, node

Install remaining dependencies

sudo apt install -y autogen libsndfile1-dev libasound2-dev pkg-config make libssl-dev gcc g++ curl wget git libwebkit2gtk-4.0-dev

Compile Linux only

cargo build --release

Output is in: target/release/onetagger

Compile Linux + Mac, create bundles

assets/compile-nix.sh

Don't start the script directly or from assets dir. It has to be relative to the parent
Output files will be in the dist/ directory.

Windows

You need to install dependencies: rustup, node, Visual Studio 2019 Build Tools

Compile UI:

cd client
npm i
npm run build
cd ..

Compile OneTagger:

copy assets\sndfile.lib .
cargo build --release

Output will be inside target\release folder.

Issues

Collection of the latest Issues

Lefuneste83

Lefuneste83

1

Hi there. First of all thank you for your efforts in developing this excellent cross platform tagging tool. I have tried it tonight. It seems to work very well and is full of interesting features for DJs.

Being a very early adopter of MP3 mixing (since 1998) and DJ for 35 years now, I have been looking for a proper automatic tagger / renamer for nearly a quarter of a century. Yes this long... I have folded back to using MP3tag, but this forces me to run a Windows VM which I despise more and more, operating fully on Linux.

All tools I've used in the past have always failed to fulfill my requirements in one way or another especially the ones running on Linux such as Picard, witch has a dubious UI and a very poor track database for DJs

Your approach seems quite intelligent as nowadays we can benefit from valid online metadata repositories allowing us to grab structured tracks information. Also it is a great feature to be able to enrich tags that can then be properly exploited by modern DJ applications, one area of much controversy for sure. I myself tend to rely on my musical memory and structured file system to access my music, more than any tagging. But I agree that in order to match keys in the best possible way, it is quite interesting to have properly filled tags.

Currently managing a collection of 300 000 files, all properly named and tagged, I could not do this manually, this is where a tool like yours can be of great help.

But after having read all issues in this GitHub page, I am quite surprised to see that almost no one seems to pay attention to one major feature absent from your implementation, which is automatic file renaming.

From my dinosaur experience with such tools, there are two major data streams that need to be addressed : -One is tagging information : tag structure management, tag versioning and of course proper source definition and external API integration. Your approach seems great for this. -Second one is the ability to properly structure the file system : file naming convention, directories, based on dynamic rules, mostly based on properly tagged information (going back to point one). MP3tag works fine for my use case, allowing me to batch process incoming files (having whatever file naming convention) and export them to a "OK" directory, all tagged and renamed. But with such a tool, I still have to edit my incoming files on a per disk basis, mainly because MP3tag has very little intelligence in grabbing and processing data from external APIs. Mainly using Discogs with this software, it works fine 90% of the time for albums, but not at all for latest EPs, which take ages to commit to Discogs database. So it is a very lengthy process that I'd rather spend doing something else. I mean this has been a major choir for decades for me!

As I cannot control the sloppiness of naming convention on the files I get, I'd like to be able to batch process a full directory with hundreds of records with a set of half a dozen of rules (depending of the type of record : EP, LP, Mix...).

So my question is simple: do you intend to implement an automatic renaming engine to your dev roadmap, as I strongly believe this is quite mandatory to properly address DJ needs, or is this feature out of your current scope ? I would feel very sad to be able to tag hundreds of files at once with your tool, to then having to rely on another tool to rename them.

sakej

sakej

1

Hi.

  1. Add files to AT and check One Tagger Tag option
  2. Run AT
  3. Go to AF
  4. Set the same files to be used
  5. In AF set Skip already tagged tracks
  6. Run AF - track will be skipped

Track that have been tagged in AT with option to write OneTagger tag cannot be used in AF, seems that both apps looks for the same tag for skipping where they should be different, so user could use both functions on the same files.

Win 10 (portable) Build #203

flovanc

flovanc

1

often on large libraries I have an "ERRO Audio features search track by ISRC error: Spotify API reported error code 400, module: onetagger::ui::audiofeatures"

is it possible to add an option in the audiofeature section to skip a track already tagged with audiofeature ?

JOJ0

JOJ0

1

Hi, very nice tool. Copying marked text anywhere written in onetagger does not work, nor does pasting something from a website or somewhere else into onetagger work on my installation:

Onetagger 1.3.0 macOS 10.13 High Sierra

This is especially unhelpful when trying to configure eg. app key and secret to get the Spotify audio features tagger going :-) Thanks for any hints or fixes :-)

levalencia

levalencia

8

I selected autotag, selected the platforms, the path, and then click on start, Nothing happens

Not sure how to debug this error or how to send you the logs.

If I try quick tag, it says Click Here to select folder, when I click, nothing happens either

RinMinase

RinMinase

2

Updating the package via the terminal seems easier compared to:

  • opening the browser / email (watching for releases)
  • checking the repository for new releases (or watching for releases)
  • downloading the new package
  • removing the previously installed package
  • installing the downloaded package
  • removing the downloaded package

This is just a suggestion though. 😊 I am not sure of the complexity of creating casks or taps in Homebrew.

lxape

lxape

2

Hi guys,

Thanks a lot for creating this amazing app.

I have one question: How can I remove a Mood from a song?

I deleted the "Mood"-Tag via the "Edit Tags". However, the tag remains whenever I open the song in the "Quick Tags".

Many thanks in advance and best regards,

L

djtechonline

djtechonline

2

This app has lots of potential but there are a few things that, as a DJ who uses Apple's Music App (formerly iTunes) to manage a large music library of 60,000+ tracks on my Mac, I think would be EXTREMELY helpful if these features could be added:

1.) Ability to drag & drop tracks from iTunes/Music for auto tag 2.) Option to retrieve Metadata from iTunes Store for matched AAC files 3.) Higher resolution for embedded images. At least 500x500 pixels if not double that

As it is now, I am very impressed but I find tagging files in my library very difficult - especially in having to select folder paths. Keep up the good work. You certainly have something here!

Harmonizer-byte

Harmonizer-byte

33

First of all, thanks for making such a program, it looks promising, and I hope your program will develop in the future. For my part, I will propose some changes that in my opinion will improve flow, interaction and become more intuitive.

I also like the fact that the track information is displayed in several floors, this allows all the track information to fit horizontally and vertically in a small window, a good solution because DJs usually have to scroll long lists left and right in other programs.

image

  1. Add playlist tree and explorer on the left
  2. Change the place to change the genre, with the ability to create a genre-subgenre
  3. Now the mechanism for saving a tag to a file is not entirely clear, it would be nice to add some kind of visual element that would confirm that the tag data was saved in the file.
  4. Delete the tag editor tab, it looks like an extra menu from the top, a link on the track itself and left-right arrows to switch tracks will be enough
  5. Stars, move to the track itself, this will not lose the convenience of tagging, but will allow you to place the browser on the left.
  6. Make the emotion point a pop-up separate window, with a large number of different emotions and states, I really like the idea with emotions, I would like to have a list of emotions for choosing similar to this one, the number of possible emotions for one track can be limited to three, this will be enough Https://myenglishtutors.org/wp-content/uploads/2019/12/list-of-emotions.jpg
  7. When you select in the tree of directories and playlists, show all attached files in sub folders (like crates in serato)
brendan-pike

brendan-pike

16

I tried running onetagger over my entire collection. I expected it would take days, however it seems to have finished, claiming 100% yet had only got through 7%

Is there a hard coded timeout somewhere?

onetagger

benjaminlewandowski

benjaminlewandowski

1

Sometimes the same track is on multiple releases, and it would be nice to get the option to manual select the right one. (kinda like beatport pro was "back then")

beatport pro interface

Example: I bought "bipolar disorder" from kaiserdisco as part of the best of kd raw 2019 release (https://www.beatport.com/release/best-of-2019/2786480) - but I would like to tag it like it's the version from the "Paranoid EP" (https://www.beatport.com/release/paranoid-ep/2635325)

the only way to do this right now would be to manually change the beatport_track_id to the "correct" one and rescan the file

Muppetteer

Muppetteer

2

Quick Tag only prompts to save a file if you select another track without hitting CTRL+S first. This leads to a bug where you can exit the program without saving the last track that you quick tagged and you lose your changes.

To reproduce:

  1. Quick tag mode.
  2. Tag a file then press arrow down, you are prompted to save.
  3. Tag another file, now don't save or change selected track, instead exit the program.
  4. OneTagger exits and changes to the last file are lost.

As an aside, I find the save prompt kind of redundant and would prefer if it just saved files without prompting me.

Versions

Find the latest versions by id

1.3.0 - Nov 18, 2021

1.3.0:

Auto Tag:

  • Match by exact ID for Discogs, Beatport
  • Filename template fixes
  • Duration tag
  • VINYLTRACK Tag for Discogs
  • Discogs now faster for smaller batches
  • Album artist tag
  • iTunes, Musicbrainz, Beatsource and Spotify support
  • Beatport subgenres, more tags
  • Meta tag
  • Remixer tag
  • Track number tag
  • ISRC tag
  • Shazam to find songs without tag and filename parsing
  • Filter in status page

Audio Features:

  • Added popularity tag
  • Renamed danceability value to dance-high, dance-med, dance-low

Quick Tag:

  • Internal rewrite, cleaner code, more stable
  • Search and filter

Tag Editor:

  • CTRL + S
  • Filtering
  • Refactored some code

Other:

  • General UI improvements
  • Windows: Replace CEF with webview2 - smaller install sizes, more portable.
  • --expose command line option to make the server listen on 0.0.0.0
  • Updated dependencies
  • Bug fixes
  • .mp4 Extension support

1.2.1 - Jul 03, 2021

Auto Tagger

  • Fixed bug in 1.2.0 causing Beatport and Traxsource having low match rate

Other

  • Added more info to logs for debugging
  • Fixed path pickers not opening with bad path

1.2.0 - Jul 02, 2021

Shared:

  • Added M3U playlist support with drag and drop

Auto Tag:

  • Added catalog number, track ID, release ID, version, URL tags
  • Added duration matching (WARNING: strict, should be used only in specific situations)
  • Tag files without metadata (using filename with custom templates)
  • Single page design changes
  • Improved matching rates, bug fixes

Quick Tag:

  • Option to load recursively

Tag Editor:

  • Minor design changes

Other

  • Benchmark mode (for testing / debugging purproses, can be ran with --benchmark command line argument)
  • If you specify path as command line argument, it will be automatically prefilled.

1.1.0 - May 31, 2021

Shared:

  • Added MP4/M4A support

Auto Tag:

  • Redesign
  • Better status page
  • Single page setup (enable in settings)
  • Camelot key notation
  • Juno Download is single thread now
  • Bug fixes and improvements related to matching

Audio Features:

  • Fix searching in some edge cases
  • Cache Spotify token

Quick Tag:

  • Player UI improvements
  • Autosave, Autoplay (can be enabled in settings)
  • Bug fixes

WARNING: Due to many breaking changes, SETTINGS WILL BE RESET TO DEFAULT. This will hopefully not happen in future again. Sorry for the inconvenience.

1.0.0-fix - May 13, 2021

Incomplete POPM tag hot fix

1.0 - May 13, 2021

First release of One Tagger.

Information - Updated Mar 14, 2022

Stars: 110
Forks: 9
Issues: 13

Try Out Development Containers: Rust

A development container is a running GitHub Codespaces or vscode-remote-try-* sample projects, too

Try Out Development Containers: Rust

Roctogen: a rust client library for the GitHub v3 API

This client API is generated from the Isahc HTTP client

Roctogen: a rust client library for the GitHub v3 API

Try Out Development Containers: Rust

A development container is a running GitHub Codespaces or vscode-remote-try-* sample projects, too

Try Out Development Containers: Rust

Try Out Development Containers: Rust

A development container is a running GitHub Codespaces or vscode-remote-try-* sample projects, too

Try Out Development Containers: Rust

A rust github template for ease of use

Install the rust toolchain in order to have cargo installed by following

A rust github template for ease of use

📓 Relnotes: Automatic GitHub Release Notes

Tera templates for release notes format

📓 Relnotes: Automatic GitHub Release Notes

Rust-generated WebAssembly GitHub action template

A template to bootstrap the creation of a Rust-generated WebAssembly GitHub action

Rust-generated WebAssembly GitHub action template

Try Out Development Containers: Rust

A development container is a running GitHub Codespaces or vscode-remote-try-* sample projects, too

Try Out Development Containers: Rust

cargo_auto_github_lib

Library for cargo-auto automation tasks written in rust language with functions for github

cargo_auto_github_lib

Renote is a CLI to extend GitHub operation experience, which is a complementary tool to...

Renote is a CLI to extend GitHub operation experience, which is a complementary tool to use with gh advanced search options

Renote is a CLI to extend GitHub operation experience, which is a complementary tool to...
Facebook Instagram Twitter GitHub Dribbble
Privacy