我是 Spotify 的高级订阅用户,也是一名痴迷于提高生产力的极客。
有一件事让我很恼火,那就是没有键盘快捷键来“加星标”曲目(即将曲目添加到收藏夹)。我喜欢在工作时打开 Spotify 电台,但每当我听到一首我非常喜欢的歌曲时,我都必须切换到曲目并右键单击,然后选择“加星标”。
是否有任何 Spotify 调整/插件可以让我使用键盘快捷键为曲目“加注星标”?
答案1
当然,使用自动热键!
安装完成后,将其放入 AutoHotkey.ahk 文件中:
#*::
WinWait, Spotify,
IfWinNotActive, Spotify, , WinActivate, Spotify,
WinWaitActive, Spotify,
MouseClick, left, 79, 90
Sleep, 100
MouseClick, left, 256, 152
Sleep, 100
return
这将添加一个 Win+Asterisk 热键,用于为正在播放的曲目加星号。
您可能还对其他内容感兴趣Spotify 快捷方式用于 AutoHotkey。
答案2
我尝试了其他 Autohotkey 快捷键,但对我不起作用(只是切换到 spotify 并点击了两个死点)。我设计了以下方法,只要您选择了“大型正在播放的艺术品”,该方法就可以起作用:
CoordMode, Mouse, Relative
;star currently playing
+^l::
SpotifyWinHeight = 1050 ;set to 1080 - 30 for small taskbar size, just in case WinGetPos doesn't work for some reason
WinGetActiveTitle, CurWindow
WinActivate Spotify
WinWaitActive Spotify
WinGetPos, , , , SpotifyWinHeight, Spotify
; X Y W H, we don't care about anything but height
RightClickTarget := SpotifyWinHeight - 250
ContextMenuTarget := RightClickTarget + 110
MouseMove, 100, %RightClickTarget%
Click Right
Sleep, 50
MouseMove, 180, %ContextMenuTarget%
Sleep, 50
Click
WinActivate %CurWindow%
return
它执行以下操作:
- 存储当前活动窗口
- 激活 Spotify
- 计算点击专辑封面相对于 spotify 窗口的偏移量
- 为当前正在播放的内容加注星标(右键单击图片,左键单击星标)
- 恢复之前处于活动状态的所有窗口
它并不完美(如果由于某种原因,Spotify 大部分时间都悬在屏幕右侧,你可能会不高兴),但在大多数情况下都能完成工作。
答案3
加星标已不再是事儿。
到这里以获取更新后的问答。
下面是旧答案...
这是另一个自动热键解决方案。有自由的评论。此外,如果需要,AutoHotkey 文档和论坛也是学习的好地方。
按下 Control+Shift+* 将为当前歌曲加星标。
这个脚本的一个关键特性是它会检查这首歌是否已经加星标,如果是的话就不再检查。
^+*::
spotify = ahk_class SpotifyMainWindow
IfWinExist, %spotify%
{
;Store active window and mouse position.
WinGetActiveTitle, activeWindow
MouseGetPos x, y, winID
;Activate Spotify.
WinActivate %spotify%
WinWaitActive %spotify%
;Right click near the song title in the "Now Playing" box.
WinGetPos, , , , spotifyHeight, %spotify%
MouseClick, Right, 100, spotifyHeight - 70, 1, 0
;Get the contents of the context menu.
WinWait, ahk_class #32768
SendMessage, 0x1E1 ; MN_GETHMENU
allContextMenuInfo := ErrorLevel
;The "Star" command is the 5th menu item.
;If the song is Unstarred the text is Star, and vice versa. But sometimes some wierd characters are included.
;The only reliable way I found is to check if the first letter is S.
menuText_StarUnstar := GetContextMenuItemText(allContextMenuInfo, 5)
StringGetPos, positionOfS, menuText_StarUnstar, S
;If S is the first letter, star the song.
notStarred := (%positionOfS% = 0)
If notStarred {
;Arrow down to the Star menu item and press enter.
Send {Down}{Down}{Down}{Down}{Down}{Enter}
} Else {
;Just close the context menu.
Send {Escape}
}
;Restore original window and mouse position.
WinActivate ahk_id %winID%
MouseMove %x%, %y%
}
Return
;Conext menu helper function.
GetContextMenuItemText(hMenu, nPos)
{
length := DllCall("GetMenuString"
, "UInt", hMenu
, "UInt", nPos
, "UInt", 0 ; NULL
, "Int", 0 ; Get length
, "UInt", 0x0400) ; MF_BYPOSITION
VarSetCapacity(lpString, length + 1)
length := DllCall("GetMenuString"
, "UInt", hMenu
, "UInt", nPos
, "Str", lpString
, "Int", length + 1
, "UInt", 0x0400)
return lpString
}
答案4
你也可以尝试我的Spotify 应用程序 Twinkle,这是一个独立于平台和 GUI 布局的解决方案,只需单击即可启动 Spotify 歌曲。