tags:

views:

286

answers:

4

So, I've been tossing this idea around in my head for a while now. At its core, it's mostly a project for me to learn programming. The idea is that, I have a large set of data, my music collection. There are quite a few datasets that my music has. Format, artist, title, album, genre, length, year of release, filename, directory, just to name a few. Ideally, I'd like to create a database that has all of this data stored in it, and in the future, create a web interface on top of it that I can manage my music collection with. So, my questions are as follows:

  1. Does this sound like a good project to begin building databases from scratch with?
  2. What language would you recommend I start with? I know tidbits of PHP, but I would imagine it would be awful to index data in a filesystem with. Python was the other language I was thinking of, considering it's the language most people consider as a beginner language.
  3. If you were going to implement this kind of system (the web interface) in your home (if you had PCs connected to a couple of stereos in your home and this was the software connected), what kind of features would you want to see?

My idea for building up the indexing script would be as follows:

  • Get it to populate the database with only the filenames
  • From the extension of the filename, determine format
  • Get file size
  • Using the filenames in the database as a reference, pull ID3 or other applicable metadata (artist, track name, album, etc)
  • Check if all files still exist on disk, and if not, flag the file as unavailable

Another script would go in later and check if the files are back, if they are not, the will remove the row from the database.

+2  A: 

I think this is a fine project to learn programming with. By using your own "product" you can really get after things that are missing and are much more motivated to learn and better your program - this is known as dogfooding. Curiously enough, the book Dive Into Python, although a little old, covers in some detail how to extract the ID3 information of music files using Python. Since that's the book most often recommended for beginners, I bet that'd be as good a place to start as any.

Paolo Bergantino
+1  A: 

Working on something you care about is the best way to learn programming, so I think this is a great idea.

I also recommend Python as a place to start. Have fun!

Aaron Boodman
+1  A: 

If you use Python, you could build it with the Google App Engine. It gives you a very nice database interface, and the tutorial will take you from 'Hello world!' to a functioning web app.

You don't even need to upload the result to Google; you can just run it in the dev environment and it will be accessible within your home network.

John Fouhy
+1  A: 

I think python would be excellent choice as

  1. easy to learn but have advanced features too
  2. good web frameworks available e.g. django which you can run on your machine
  3. Word class Free python hosting available i.e. google app engine
  4. Libraries available for almost anything imaginable e.g. for reading your mp3 tags you can use http://id3-py.sourceforge.net/
  5. for searching you can use pylucene http://lucene.apache.org/pylucene/ the best search engine available.
Anurag Uniyal