私はSpotifyのプレミアムサブスクライバーであり、生産性のオタクです。
私を本当に悩ませているのは、トラックに「スター」を付けるためのキーボードショートカットがないことです(つまり、お気に入りにトラックを追加します)。作業中はSpotifyラジオをオンのままにしておくのが好きで、時々タブを押してトラックを右クリックし、本当に好きな曲を聞くたびに[スター]を選択する必要があります。
キーボードショートカットでトラックに「スター」を付けることができるSpotifyの調整/プラグインはありますか?
確かに、使用してください AutoHotkey !
インストールしたら、これを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ホットキーが追加されます。
AutoHotkeyの他の Spotifyショートカット にも興味があるかもしれません。
ここにある古い答え...
ここに別の AutoHotkey ソリューションがあります。寛大なコメントがあります。また、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
}
他のAutohotkeyショートカットを試しましたが、うまくいきませんでした(spotifyに切り替えて、2つのデッドスポットをクリックしただけです)。私は次のことを考案しました。これは、「Large NowPlayingArtwork」を選択している限り機能します。
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 = ahk_class SpotifyMainWindow
IfWinExist, %spotify%
{
;Store active window and mouse position.
WinGet, MMX, MinMax, %spotify%
WinGetActiveTitle, activeWindow
MouseGetPos x, y, winID
;Activate Spotify.
WinActivate %spotify%
WinWaitActive %spotify%
;Get maximised status
WinGet, isMaximised, MinMax
;Clear any context menus
Send {Escape down}{Escape up}
;Right click near the song title in the "Now Playing" box.
WinGetPos, , , , spotifyHeight, %spotify%
MouseClick, Right, 44, spotifyHeight - (isMaximised = 1 ? 75 : 66), 1, 0
sleep 200
MouseMove 10,0, ,R
sleep 200
; Determine if the song is already added to your library or not
; Look at left Edge of the 'S' in Save to Your Library
; or the 'R' in Remove from Your Library
; 0x282828 is the background color of the menu
; if the background color is not present then the song is not in your library
PixelGetColor, pixelColor, 91, spotifyHeight - (isMaximised = 1 ? 129 : 119)
if (pixelColor = 0x282828) {
;Move up to 'Save to Your Library' and hit enter
loop, 1 {
Send {Up down}
sleep 50
Send {Up up}
sleep 50
}
Send {Enter down}
sleep 50
Send {Enter up}
sleep 50
} else {
; Already added, so close context menu
Send {Escape down}
sleep 50
Send {Escape up}
Sleep 50
}
;Restore original window and mouse position.
IfEqual MMX, -1, WinMinimize, %spotify%
WinActivate ahk_id %winID%
MouseMove %x%, %y%
}
Return
}
また、私の Spotify App、Twinkle を試すこともできます。これは、Spotifyの曲をシングルクリックで見つめるためのプラットフォームとGUIレイアウトに依存しないソリューションです。
これをGollyJerの回答へのコメントに入れる担当者がいませんが、そのスクリプトを使用しようとすると、{down}キーストロークに問題があり、プレイリストで強調表示されている曲が下に移動することに気付きました。 、メニューを下に移動する代わりに。キーを使用する代わりに「スター」メニューエントリでマウスクリックを行うように変更しましたが、非常にうまく機能しているようです。また、最初に最小化されていた場合に使用していたウィンドウに戻る前に、Spotifyを最小化するように編集しました。
^+*::
spotify = ahk_class SpotifyMainWindow
IfWinExist, %spotify%
{
WinGet, MMX, MinMax, %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.
MouseClick, Left, 20, -120, 1, 0,, R
} Else {
;Just close the context menu.
Send {Escape}
}
;Restore original window and mouse position.
IfEqual MMX, -1, WinMinimize, %spotify%
WinActivate ahk_id %winID%
MouseMove %x%, %y%
}
Return
;Context 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
}
「スター」コマンドがあることに依存するソリューションは機能しなくなりました...スターコマンドはなくなりましたが、「スター付き」はアイテムを追加できるフォルダーです。このスクリプトはこれを行います。
; Spotify "Star Song"
^+*::
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
;Open Add To... sub-menu
Send {A}
;The "Starred" command is the 2nd menu item. If the song is Starred it will be disabled.
Send {Down}{Enter}
;Restore original window and mouse position.
WinActivate ahk_id %winID%
MouseMove %x%, %y%
}
Return