Yesterday I showed how to write from a filename into a jpeg caption and comment. After writing that up I was carrying along with my work, which at the moment entails making 251 mp3s for a section by section reading of my new book (about which more later).
And there again I came across the same problem that I need to write a partial file name into the mp3 title tag. Up and till now I have been using Eags On!, which is a great tag writer, and I was quite satisfied with it – it can write the filename to the tag, and many other useful functions.
However, it can’t write only part of the name, which is what I needed, and therefore I was faced with the prospect of having to do a lot of editing of the title by hand. On one or two files that is OK, on 251 it is most certainly not.
This is what the filenames look like in FreeCommander:
They are very similar to the image files I was demonstrating yesterday. I had just written up that post and it occurred to me if we can do it for .jpegs we can do it for .mp3s also ! so I set out to find a command line utility.
I tried a couple but the one that eventually worked for me was metamp3. With that downloaded and copied into my programs folder. I was ready to set up the batchfile.
It is essentially a hack of yesterday’s file, with the necessary changes. I first got it to write the title – but if it can write the title, then it can write every other tag I need to include also, which also saves me writing the same information out each time I start up a GUI tagger.
Some of the tags are always the same, like ARTIST, GENRE, COMMENT; some vary according to project like ALBUM and YEAR; some have to be grabbed from the filename like TRACK and TITLE. Below is the heavily annotated script, which shows how it is done.
@echo off SETLOCAL ENABLEDELAYEDEXPANSION REM these do not vary between projects REM so they can be entered one time here REM Leave spaces in and do not use quotation markers SET ARTIST=Anandajoti Bhikkhu SET GENRE=Speech SET COMMENT=ancient-buddhist-texts.net REM these do not vary between files in this project REM so they can be changed for each project REM Leave spaces in and do not use quotation markers SET ALBUM=Buddhist Wisdom Verses SET YEAR=2011 REM these four lines empty the variables REM which will vary according to the filename SET FILE= SET TITLE= SET TRACK= REM COUNT is set to zero SET COUNT=0 REM the loop starts here FOR %%f IN (*.mp3) do ( SET FILE= !FILE!%%f REM Here I am taking the title REM from the 5th character of the filename upto 4 before the end REM Example: "001 One should be Amenable to Admonition.mp3" REM becomes: "One should be Amenable to Admonition" REM if you want the whole filename (excluding the extension) REM change the following line to: SET TITLE=!FILE:~1,-4! SET TITLE=!FILE:~5,-4! REM Here I am taking the track number REM from the 1st character of the filename upto the 3rd REM Example: "001 One should be Amenable to Admonition.mp3" REM becomes: "001" [but it shows as 1 in the file] SET TRACK=!FILE:~1,+3! REM this is writing the info if you have Tag.exe REM somewhere else you will need to change the address REM the ^ character is the line continuation marker "c:\program files\metamp3\metamp3" ^ --title "!TITLE!" ^ --artist "!ARTIST!" ^ --album "!ALBUM!" ^ --year "!YEAR!" ^ --genre "!GENRE!" ^ --comment "!COMMENT!" ^ --track "!TRACK!" ^ "%%f" set /a COUNT=!COUNT!+1 REM emptying the variables again SET FILE= SET TITLE= SET TRACK= )
Here is the output as read in PowerCmd:
I might add here that metamp3 can do much much more than I am demonstrating here, including altering the mp3 gain, writing image files in and changing many more tags.
It is easy to change the above code to whatever is useful to you after downloading the programme and seeing what parameters are allowed.
For it to work you have to copy the lines above into a text file, and save it as Tags.bat (or some such name, but with the .bat extension) and move the batchfile to the directory you want to change, and double-click it.
It will only change metadata in the .mp3s, but note it will change all the .mp3s in the directory.
Again, I hope this might help someone having the same problem.