Two days ago I bought a Philips GoGear mp3 player. It's coming with 526MB flash which can be extended by a gig if you insert the right memory card. It has line-in with direct encoding and is using regular batteries (as opposed to built in custom ones, which all harddisk based player seem to use)
(side note: I ditched my old Sony MiniDisc recored in favour of mp3 because it's read/write head broke one week after the warranty ended and Sony wanted 89 euros for a repair. Suckers. (side side note: so my next notebook isn't going to be a Sony Vaio Subnotebook))
Anyway, this GoGear thing is quite decent, but it has one major drawback (as most players seem to have). It needs special software to load mp3s onto it. In this case, Windows Media Player. Yuck!
But some googling revelead that the player uses an SQLite DB to store metadata, and that one can fill this DB with other tools than WMP. Yay!
So after some looking at horrendous DB schemas like "CREATE TABLE artistTable (iArtistId INTEGER PRIMARY KEY,cArtistName VARCHAR(100))" I managed (instead of working in CPANTS) to hack together a small script that generates a nice and working database. Here it is!
It's lacking docs and tests, but is quite understandable, I hope. BTW, there's a python 'script' here that does the same (and a bit more, namely playlist handling) in 459 lines (instead of my 54 lines).
I might turn this into a Catalyst/DBIc::Class-based app to manage my soon-to-be-existing collection of mp3s (to bad that there isn't a ripper for vinyl...). In my copious free time. Haha..