Feeds

Serve up iTunes with Apple's media browser

Give your software some soul

Top 5 reasons to deploy VMware with Tegile

Mac Secrets Let's stay with the iLifeMediaBrowser.framework, which we looked at last time. Previously, I showed how to use Apple's built-in media browser using virtually no code.

Following on from that, a number of folks have asked me if it's possible to use classes in the iLifeMediaBrowser library to access your iTunes library without displaying the Apple browser? Indeed it is, and this is the subject of this article.

First off, why would you want to do this? From a developer's point of view, there are lots of good reasons. Maybe you've written an alarm-clock utility and you want the user to be able to choose a "wake-up" song from her iTunes library. Or maybe you're writing an app to backup, consolidate or repair the song library. Or maybe you want multiple iTunes libraries - whatever.

If you browse the net, you'll find various techniques for interrogating the library, ranging from using iTunes with AppleScript to parsing the associated XML file. But to the best of my knowledge, the techniques used here have never been documented outside of Apple.

The key class that I'm using here is called ILiTunesMediaManager. As the name suggests, this class is the media manager for iTunes. If your interest lies elsewhere, there are equivalent classes that handle the media for other iLife applications, such as ILiMovieMediaManager and ILiPhotoMediaManager.

Instantiating an ILiTunesMediaManager object is dead easy. We simply call the sharedMediaManager class method like this:


ILiTunesMediaManager * tunesManager = [ILiTunesMediaManager sharedMediaManager];

As before, I've provided the necessary header files as part of this month's sample project. The header files were created using class-dump as described in previous articles.

Load your data

Once we've got an instance of ILiTunesMediaManager, we need to load it with data from the iTunes library: this doesn't happen automatically. To do this, you need to call the loadData method. This is asynchronous - it works away in the background - so we need some way of knowing when the job's done.

From our perspective, the simplest way of doing this is to set up a timer to periodically query the media manager to ask if it's ready yet. This can be done via the isLoaded and isLoading methods: I check them both just to make sure the media manager really is ready. If you're worried about long delays here, don't be: I've got over 1,600 songs in my library, and it loads almost instantly.

Once ILiTunesMediaManager is ready to roll, we can start having some fun. The list of available playlists is accessed, counter-intuitively, via a method called playlists.

Intelligent flash storage arrays

More from The Register

next story
Euro Parliament VOTES to BREAK UP GOOGLE. Er, OK then
It CANNA do it, captain.They DON'T have the POWER!
Download alert: Nearly ALL top 100 Android, iOS paid apps hacked
Attack of the Clones? Yeah, but much, much scarier – report
NSA SOURCE CODE LEAK: Information slurp tools to appear online
Now you can run your own intelligence agency
Post-Microsoft, post-PC programming: The portable REVOLUTION
Code jockeys: count up and grab your fabulous tablets
Twitter App Graph exposes smartphone spyware feature
You don't want everyone to compile app lists from your fondleware? BAD LUCK
Microsoft adds video offering to Office 365. Oh NOES, you'll need Adobe Flash
Lovely presentations... but not on your Flash-hating mobe
prev story

Whitepapers

10 ways wire data helps conquer IT complexity
IT teams can automatically detect problems across the IT environment, spot data theft, select unique pieces of transaction payloads to send to a data source, and more.
A strategic approach to identity relationship management
ForgeRock commissioned Forrester to evaluate companies’ IAM practices and requirements when it comes to customer-facing scenarios versus employee-facing ones.
How to determine if cloud backup is right for your servers
Two key factors, technical feasibility and TCO economics, that backup and IT operations managers should consider when assessing cloud backup.
Reg Reader Research: SaaS based Email and Office Productivity Tools
Read this Reg reader report which provides advice and guidance for SMBs towards the use of SaaS based email and Office productivity tools.
Choosing a cloud hosting partner with confidence
Download Choosing a Cloud Hosting Provider with Confidence to learn more about cloud computing - the new opportunities and new security challenges.