Slashdot Mirror


Controlling iTunes with Perl

EccentricAnomaly writes "brian d foy has created perl modules for controlling iTunes. His modules, Mac::iTunes and Apache::iTunes, can be found on the CPAN. Now perl mongers can run iTunes remotely via the command line or via a web interface on a Mac hooked-up to a nice stereo to use as a home or office jukebox. I shudder to think what else may be possible now that iTunes is in perl's clutches."

26 of 47 comments (clear)

  1. uh, aren't there other players? by gl4ss · · Score: 2

    aren't there other players for mac?
    or is itunes that good that you would rather use it through web interface than say, mpg123/whatevers the commandline player of the day?

    this sounds cool and all, but, like, porting xmms would have been cooler, right?(xmms runs pretty easily on osx, does it(why not if not?)?)

    --
    world was created 5 seconds before this post as it is.
    1. Re:uh, aren't there other players? by dirtmerchant · · Score: 2, Insightful

      iTunes is pretty much the best all-in-one mp3 there is for any OS. Its main appeal on Mac's though is the integration with the iPod.

    2. Re:uh, aren't there other players? by bdash · · Score: 2, Informative

      One thing that I really like about iTunes is its very easy to see which tracks belonging to which album, and which album belongs to which artist, using the browse mode. The smart playlists feature also means that simply adding a song by your favourite artist to your music library can make it appear in playlists whose criteria it matches.

    3. Re:uh, aren't there other players? by bdash · · Score: 3, Interesting

      When using Mac OS X I try as hard as possible to avoid 'ports' of *nix software. This is simply because unless a decent job has been done on the porting, the look and feel just does not fit with the rest of the system. To make a *nix application fit in with the look and feel of the system would require a substantial amount of modification to the code, sometimes enough that it would be easier to just start from scratch.

    4. Re:uh, aren't there other players? by goon+america · · Score: 4, Insightful
      iTunes is really just a fancy organizer for Quicktime. The Quicktime libraries are so big, and so useful that any multimedia app for the Mac uses them for everything.

      The Windows Media Player for OS 9 was "powered by Quicktime", hilariously enough.

    5. Re:uh, aren't there other players? by Melantha_Bacchae · · Score: 5, Informative

      bdash wrote:

      > When using Mac OS X I try as hard as possible to
      > avoid 'ports' of *nix software.

      Don't look now, but your hard drive has many ports of Unix software that were installed with OS X. But that is because OS X really is Unix.

      > This is simply because unless a decent job has
      > been done on the porting, the look and feel just
      > does not fit with the rest of the system. To
      > make a *nix application fit in with the look and
      > feel of the system would require a substantial
      > amount of modification to the code, sometimes
      > enough that it would be easier to just start
      > from scratch.

      It depends on how separate the user interface is from the rest of the code. If the user interface is well separated, you can just toss that, write a new one in Cocoa, and keep the behind the scenes code. If the program has no graphical user interface, such as say MySQL (an open source back end database program), you can do a fairly straight port.

      In this case they are talking about adding the ability to script iTunes with the Perl language the same as you would with AppleScript. No look and feel is involved, and if you don't know Perl you probably wouldn't be using it.

      Chief Tsujimori: "I won't let you get away. I will never let you escape."
      Godzilla elegantly lifts his tail skyward to give her the "finger", crashes it down on the water, and submerges.
      "Godzilla X Megagiras", 2000

    6. Re:uh, aren't there other players? by baryon351 · · Score: 2

      There are other players - a quick hunt for mp3 players at www.versiontracker.com shows up a good variety of ones which work, and fill various niches, however iTunes is one of those apps that's a well put-together mix of dead-simplicity and good functionality.

      xmms runs under OSX - but requires an XFree86 to display anything. mpg123 also runs, and runs well as a pure player.

      If a scripting addition to iTunes gives access to playlists and the organisation someone already has in place, I can see that being very useful.

  2. With a little help from AppleScript, I might add by djupedal · · Score: 5, Interesting

    The PERL needs AppleScript to talk to iTunes. It doesn't do it on it's own...been there and doing the same thing with PHP :)

    Check my gallery site that lets visitors also spy on my currently playing song, etc. I use PHP and MySQL to manage a Mac and Linux (2 box combo) image database. Just for fun, PHP, along w/AppleScript, pulls data from iTunes, while it supports image serving, uploading, resizing, etc. Ho Ho Ho

  3. using a hack for a hack on a hack, not a good hack by eht · · Score: 3, Funny

    the subject pretty much covers it completely

  4. Remote? by Trusty+Penfold · · Score: 4, Funny


    Controlling music remotely is only useful when there is a function to turn the volume to 11.

  5. Re:using a hack for a hack on a hack, not a good h by Atomizer · · Score: 2, Funny

    I think what you meant to say was:

    using a hack for a hack on a Mac, not a good hack

  6. Re:With a little help from AppleScript, I might ad by droleary · · Score: 3, Insightful

    The PERL needs AppleScript to talk to iTunes. It doesn't do it on it's own...been there and doing the same thing with PHP :)

    Yeah, the only problem is you're doing the same, tired "look what I can play" garbage. There has only been one really useful application of iTunes scripting: iSing, and even that is questionable if you survey your surroundings when the song is over. :-)

  7. For Darwin for OSX by jbolden · · Score: 2

    Because OSX has an entirely non standard Gui (from a Unix perspective) that isn't based on X; I kind of like to use the distinction

    For Darwin = Unix CLI or for Darwin/X
    For OSX = Aqua interface

    Fink for example ports to Darwin not to OSX.

    To take your MySQL example, it is not common for Mac applications to have a CLI management system. So a port to OSX IMHO should involve a full Aqua management console. I certainly agree that Fink (et al) have ported it quite well to Darwin.

    1. Re:For Darwin for OSX by jcr · · Score: 4, Informative

      Because OSX has an entirely non standard Gui (from a Unix perspective) that isn't based on X;

      Things change. Quartz/Aqua is now the the standard GUI for UNIX, since Mac OS X is far and away the most-numerous UNIX there is.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    2. Re:For Darwin for OSX by jbolden · · Score: 5, Insightful

      Well no:

      1) Used by only one vendor and is going to remain that way

      2) It is tied to a particular hardware model and thus is likely to be outdated within a decade

      3) It is not network transparent which has been a Unix feature on GUIs for 2 decades and on the system itself for 3 decades

      4) The vast majority of Unix apps don't support it

      5) If you include X windows servers running on PCs and dumb X terms I'm not sure it has more users than X so even your sole reason for considering it standard may not be.

    3. Re:For Darwin for OSX by jcr · · Score: 3, Interesting

      Well no:

      1) Used by only one vendor and is going to remain that way


      That one vendor is the UNIX volume leader.

      2) It is tied to a particular hardware model and thus is likely to be outdated within a decade

      No, Quartz is quite hardware-independent.

      3) It is not network transparent which has been a Unix feature on GUIs for 2 decades and on the system itself for 3 decades

      Ok, I'll give you that one. The benefit of Quartz 2d's rendering library living in the app's address space though, is increased 2-d rendering performance.

      4) The vast majority of Unix apps don't support it

      This will change. A lot of X-windows apps are getting new GUIs as we speak.

      5) If you include X windows servers running on PCs and dumb X terms I'm not sure it has more users than X so even your sole reason for considering it standard may not be.

      I'm not sure that X terms make much difference in the figures.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    4. Re:For Darwin for OSX by jbolden · · Score: 3, Insightful

      > No, Quartz is quite hardware-independent.

      I think you miss the point. Where are all the other GUIs from the early 90's (Windows 3.0/3.1 NT 3.51 Gui, the OS/2 gui, DRDos gui...?). All of these GUIs were not designed around a very open and abstract hardware process and thus were tied to very specific notions of how hardware would work. Aqua has the same problem. X conversely does not. X can easily support a 3D virtual reality GUI served up to 10,000 way parellel subsystems... if such things existed. Unix technologies tend to be designed to scale both up to faster system and into the future.

      > > The vast majority of Unix apps don't support it

      > This will change. A lot of X-windows apps are getting new GUIs as we speak.

      If this happens along with Unix apps considering OSX / Aqua their home platform that IMHO would make Aqua the Unix standard interface with X the "backwards compatabile" interface.

      > I'm not sure that X terms make much difference in the figures.

      I see a tremendous number of corporate desktops running PC X servers. There are still quite a few Unix/VMS/Z-OS apps served out via. X in the corporate world. In manufacturing I see dumb X terms all over the place. In these environment computers get damaged by user error and machinery too much to have their processing be local (as well as cost saving issues).

    5. Re:For Darwin for OSX by good+soldier+svejk · · Score: 3, Informative

      I think you miss the point. Where are all the other GUIs from the early 90's (Windows 3.0/3.1 NT 3.51 Gui, the OS/2 gui, DRDos gui...?). All of these GUIs were not designed around a very open and abstract hardware process and thus were tied to very specific notions of how hardware would work. Aqua has the same problem. X conversely does not. X can easily support a 3D virtual reality GUI served up to 10,000 way parellel subsystems... if such things existed. Unix technologies tend to be designed to scale both up to faster system and into the future.
      Can you be more specific? I'm not sure how mean this. Are you talking about the benefits of client server network transparency? Quartz (Aqua is essentially just the theme) is based on the same model. It is fully capable of network transparency. OpenStep and Rhapsody's DPS engines supported it. Apparently the hooks are still in there. I once saw them documented in detail on a GnuStep mailing list, but I can't google it and their archive does not seem to be searchable. I did find a mention of them on Ars Technica and Planet PDF. My Apple reps refuse to comment on whether Apple has plans for exploiting this capability.

      BTW, Apple continues to update and publish the OpenStep standard and Quartz remains OpenStep compliant. From the GnuStep FAQ:

      1.3.2 Is GNUstep following Changes to OpenStep and MacOSX?

      Yes, gnustep-base already contains the documented changes in the Foundation library. GNUstep aims to be compatible with both the OpenStep specification and with MacOS-X. It should be easy to write an application that compiles cleanly under both GNUstep and Cocoa.
      --
      It is cowardly, and a betrayal of whatever it means to be a Jew, to act as a white man

      -James Baldwin
  8. Re:With a little help from AppleScript, I might ad by kalidasa · · Score: 4, Insightful

    The original posting should have made this point, as my original reaction was "why use Perl rather than AppleScript"; reading the article, I see there is a good argument in favor of using Perl along with AppleScript, but I imagine I wasn't the first one to go to the page with that thought at the top of my mind.

  9. soundjam by zogger · · Score: 2

    --unless I'm mistaken, the guys who developed the itunes are the past developers of soundjam, the best, IMO, audio media player for classic mac. They folded and went to work for apple. I still use soundjam for inet radio on my old mac, much better than anything else I have used, including various quicktimes. I've tried them back to back on the same MP3 stream, no comparison.

    Don't have a newer mac so don't run osx and don't have an ipod so can't comment on any of those, but if it really IS the soundjam guys I imagine it's a superior product going by their past success.

    1. Re:soundjam by jcr · · Score: 2

      --unless I'm mistaken, the guys who developed the itunes are the past developers of soundjam, the best, IMO, audio media player for classic mac. They folded and went to work for apple.

      They didn't fold, Apple bought them.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
  10. Oroborus by jbolden · · Score: 2

    You might want to try Oroborus they have an Aqua theme. It ain't OSX but if you love Aqua and have to use X... The target audience is more OSX users who need to run some X apps rather than Unix users but still worth a look.

  11. Re:With a little help from AppleScript, I might ad by WatertonMan · · Score: 4, Interesting
    Just out of curiousity, how do these Perl scripts work if there is no user currently logged into OSX? After all iTunes works in a user mode. If you call the Perl script and no user is logged in, will it work?

    If this is the same code that was discussed over at O'Reilly you need to start tweaking how Apache or other things run.

    There was a discussion of this over at MacNN Forums as well.

  12. Re:With a little help from AppleScript, I might ad by djupedal · · Score: 3, Insightful

    PERL is not talking to iTunes. AppleScript handles that. All in all, a less than earth shattering event.

  13. Re:With a little help from AppleScript, I might ad by WatertonMan · · Score: 3, Interesting
    You miss the point. Applescript works with the Window Manager running which runs as a user. The problem is that if no one has logged in then iTunes can't run and the Perl script won't work. If you are running your Perl scripts from Apache this can cause problems. Further if you try to make it more robust you open up all sorts of security holes.

    Both links I provided discussed this in depth.

    I was curious if the Perl scripts mentioned were simply calling the same Applescripts and how they dealt with these issues. My sense was that they were variations on the similar Perl code discussed at the MacDev page at O'Reilly.

    Capiche?

  14. Re:With a little help from AppleScript, I might ad by pudge · · Score: 3, Informative
    Mac::AppleEvents / Mac::Glue allows it. Mac::AppleEvents is currently being ported to Mac OS X, but you can use it from MacPerl in Classic to talk to iTunes in Mac OS X in the meantime.
    use Mac::Glue;
    my $iTunes = new Mac::Glue 'iTunes';
    # optionally talk to another host
    # $iTunes->ADDRESS(eppc => 'iTunes', 'otherhost');

    my %track;
    my $name = $iTunes->prop(name => of => 'current track');
    $track{name} = $iTunes->get($name);

    $iTunes->pause;
    No AppleScript required or used, all raw Apple events, with the AppleScript *vocabulary* used (by parsing the aete resource to do the AppleScript->AE mapping, all done transparently and automatically, after simply dropping the target application on a droplet once). Hopefully, when it is ready for Mac OS X, it can be used as a more efficient and friendly alternative to AppleScript.

    Coming soon to Mac OS X box near you, as part of the already-released Mac::Carbon distribution. I am so gonna have fun with this when it is released ...