This tool is a quick hack to solve two problems:
- Populating, Clearing or Extracting the embedded cover-art of WMA and MP3 (ID3v2) files based on the folder.jpg or cover.jpg files in the same directory.
- Populating the AlbumArtist field on WMA files automatically, with support for Various Artists compilation albums.
I needed the first thing for importing WMA (Lossless) files into iTunes for conversion to ALAC or AAC with cover art, since iTunes doesn't use folder.jpg.
I needed the second thing for Windows Media Center so that, when playing music, it didn't display "Unknown" for the album artist. With Windows Vista and Windows 7, Media Center also lets you view your albums by album artist (not just plain artist) which means you can get proper grouping of compilation albums if you set their AlbumArtist tags (e.g. to "Various").
The program is a command-line tool and only works on one file at a time. To make it useful for a lot of files you'll need to build a batch file or similar.
I automate the program using a couple of toolbar buttons I made for Directory Opus (a highly configurable file manager). If you've got Opus you can drag the .dcf files in the zip to your toolbar. They assume WmaAlbumArtist.exe is in C:\Windows\System32 so you may need to edit them.
Here's a screenshot showing the toolbar I made for this (and some other music tools) in Opus and the results of extracting the images from an album which has a different image for each track:
To populate the AlbumArtist field on a WMA file:
WmaAlbumArtist.exe /SetAA "C:\audio\blah.wma"
To populate the AlbumArtist field on a WMA file, using "Various Artists" instead of "Various":
WmaAlbumArtist.exe /SetAA /VA "C:\audio\blah.wma"
To populate the AlbumArtist field on a WMA file, looking for any parent/ancestor folder starting with "Various" instead of just the immediate parent folder:
WmaAlbumArtist.exe /SetAA /VV "C:\audio\blah.wma"
You can combine the last two examples:
WmaAlbumArtist.exe /SetAA /VA /VV "C:\audio\blah.wma"
To clear the AlbumArtist field on a WMA file:
WmaAlbumArtist.exe /ClearAA "C:\audio\blah.wma"
To add folder.jpg to the tags in a WMA or MP3 file:
WmaAlbumArtist.exe /SetCover folder.jpg C:\audio\blah.mp3
To remove the cover from a WMA or MP3 file:
WmaAlbumArtist.exe /ClearCover C:\audio\blah.wma
To save the cover(s) inside a WMA or MP3 file to images files (which will be named things like blah_cover.jpg):
WmaAlbumArtist.exe /SaveCover C:\audio\blah.wma blah_cover
Folder.jpg or whatever image you specify is looked for in the same directory as the audio file. Let me know if you need the ability to specify a full path.
Files that already have an AlbumArtist or embedded image will be left as they are. (Although there seems to be a bug where sometimes the program thinks files with embedded images don't have them and adds them again. That could be the debacle that is ID3v2.4 tag support/incompatibility. If you have problems I recommend getting MP3Tag, setting it to write ID3v2.3 tags, then telling it to re-write the tags on problematic files. ID3v2.4 tags are incompatible with half the world, including the Windows Media API which WmaAlbumArtist uses.)
When setting the AlbumArtist field the Artist field is copied over, unless the file's parent directory name starts with "Various" in which case the AlbumArtist is set to "Various" (or "Various Artists" if you add the /VA argument). (You can also use the /VV argument to check all parents/ancestors of the file to see if they start with "Various", instead of only checking the immediate parent.)
As you can tell, the program is not very user friendly and only does what I needed (and a bit more which other people asked for). I probably won't turn it into a nice, fully-featured GUI app (too much else to do!) but if you need any small changes making to it let me know and I'll try to help.
C++ source code is provided in a separate zip. You don't need this unless you want to modify the program or use the code in your own program. You can do whatever you want with the source.
22.214.171.124 (27th April 2010): Added /VV argument to search for any parent/ancestor folder starting with "Various" instead of just the immediate parent folder. Also fixed that search being case-sensitive.
126.96.36.199 (17th April 2010): Added /VA argument to use "Various Artists" instead of just "Various" (request from Stuart Hodgson). Added /ClearAA argument. Fixed it not seeing the parent dir name if you gave it just a filename, without path, as an argument.
188.8.131.52 (1st December 2009): Fixed bug/typo in the /SaveCover command-line parsing. Thanks to Jean-Pierre Turchi for spotting it.
184.108.40.206 (1st October 2008): Fixed /SaveCover complaining about the MIME type for some JPEG covers.
220.127.116.11 (3rd March 2008): Add the ability to extract and save cover art (/SaveCover).
18.104.22.168 (25th February 2007): Added the ability to remove cover art (/ClearCover).
22.214.171.124 (15th September 2006): Initial release.
Abandoned VBScript version
In theory you can populate the AlbumArtist field using VBScript to control Windows Media Player. I tried writing a script which goes through all of the tracks in the WMP media library but
there seems to be a bug in WMP and large media libraries which means that many of the files don't get updated. I gave up on that approach but here's the VBScript in case you want to give it a try: WmaAlbumArtist_VBS_version.zip