Hacker News new | past | comments | ask | show | jobs | submit login
MusicKit JS (developer.apple.com)
197 points by tosh 34 days ago | hide | past | web | favorite | 42 comments

Props to Apple for releasing this. The way Spotify has handled the deprecation of libspotify without a proper replacement and removing streaming/playback from their other SDKs has been extremely disappointing.

I'm kinda late to the party and I wonder. With streaming/playback, do you mean player control, playing sound or other missing features?


libspotify and the old iOS Spotify SDK used to provide the ability to stream and play songs in your app, without having to play through a Spotify device or backgrounded Spotify app. This was particularly great in the case of libspotify because it was written in C, making it easy to bind to whichever language you preferred. It was complete enough to write an entire alternative client with.

It looks like this web playback SDK works by creating a local Spotify Connect device to play to, which I guess would technically work, but it’d be much nicer if it just directly played songs as libspotify did and now MusicKit JS does.

Hmm that sounds indeed much better! Sadly not C, but cross-platform JavaScript is still nice to have.

Is it possible to embed this in native apps with an embedded browser? Hmm sounds complicated, or is there a different way to integrate this (using the apis the library uses).

Embedding just the web player in native apps would be a pain due to communication between the native and web layer. If you just did the whole thing in JS (electron, etc) you’re barely any better off than the official client in terms of resource consumption, defeating much of the point of building an alternative client.

There are reverse engineered libraries available (mainly librespot[1]) but they come with the caveat of violating the EULA and risking the accounts used with it. AFAIK Spotify hasn’t banned anybody for using it yet, but it’s always a possibility.

[1] https://github.com/librespot-org/librespot

Good that they limit use to Premium users, making them not lose money.

Thanks for the tip!

Doesn’t seem like there’s an NPM package. Would be better if you could import it with Webpack and use await rather than callbacks etc.

Well it's using promises, so you can just await those.

But agreed, the documentation looks like it was written in 2014/2015.

The "user's cloudAlbums" example is awful. Might as well use callbacks if you aren't gonna chain promises to avoid callback hell.

Where is that? Link?

Under the "JavaScript Methods" heading


    music.authorize().then(function() {
        music.api.library.albums.then(function(cloudAlbums) {
            // user's cloudAlbums

    Should be:

    music.authorize().then(function() {
        return music.api.library.albums;
    }).then(function (cloudAlbums) {
        // user's cloudAlbums

It looks like Apple doesn't want to use the NPM ecosystem.

A 99 USD commercial web API. This one, and their other endpoints, require being part of paid Apple Developer program. I understand, but it's frustrating if you're wanting to play around or use in free open source.

This is also the reason why I couldn’t contribute to an open source project that required being part of Apple Developer Program.

Do any competing platforms have a similar API with a less imposing barrier?

Spotify and Deezer, OTOH.

I'm ok with it.

It deincentivizes abuse not unlike how SSL originally worked before it became a farming operation.

I'm curious how SSL is being abused.

Once upon a time businesses had to submit paper work verifying their business to a registrar to get an SSL cert. It wasn't just about encryption but also identity.

I remember as late as 2004 trying to scrounge up copies of our business license to fax or mail into our registrar.

Today the SSL cert has lost it's identity aspect and is just a sign of secure communication, not trusted.

> Once upon a time businesses had to submit paper work verifying their business to a registrar to get an SSL cert. It wasn't just about encryption but also identity.

And those policies made it impossible for personal and hobbyist sites to use secure communications, while doing very little to actually prevent abuse. (Most of the apparent "success" of these policies was simply because the motivations for abuse were lower at the time.)

SSL was never a sign of trust. That's what people made up. The algorithm has no intention of 'trust'.

Ease of SSL certs provides significantly better protection from threats between you and legitimate sites than potential illigitimate sites.

Originally SSL required identity verification and financial costs were very high.

Fraudulent SSL certs weren't a thing because the barrier to entry way so high and the rewards for spoofing a site were low since e-commerce was insignificant.

Extended validation certificates still exist, and do require the paperwork.

As do code signing certs (for Windows developers).

Yes and no one really gives a crap about them anymore.

I don't get it.

What's the use for this? ( in a mainstream product way, not in some cool personal private project way)

One real-world use case is on Genius.com, where it can be used to play songs (or previews, for users without Apple Music) while reading an analysis of their lyrics.

Perhaps the place where you are most likely to see it is the showcase page for new Apple products, Just like ARkit before.

I've always wondered why Netflix and all don't have clip widgets that you can link/embed on other sites. It is essentially free mass embedded paywalls.

I can see the short term benefit, but inevitably some big content distributor would want to opt out on condition of providing their content to Netflix due to some disadvantage they perceive with it. From there more and more content providers would want to opt out (“Disney does it, we should do it too because it makes us more like Disney”) and then the feature becomes useless and people who use it get mad.

They can do it once their library is 100% Netflix originals.

Tangential questions: has anyone done an analysis of share of originals in Netflix library as a function of time?

You can play your iTunes library online now?

Your Apple Music library, this SDK already exists for years so it’s not exactly new.

If you have "Sync Library" turned on (the feature's gone through several renames by now), it will also let you play local mp3s that have been uploaded.

can a web app play music and run js with the screen off?

About time. Rdio has such an amazing embed api (I built the JS api for it at the time and a site that was really heavily used). Total shame when Apple bought and shut them down. Maybe I can bring that old site out from the dead. Hmm

Apple did not buy Rdio, they basically went out of business and sold what they left to Pandora.

Hmm it's been a while. I don't know why Apple stuck in my brain. Maybe it was another service similar...

But still, I miss rdio.

Oh very likely. I don’t really remember the name but they interface looks so familiar.

I used to love using Rdio and thought their site was the best designed music app at the time! Was bummed when it shut down.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact