'스타'트랙에 키보드 단축키가있는 Spotify 조정이 있습니까?


20

저는 Spotify의 프리미엄 가입자이자 강박적인 생산성 전문가입니다.

정말 성가신 것은 트랙에 '별표를 달기'위한 키보드 단축키가 없다는 것입니다 (즐겨 찾기에 트랙 추가). 나는 일하는 동안 Spotify 라디오를 켜두는 것을 좋아하고 매번 트랙을 마우스 오른쪽 버튼으로 클릭하고 좋아하는 노래를들을 때마다 '별표'를 선택해야합니다.

키보드 단축키로 트랙에 '별표 표시'를 할 수있는 Spotify 조정 / 플러그인이 있습니까?


Windows Media Player를 사용하고 있습니까?
Diogo

아니, 그냥 Spotify
Eddy

답변:


3

물론, 오토 핫키를 사용하십시오 !

설치가 완료되면이를 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 단축키 에 관심이있을 수도 있습니다 .


1
문제는 spotify가 트랙을 UNSTAR로 클릭 할 때 동일한 위치를 가지고 있다는 것입니다. 그래서 당신은 AHK 방법을 사용하여 별표 트랙 별표 제거 becareful 넣다에 도착
밀리. mann

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 창을 기준으로 앨범 아트 워크를 클릭하기위한 오프셋을 계산합니다.
  • 현재 재생중인 별표 표시 (오른쪽 클릭 아트웍을 통해, 왼쪽 클릭 별표)
  • 이 모든 전에 활성화 된 모든 창을 복원

완벽하지는 않지만 (어떤 이유로 화면 오른쪽에 매달려있는 것을 발견하면 행복하지 않을 것입니다) 대부분의 경우 작업을 수행합니다.


대단해! 감사. 마지막 상황에 맞는 메뉴 항목을 읽고 별표가 표시되지 않는지 확인하고 클릭하지 않는 것이 개선되었습니다. 내가 도착하면 돌아와서 게시 할 것입니다.
GollyJer

2

별표는 더 이상 문제가 아닙니다.

업데이트 된 Q & A를 보려면 여기이동하십시오 .


아래의 오래된 답변 ...

또 다른 오토 핫키 솔루션이 있습니다. 자유로운 의견이 있습니다. 또한 오토 핫키 문서와 포럼은 원하는 경우 배울 수있는 좋은 장소입니다.

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
}

더 이상 작동하지 않습니다. 내 솔루션을 참조하십시오.
tig

0

나는 이것을 GollyJer의 답변에 대한 논평에 넣을 담당자가 없지만, 그 스크립트를 사용하려고 할 때 {down} 키 입력에 문제가 있음을 발견했습니다. 메뉴에서 아래로 이동하는 대신 키를 사용하는 대신 "Star"메뉴 항목에서 마우스 클릭을 수행하도록 수정했습니다. 꽤 잘 작동하는 것 같습니다. 또한 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.