Mucking around with foobar2000 after I got fed up with Winamp - looks very nice! however a slight issue: it's a pain in the butt to get ratings across. Even though Winamp can save some ratings in tags, it doesn't work for all formats and the scale is actually dependant on the container (i.e. some are tagged from 1-5, others from 1-100). There are a few methods around for doing this but most are quite nasty in that they require creating a list of thousands of songs in exactly the same order in both programs, then using a dodgy parsing method and hoping for the best...
parse.pyI didn't feel too confident with that so I wrote this python script. It parses an iTunes library XML file (as exported from iTunes or Winamp), and calls foobar appropriately.
Originally it output a batch file which could then be double-checked for correctness, but that broke on fïlés likè thêsé because Windows 7 STILL doesn't support Unicode characters in batch files. Python now calls Foobar directly.
It requires Python 3 for the same reasons - Python 2 does a hash job of dealing with Unicode. It should run with Python 2 but it will not work for any files with non-ASCII characters in their names. You will also need the
Playback Statistics and
Run Command components installed in Foobar.
You will have to edit it to specify where to find foobar2000.exe (remember to use forward slashes in the path) and also the location of your library XML file.
It has to run in batches because there's a limit on the size of arguments passable in the windows API (i.e. it can't send 10,000 filenames at once) - run parse.py from a command window, wait for foobar to settle down, approve "are you SURE you want to change the ratings in three billion and a half songs?", then again wait for foobar to settle down, then press any key in the command window to continue. My 3000-song library takes about ten passes to get through.
tl;dr:
1) install Python 3, and the Run Command and Playback Statistics Foobar2000 components
2) export XML from iTunes/Winamp
3) download parse.py, change the lines at the start so it knows where foobar2000 and your exported XML are
4) run parse.py, when it says wait for foobar2000 to settle IT MEANS IT, if you do not then it will only import one batch of ratings
5) enjoy your ratings
parse.py