Its 2.20am so apologies if this makes little to no sense.
After a long week of coding into the small hours I have achieved 2 things:
1 - I now know a little more about PyObjC and Cocoa and Interface Builder and XCode
2 - I have created (what I hope) is a vaguely useful application for OS X called iSing
So what is it?!
It’s a little app to get the lyrics of the currently playing track in iTunes.
“Its been done” I hear you cry.
Well yes, but iSing lets you tag the lyrics according to what you think of them… I hope to be able to do the same with the actual songs too (i.e. putting tag words in the comment field for easy searching!) but that will come later.
What’s the point in tagging lyrics? I’m not really sure, but sometimes I listen to a tune and think “Thats a really cool lyric”, then later on I’ll be thinking “Aha, its just like so-and-so says in their track, blah, — ‘The Really Profound Lyric’”… Yeah so anyway, my brain doesnt really need to be storing all that in there, so iSing can do it instead.
You can retrieve lyrics by Artist/Title or by tag word. You can tag them with colours too but as yet cannot retrieve them by colour. (Though they will display in colour.. I suppose that makes it the iSing on the cake… uhhh…. )
Couple of bugs i know about:
1 - the thread that ‘auto detects’ track changes leaks objects like a … well like my car leaks radiator fluid actually.
[EDIT: FIXED... but it might still randomly hang if you are 'auto detecting']
2 - if you try and get lyrics when it says “Not Playing” it explodes. I can’t work out how to disable the toolbar button.
Ummm yes. That’s about it. I hope to add a lot more but at the moment I’m pretty pleased with it.
Thanks to Dave for writing the tree source class, I adapted it and that allowed me to bosh it in in about half an hour! woop!
Also - if you put this file into ~/Library/Application Support/iSing/lyrics.cache (you might have to make that dir, ~ being your user’s home) then you will have some pre-tagged stuff (erm… it will probably not show anything if you don’t have the tracks… but try it… it should still work and fail gracefully) to browse.
PS - PLEASE let me know if it breaks, and also what you think! (If you can be bothered it will spew into console.log if it breaks, the last 10 lines of that would be useful)