title: Monitoring Spotify track change in Applescript?
body: <p>I'm trying to figure out the best way via Spotify's Applescript library to detect a track change. So far, I've tried checking player position -- if it equals 0 it is a new track and the Growl notification appears again. (This didn't work mostly if someone started a song over, etc.)</p>
  
  <p>I'm wondering if the more plausible method is having an idle iTunes script running and checking the current track name for change every couple seconds. I'm worried this might be a bit of a hog memory-wise. I can't get this code to function either.</p>
  
  <pre><code>tell application "System Events"
      -- checks for instance of Growl and Spotify, does not run if both programs are not active
      set isRunning to ¬
          (count of (every process whose name is "Growl")) &gt; 0
      (count of (every process whose name is "Spotify")) &gt; 0
  end tell
  
  --establish empty variable to be filled by song title later
  global latest_song
  set latest_song to ""
  
  on idle
      tell application "Spotify"
          if player state is playing then
              copy name of current track to current_tracks_name
              -- runs match between last and current song titles
              if current_tracks_name is not latest_song then
                  copy current_tracks_name to latest_song
                  set who to artist of current track
                  set onwhat to album of current track
                  tell application "Growl"
                      -- Make a list of all the notification types 
                      -- that this script will ever send:
                      set the allNotificationsList to ¬
                          {"SpotifyNewTrack"}
  
                      -- Make a list of the notifications 
                      -- that will be enabled by default.      
                      -- Those not enabled by default can be enabled later 
                      -- in the 'Applications' tab of the growl prefpane.
                      set the enabledNotificationsList to ¬
                          {"SpotifyNewTrack"}
  
                      -- Register our script with growl.
                      -- You can optionally (as here) set a default icon 
                      -- for this script's notifications.
                      register as application ¬
                          "Spotify" all notifications allNotificationsList ¬
                          default notifications enabledNotificationsList ¬
                          icon of application "Spotify"
  
                      --  Send a Notification...
                      notify with name ¬
                          "SpotifyNewTrack" title ¬
                          current_tracks_name description ¬
                          who application name "Spotify"
                  end tell
              end if
              return 5
          end if
      end tell
  end idle
  </code></pre>
  
  <p>This might be a little complicated but any help is appreciated.</p>