「スター」トラックへのキーボードショートカットを使用したSpotifyの調整


20

私はSpotifyのプレミアムサブスクライバーであり、強迫観念的な生産性マニアです。

本当に私を悩ますことの1つは、トラックに「スター」を付けるキーボードショートカットがないことです(つまり、お気に入りにトラックを追加します)。作業中はSpotifyラジオをオンにしておくのが好きです。たまにタブを押してトラックを右クリックし、本当に好きな曲が聞こえたら「スター」を選択する必要があります。

キーボードショートカットでトラックに「スター」を付けることができるSpotifyの調整/プラグインはありますか?


Windows Media Playerを使用していますか?
ディオゴ

いや、ただSpotify
Eddy

回答:


3

確かに、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ショートカットにも興味があるかもしれません。


1
問題は、トラックのUNSTARをクリックしたときにspotifyも同じ場所を持つことです。ahkメソッドを使用してスター付きトラックのスターを外す場合は注意してください
ms。マン

2

他のAutohotkeyショートカットを試してみましたが、うまくいきませんでした(スポットに切り替えて、2つのデッドスポットをクリックしました)。以下を考案しました。これは、「Large Now Playing Artwork」が選択されている限り機能します。

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ウィンドウに相対的なアルバムアートワークをクリックするためのオフセットを計算します
  • 現在再生しているものにスターを付けます(アートワークを右クリックし、スターを左クリックします)
  • このすべての前にアクティブだったウィンドウを復元します

それは完璧ではありません(何らかの理由で画面の右側にほとんどぶら下がっているのを見つけた場合はおそらく満足しません)が、ほとんどの場合は仕事を完了します。


これは素晴らしい!ありがとう。改善点は、最後のコンテキストメニュー項目を読んでUnstarと表示されるかどうかを確認し、そうでない場合はクリックしないことです。それに到達したら、戻って投稿します。
GollyJer

2

スター付きはもはや問題ではありません。

更新されたQ&Aをご覧ください


ここに古い答え...

別の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
}

これはもう機能しません。私の解決策をご覧ください。
ティグ

0

これをGollyJerの回答へのコメントに入れる担当者はいませんが、そのスクリプトを使用しようとすると、プレイリストで強調表示されている曲を下に移動させる{down}キーストロークに問題があることに気付きました、メニューを下に移動する代わりに。キーを使用する代わりに「スター」メニューエントリでマウスクリックを行うように変更しましたが、非常にうまく機能しているようです。また、Spotifyを編集して、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
}


0

「スター」コマンドの存在に依存するソリューションは機能しなくなりました...スターコマンドはなくなりましたが、「スター付き」はアイテムを追加できるフォルダーです。このスクリプトはこれを行います。

; 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

0

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
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.