MusicKit JS

(developer.apple.com)

197 points | by tosh 1495 days ago

8 comments

  • kitsunesoba 1495 days ago
    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.
    • DelightOne 1495 days ago
      I'm kinda late to the party and I wonder. With streaming/playback, do you mean player control, playing sound or other missing features?

      https://developer.spotify.com/documentation/web-playback-sdk...

      • kitsunesoba 1494 days ago
        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.

        • DelightOne 1494 days ago
          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).

          • kitsunesoba 1494 days ago
            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

            • DelightOne 1492 days ago
              Good that they limit use to Premium users, making them not lose money.

              Thanks for the tip!

  • benbristow 1495 days ago
    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.
    • mrcarruthers 1495 days ago
      Well it's using promises, so you can just await those.

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

      • zodiakzz 1495 days ago
        The "user's cloudAlbums" example is awful. Might as well use callbacks if you aren't gonna chain promises to avoid callback hell.
        • tantalor 1495 days ago
          Where is that? Link?
          • zodiakzz 1495 days ago
            Under the "JavaScript Methods" heading

            https://developer.apple.com/documentation/musickitjs#3004817

                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
                });
    • lqs469 1495 days ago
      It looks like Apple doesn't want to use the NPM ecosystem.
  • jamsinclair 1495 days ago
    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.
    • rochak 1495 days ago
      This is also the reason why I couldn’t contribute to an open source project that required being part of Apple Developer Program.
    • saagarjha 1495 days ago
      Do any competing platforms have a similar API with a less imposing barrier?
      • mixedCase 1495 days ago
        Spotify and Deezer, OTOH.
    • cptskippy 1495 days ago
      I'm ok with it.

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

      • devwastaken 1495 days ago
        I'm curious how SSL is being abused.
        • cptskippy 1495 days ago
          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.

          • duskwuff 1495 days ago
            > 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.)

          • devwastaken 1495 days ago
            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.

            • cptskippy 1494 days ago
              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.

          • nine_k 1495 days ago
            Extended validation certificates still exist, and do require the paperwork.
            • tonyedgecombe 1495 days ago
              As do code signing certs (for Windows developers).
            • cptskippy 1494 days ago
              Yes and no one really gives a crap about them anymore.
  • PedroBatista 1495 days ago
    I don't get it.

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

    • duskwuff 1495 days ago
      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.
    • lqs469 1495 days ago
      Perhaps the place where you are most likely to see it is the showcase page for new Apple products, Just like ARkit before.
    • gcb0 1495 days ago
      This is the MID background music tag for IOS (as android users will likely not have an icloud account to begin with, or even if they have, i am sure apple login flow for those users will be annoying)

      I was expecting an app could do things like access to music data and do remixes or other things, but you can barely play/pause via their api.

  • parhamn 1495 days ago
    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.
    • GuiA 1495 days ago
      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.
      • echelon 1495 days ago
        They can do it once their library is 100% Netflix originals.
        • smnrchrds 1495 days ago
          Tangential questions: has anyone done an analysis of share of originals in Netflix library as a function of time?
  • staticvar 1495 days ago
    You can play your iTunes library online now?
    • dewey 1495 days ago
      Your Apple Music library, this SDK already exists for years so it’s not exactly new.
      • crooked-v 1495 days ago
        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.
  • gyrgtyn 1495 days ago
    can a web app play music and run js with the screen off?
  • dawnerd 1495 days ago
    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
    • mackey 1495 days ago
      Apple did not buy Rdio, they basically went out of business and sold what they left to Pandora.
    • holler 1495 days ago
      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.