Bất kỳ tinh chỉnh Spotify nào với phím tắt bàn phím để theo dõi 'sao'?


20

Tôi là một thuê bao cao cấp của Spotify và một người đam mê năng suất ám ảnh.

Một điều thực sự làm tôi khó chịu là không có phím tắt để 'sao' một bản nhạc (Tức là thêm một bản nhạc vào mục yêu thích). Tôi thích bật radio Spotify trong khi tôi đang làm việc và thỉnh thoảng tôi phải nhấn và nhấp chuột phải vào bản nhạc rồi chọn 'Star' bất cứ khi nào tôi nghe một bài hát tôi thực sự thích.

Có bất kỳ tinh chỉnh / plugin Spotify nào ngoài đó sẽ cho phép tôi 'sao' các bản nhạc bằng phím tắt không?


Bạn có đang sử dụng trình phát Windows Media không?
Diogo

Không, chỉ Spotify
Eddy

Câu trả lời:


3

Chắc chắn, sử dụng AutoHotkey !

Khi bạn đã cài đặt xong, hãy đặt nó vào tệp AutoHotkey.ahk của bạn:

#*::
WinWait, Spotify, 
IfWinNotActive, Spotify, , WinActivate, Spotify, 
WinWaitActive, Spotify, 
MouseClick, left,  79,  90
Sleep, 100
MouseClick, left,  256,  152
Sleep, 100
return

Điều này thêm một phím nóng Win + Asterisk sẽ gắn sao cho bản nhạc đang phát.

Bạn cũng có thể quan tâm đến các phím tắt Spotify khác cho AutoHotkey.


1
vấn đề là spotify cũng có cùng vị trí khi nhấp vào UNSTAR một bản nhạc. vì vậy phải trở nên tuyệt vời khi bạn bỏ qua một bản nhạc được gắn dấu sao bằng phương pháp ahk
ms. mann

2

Tôi đã thử các phím tắt Autohotkey khác và nó không hoạt động với tôi (chỉ cần chuyển sang spotify và nhấp vào hai điểm chết). Tôi đã nghĩ ra những điều sau, hoạt động miễn là bạn đã chọn "Tác phẩm nghệ thuật chơi lớn bây giờ":

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

Nó làm như sau:

  • Cửa hàng hiện đang hoạt động
  • Kích hoạt Spotify
  • Tính toán bù đắp cho nhấp vào tác phẩm nghệ thuật album liên quan đến cửa sổ spotify
  • Sao những gì hiện đang phát (thông qua tác phẩm nghệ thuật nhấp chuột phải, nhấp chuột trái Sao)
  • Khôi phục bất kỳ cửa sổ nào đã hoạt động trước khi tất cả điều này

Nó không hoàn hảo (có lẽ sẽ không vui nếu vì một lý do nào đó bạn đã phát hiện ra việc treo phần lớn màn hình của bạn sang bên phải), nhưng hoàn thành công việc trong hầu hết các trường hợp.


Điều đó thật tuyệt! Cảm ơn. Một cải tiến sẽ là đọc mục menu ngữ cảnh cuối cùng để xem nó có đọc Unstar không và nếu có thì đừng nhấp vào nó. Nếu tôi nhận được nó tôi sẽ quay lại và đăng.
GollyJer

2

Ngôi sao không còn là một điều.

Tới đây để hỏi đáp cập nhật.


Câu trả lời cũ dưới đây ...

Đây là một giải pháp AutoHotkey khác . Có ý kiến ​​tự do. Ngoài ra, tài liệu và diễn đàn AutoHotkey là nơi tuyệt vời để tìm hiểu nếu muốn.

Nhấn Control + Shift + * sẽ gắn dấu sao cho bài hát đang hoạt động.
Một tính năng chính của kịch bản này là nó kiểm tra xem bài hát đã được gắn dấu sao chưa và để nó một mình nếu có.

^+*::
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
}

Điều này không còn hoạt động. Xem giải pháp của tôi.
tig

0

Tôi không có đại diện để đưa ra nhận xét này cho câu trả lời của GollyJer, nhưng tôi nhận thấy khi cố gắng sử dụng tập lệnh đó có vấn đề với tổ hợp phím {down}, bằng cách nào đó sẽ khiến bài hát được tô sáng trong danh sách phát xuống , thay vì di chuyển xuống trên menu. Tôi đã sửa đổi nó để nhấp chuột vào mục menu "Sao" thay vì sử dụng các phím, nó có vẻ hoạt động khá tốt. Tôi cũng đã chỉnh sửa nó để thu nhỏ Spotify trước khi nó quay trở lại cửa sổ bạn đang sử dụng nếu nó được thu nhỏ để bắt đầu.

^+*::
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

Các giải pháp phụ thuộc vào việc có lệnh "Star" không còn hoạt động nữa ... không còn lệnh Star nữa, nhưng "Starred" là một mục thư mục có thể được thêm vào. Kịch bản này làm điều này.

; 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 không còn có "ngôi sao" nữa và dường như tôi không thể truy xuất nội dung của menu ngữ cảnh nữa, vì vậy phương pháp này nhìn vào một màu pixel trong menu ngữ cảnh và sử dụng các phím mũi tên để chọn. Hoạt động nếu tối đa hóa, tối thiểu hóa và nếu album nghệ thuật lớn hay nhỏ.

^+*::
{
    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
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.