A bit of a preface is needed here. I am organizing my mp3 music collection, which by most people's standards is a lot (around 40k mp3 files). Simply stated is that I have a ton of music and I'm trying to figure a way to best organize it.
I started with a hard drive full of ripped mp3s that were haphazardly thrown for storage and I wasn't keen on keeping good play lists so I organized most of my music for each person by windows folders. It was easy to sync to multiple devices. (don't roll your eyes at me!). I ended up with a mess of duplicate songs. I spent the last few days "flattening" out the songs into a few directories located on my media center.
I copied them to my local drive and then ran the Pollux application to make sure my tags were clean and adding the lyrics. For $10, its a good app for what it does, but I did wish it had more options to help me with getting my files organized.
I had a problem copying files from subdirectories to a parent directory on the mediacenter. I looked at robocopy and others, but I didn't want to spend three hours writing a script for another program, so I took about thirty minutes and wrote a quick wpf app to set parent source (it spidered through all subdirectories looking for any mp3's) and a destination drop on the media center. I put a check for duplicate filenames to ignore and diskspace. All was well.
Having 10K plus songs in a single directory got a bit overwhelming if I needed to search without MediaMonkey(MM)/ITunes. So I had MM rename/copy the tracks and put them into a folder structure that was like \\mediacenter\drive C\A\Aerosmith
then all of Areosmith's songs would be in a single folder. If I wanted to sort by name or by album I can view that in windows explorer or better yet in MM or ITunes where I would be managing the files 90% of the time.
I completed the task!
All my songs were nicely arranged on my mediacenter drives with extra space to spare amongst them. However I noticed a couple of issues as I loaded the mass of mp3s into my MM.
The first issue when flattening out the files and copying to the mediacenter pc, I ignored if a song was already there by the same name. I was trying to eliminate the 500 Beatles songs into 300 since I have many cds that have the same Beatles song. Trying to save on space and reduce the volume of files to shift through. But a band can remix the song by the same name and I'd end up with only one version of the song.
The second mistake was if the two different bands had the same name for a song. For example Breathe is a popular song title. Since I renamed all the mp3's to its simplist form (only its title), my fix for duplicate files backfired again.
So I realized I needed to go back to my source and recopy these again, but I needed to do this smarter since it takes a while to copy and arrange all these songs. So I decided to write another program that did more than simple copy files and move them around. I need something smarter.
I need to start from scratch since I have no idea which songs I've lost.
But now I have some "requirements" to my program.
I have three problems to solve here:
1. I need to re-run Pollux to retag my music. I need to make sure they do not get renamed in such a way that I lose duplicate songs.
2. I want to keep the directory structure I currently have Drive/alphabet/artist/ but I want to reduce the steps it takes me to get from my mess on my portable drive to my media center.
3. I need to come up with a naming convention for my songs to avoid the problems above, but I need to ask the end user if having the same song from different albums is really a problem? Since I'm trying to automate this organization, I'm going to have to say that I will have to live with having duplicates from different albums so I don't lose different versions, but I will ignore having the same song from the same album, which is a possibility at times.
Tomorrow I will post about item #3 and my discovery with TDD and how I started and how it ended up.
Unit Tests in the Pyramid
3 days ago