I Hate Applescript, I Need Help

Posted on September 4, 2004
Filed Under get_enclosures |

I love most things about Macs, but I completely freaking hate Applescript. I’ve been trying to add to get_enclosures functionality someone had suggested, the ability to add the URLs from an RSS enclosure feed to a playlist as something to stream rather than download. That sounds simple enough, but after 30 minutes of farting around and reading the barely existent documentation I cannot figure out how to take the URL that I have, and add it to a playlist as a streaming entry. There is some magic syntax that I haven’t yet stumbled upon. I’ve been a professional programmer for most of a decade now, and trying to use the “user friendly” AppleScript language consistently drives me completely bonkers.

If any of you out there know how to do this, please throw me a bone and either email me or leave me the snippet in a comment. I have the URL, I have the playlist name, I just want this thing to be a streaming URL in that playlist. Note too that I’m not wanting to start it immediately, but have the entry added to the list.

Popularity: 31% [?]

Related Posts:
  • Audioblog for September 4, 2004
  • iPodder Part 2
  • You Tube Confession
  • Haters
  • Mac::iTunes
  • Comments

    3 Responses to “I Hate Applescript, I Need Help”

    1. Small Paul on June 28th, 2005 7:54 am

      As far as I can tell, you can’t create streaming tracks via AppleScript. I’ve tried:

      tell application “iTunes”
      make URL track with properties {address:”http://www.google.co.uk/”}
      end tell

      I immediately get “iTunes got an error: Can’t make class URL track”

      It may be that my PowerBook’s not connected to the internet, but it may just be that URL tracks can’t be created via AppleScript.

      For AppleScript help generally, I’d recommend ‘AppleScript: The Definitive Guide’ by Matt Neuberg (O’Reilly).

      AppleScript is an odd language, and most of the work you do with it is figuring out what objects each application makes available to you (and getting annoyed when they don’t make enough available). I’m currently hacked off that you can’t create smart playlists with AppleScript. It seems that iTunes started off very scriptable, but when they added Smart Playlists they just added a read-only boolean property (’smart’) to User Playlists, as opposed to exposing the whole lot to AppleScript.

      It makes me sad. Apple should care about the Power Users as well as everyone else. And doesn’t Automator rely on AppleScript? So isn’t everyone else screwed by all this too?

    2. alex yeh, applescripter on May 24th, 2006 1:46 am

      playlists, or streaming audio, are nothing more than a url within a data file with a .m3u name extension. So, all you have to do is have the applescript write the url into the file in a special way like so:

      set myurl to display dialog “what url would you like to stream?” default answer “”
      if myurl is false then
      tell me
      quit
      end tell
      else
      tell application “Finder”
      make new file with properties {name:”new playlist”, creator type:”ttxt”} at (path to desktop)
      set myfile to (path to desktop) & “new playlist” as text
      set openit to open for access myfile with write permission
      set mytext to “#EXTM3U” & return & “#EXTINF:,” & return & myurl
      write myurl to openit
      close access openit
      end tell
      end if

      Cheers!

    3. alex yeh, applescripter on May 24th, 2006 2:00 am

      okay, here’s the revised script. it works, i tested it.
      property desky : (path to desktop) as text
      on run
      set myurl to display dialog “what url would you like to stream?” default answer “”
      if myurl is false then
      tell me
      quit
      end tell
      else
      set myurl to text returned of myurl
      tell application “Finder”
      make new file with properties {name:”new playlist.m3u”, creator type:”????”, file type:”????”} at desktop
      set myfile to desky & “new playlist.m3u” as text
      set openit to open for access myfile with write permission
      set mytext to “#EXTM3U” & return & “#EXTINF:,” & return & myurl
      write mytext to openit
      close access openit
      end tell
      end if
      end run

    Leave a Reply