SpotifyのApplescriptライブラリを介してトラックの変更を検出するための最良の方法を見つけようとしています。これまで、プレーヤーの位置を確認してみました。0に等しい場合は新しいトラックであり、Growl通知が再び表示されます。(これは、誰かが曲をやり直した場合など、ほとんど機能しませんでした。)
より妥当な方法は、アイドル状態のiTunesスクリプトを実行し、現在のトラック名の変更を数秒ごとにチェックすることであるかどうか疑問に思っています。私はこれが記憶の面でちょっとした豚かもしれないのではないかと心配しています。このコードも機能させることができません。
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")) > 0
(count of (every process whose name is "Spotify")) > 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
これは少し複雑かもしれませんが、どんな助けでもありがたいです。