- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过 Spotify 的 Applescript 库找出检测音轨变化的最佳方法。到目前为止,我已经尝试检查玩家位置——如果它等于 0,则它是一个新轨道,并且再次出现 Growl 通知。 (如果有人重新开始歌曲等,这通常不起作用)
我想知道是否更合理的方法是运行一个空闲的 iTunes 脚本并每隔几秒钟检查当前轨道名称的变化。我担心这可能有点像 pig 的内存。我也无法使此代码起作用。
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
最佳答案
我已经编写了一个小脚本,因为 Spotify 不支持 Growl 1.3。
编程不是很好,但我认为,通知很花哨 ;)
set delay_time to 1
-- register growl
tell application "Growl"
set the allNotificationsList to {"SpotifyNewTrack"}
set the enabledNotificationsList to {"SpotifyNewTrack"}
register as application ¬
"Spotify" all notifications allNotificationsList ¬
default notifications enabledNotificationsList ¬
icon of application "Spotify"
end tell
set myspace to " "
set myspace2 to myspace & myspace
set myspace3 to myspace & myspace & myspace
set old_track_id to ""
set old_state to ""
repeat
try
set boolStarted to false
set boolPaused to false
-- main code
tell application "Spotify" to set track_id to id of current track
tell application "Spotify" to set theState to player state as string
if ((old_state is "stopped") or (old_state is "paused")) and theState is "playing" then set boolStarted to true
if (old_state is "playing") and theState is "paused" then set boolPaused to true
set old_state to theState
if (old_track_id is not track_id) or boolStarted or boolPaused then
tell application "Spotify"
set theTitle to name of the current track
set theArtist to artist of the current track
set theAlbum to album of the current track
set theDuration to duration of the current track
set theCount to played count of the current track
set theStarred to starred of the current track
set thePopularity to popularity of the current track
set theCover to artwork of the current track
set thePosition to player position
end tell
if theStarred then
set stringStarred to "♥" & myspace
else
set stringStarred to ""
end if
set stringPopularity to ""
repeat (thePopularity / 20 as integer) times
set stringPopularity to stringPopularity & "✭"
end repeat
repeat (5 - (thePopularity / 20 as integer)) times
set stringPopularity to stringPopularity & "✩"
end repeat
set theMinutes to round (theDuration / 60) rounding down
set theSeconds to round (theDuration - (theMinutes * 60))
if theSeconds < 10 then set theSeconds to "0" & theSeconds
set thePosMinutes to round (thePosition / 60) rounding down
set thePosSeconds to thePosition - (thePosMinutes * 60) as integer
if thePosSeconds < 10 then set thePosSeconds to "0" & thePosSeconds
set stringPos to thePosMinutes & ":" & thePosSeconds
if boolStarted or boolPaused then
set thePosMinutes to round (thePosition / 60) rounding down
set thePosSeconds to thePosition - (thePosMinutes * 60) as integer
if thePosSeconds < 10 then set thePosSeconds to "0" & thePosSeconds
set stringPos to thePosMinutes & ":" & thePosSeconds
end if
set growlTitle to theArtist & ":" & myspace2 & theTitle
set growlMessage to theAlbum & myspace & "||" & myspace & theMinutes & ":" & theSeconds & ¬
myspace & stringStarred & stringPopularity & " (" & thePopularity & ")" & myspace & theCount & "x"
if boolStarted then set growlTitle to growlTitle & myspace3 & "▶"
if boolPaused then set growlTitle to growlTitle & myspace3 & "❚❚"
-- save cover art
set f to open for access "Macintosh HD:tmp:spotify-artwork.tiff" with write permission
set eof of f to 0
write theCover to f
close access f
set thePercentage to (20 * thePosition / theDuration) as integer
set stringPercentage to ""
repeat (thePercentage - 1) times
set stringPercentage to stringPercentage & "·"
end repeat
set stringPercentage to stringPercentage & "◆"
if thePercentage is 0 then
repeat (19 - thePercentage) times
set stringPercentage to stringPercentage & "·"
end repeat
else
repeat (20 - thePercentage) times
set stringPercentage to stringPercentage & "·"
end repeat
end if
if boolStarted or boolPaused then
set growlTitle to growlTitle & myspace3 & stringPos & myspace3 & stringPercentage
end if
tell application "Growl" to notify with name ¬
"SpotifyNewTrack" title growlTitle description growlMessage ¬
application name ¬
"Spotify" image from location "/tmp/spotify-artwork.tiff"
end if
set old_track_id to track_id
end try
delay delay_time
end repeat
关于applescript - 在 Applescript 中监控 Spotify 轨道变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7642467/
还有人在用applescript吗,苹果把文档存档了,好久没更新语言了。这是否意味着语言已死? 最佳答案 自从苹果在 2016 年解散 Mac 自动化团队并(迟迟)解雇了负责它的产品经理以来,整个 A
我无法弄清楚如何检测 AppleScript 中按下的键以及如何延迟直到该键被释放。我想切换缩放,我拥有其他一切(我认为)。这是我当前的代码 on idle set ztoggle to 0
是否可以为使用 AppleScript 创建的应用程序保存某种设置? 设置应在脚本开始时加载,并在脚本结束时保存。 例子: if loadSetting("timesRun") then se
我正在尝试显示我选择的文件的扩展名。我做错了什么? set theFile to (choose file with prompt "Select a file to transfer:")
我正在尝试制作一个将在后台运行并且每周只在特定时间执行一次的 applescript,有什么建议吗? 最佳答案 您可能想要的是 idle handler .首次打开 AppleScript 应用程序时
我希望能够引用与 Controller 位于同一目录中的模型文件。 最初,它们位于项目的根文件夹中,但当它们被编译(使用 osacompile)时,它们都将位于 Controller.scptd/Co
我不知道如何使用 AppleScript,一开始我是如何让我的小 bash 脚本工作的,这超出了我的能力。我目前正在使用 AppleScript 来运行我的 bash 脚本,它工作得非常好。它在下面。
我有一系列 AppleScript 命令需要在一行 AppleScript 中实现。代码如下。 delay 2 tell application "System Events" to keystrok
在 VBA 中,用不同的子字符串替换子字符串非常容易,例如 objMsg.Body = Replace(objMsg.Body, ""在电子邮件正文中使用当前月份。我以前见过与此类似的问题,但它们已经
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我已被任命创建一个必须 当网页加载完后,显示一个对话框,显示"The webpage has finished loading." 确定当前正在下载的项目数量 对于数字1,我尝试做if the U
我有一个用于创建作业文件夹的 Applescript。 Applescript 要求提供项目名称和文件夹的存储位置。输入作业名称和文件夹位置后,脚本会创建主文件夹和四个子文件夹。 现在我希望脚本在当前
我有一个字符串,其中包含要删除的非法字符,但我不知道可能存在哪种字符。 我建立了一个我不希望被过滤的字符列表,并建立了这个脚本(来自我在网络上找到的另一个脚本)。 on clean_string(Th
我很困惑 - 我已经用谷歌搜索了一个小时,并尝试了大约十种不同形式的 set posixDirectory to POSIX path of (parent of (path to aFile) as
我在 Automator 中有一个小的 applescript: do shell script "osascript ~/Focus-On.scpt" delay 60 do shell scrip
我想打开一个默认为应用程序设置文件夹的文件夹: /Users/XXX/Library/Application Support/Tunnelblick/Configurations 我不想“硬编码”“X
我试图找出最前面的应用程序 x 是什么,运行脚本,然后使用 applescript 将 x 设置为最前面的应用程序。 tell application "System Events" set
有一个 AppleScript 方法: on displayError(theErrorMessage) display dialog theErrorMessage return "
我正在尝试编写一个脚本来记录当前应用程序、切换到另一个应用程序、执行一些任务并返回到原始应用程序。这就是我所拥有的 set currentApp to my getCurrentApp() activ
我正在尝试根据其文本使用 AppleScript 选择大纲的特定行。 这是我正在考虑的(但不起作用): repeat with aRow in rows of outline 1 of scroll
我是一名优秀的程序员,十分优秀!