Adakah Spotify tweak dengan pintasan keyboard ke trek 'bintang'?


20

Saya pelanggan premium Spotify dan geek produktivitas yang obsesif.

Satu hal yang benar-benar mengganggu saya adalah tidak ada pintasan keyboard untuk 'membintangi' trek (Yaitu menambahkan trek ke favorit). Saya suka meninggalkan radio Spotify saat saya bekerja dan setiap saat saya harus men-klik dan klik kanan di trek lalu pilih 'Bintang' setiap kali saya mendengar lagu yang saya sukai.

Apakah ada tweak / plugin Spotify di luar sana yang memungkinkan saya untuk 'membintangi' trek dengan pintasan keyboard?


Apakah Anda menggunakan Windows Media player?
Diogo

Tidak, hanya Spotify
Eddy

Jawaban:


3

Tentu, gunakan AutoHotkey !

Setelah Anda menginstalnya, letakkan ini di file AutoHotkey.ahk Anda:

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

Ini menambahkan tombol pintas Win + Asterisk yang akan membintangi trek yang sedang diputar.

Anda juga mungkin tertarik dengan pintasan Spotify lainnya untuk AutoHotkey.


1
Masalahnya adalah spotify itu juga memiliki lokasi yang sama ketika mengklik untuk UNSTAR trek. jadi harus berhati-hati jika Anda menghapus bintang pada trek yang berbintang menggunakan metode ahk
ms. mann

2

Saya mencoba pintasan Autohotkey lainnya dan itu tidak berhasil untuk saya (hanya beralih ke spotify dan mengklik dua titik mati). Saya merancang yang berikut ini, yang berfungsi selama Anda telah memilih "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

Ini melakukan hal berikut:

  • Toko jendela saat ini aktif
  • Aktifkan Spotify
  • Hitung offset untuk mengklik relatif artwork album ke jendela spotify
  • Membintangi apa yang sedang diputar (melalui karya seni klik kanan, klik Bintang kiri)
  • Kembalikan jendela apa pun yang aktif sebelum semua ini

Ini tidak sempurna (mungkin tidak akan senang jika karena alasan tertentu Anda telah menggantung sebagian besar layar Anda di sebelah kanan), tetapi menyelesaikan pekerjaan dalam banyak kasus.


Ini bagus! Terima kasih. Perbaikan adalah dengan membaca item menu konteks terakhir untuk melihat apakah itu membaca Unstar, dan jika demikian jangan klik. Jika saya dapat, saya akan kembali dan memposting.
GollyJer

2

Berbintang bukan lagi benda.

Buka di sini untuk tanya jawab.


Jawaban lama di bawah sini ...

Berikut ini solusi AutoHotkey lainnya. Ada komentar liberal. Juga, dokumentasi dan forum AutoHotkey adalah tempat yang bagus untuk belajar jika diinginkan.

Menekan Control + Shift + * akan membintangi lagu yang aktif.
Fitur utama dari skrip ini adalah memeriksa apakah lagu tersebut sudah dibintangi dan dibiarkan begitu saja.

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

Ini tidak lagi berfungsi. Lihat solusi saya.
tig

0

Saya tidak memiliki perwakilan untuk mengomentari jawaban GollyJer, tetapi saya perhatikan ketika mencoba menggunakan skrip itu bahwa ada masalah dengan penekanan tombol {bawah} yang entah bagaimana akan membuatnya memindahkan lagu yang disorot di daftar putar ke bawah. , bukannya bergerak ke bawah pada menu. Saya memodifikasinya untuk melakukan klik mouse pada entri menu "Bintang" alih-alih menggunakan tombol, sepertinya berfungsi cukup baik. Saya juga mengeditnya untuk meminimalkan Spotify sebelum membalik kembali ke jendela yang Anda gunakan jika itu diperkecil untuk memulai.

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

Solusi yang bergantung pada adanya perintah "Bintang" tidak lagi berfungsi ... tidak ada lagi perintah Bintang, tetapi "Berbintang" adalah item folder yang dapat ditambahkan. Script ini melakukan ini.

; 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 tidak lagi memiliki "bintang", dan sepertinya saya tidak dapat lagi mengambil konten dari menu konteks, jadi metode ini melihat warna piksel dalam menu konteks dan menggunakan tombol panah untuk memilih. Berfungsi jika dimaksimalkan, diminimalkan, dan jika seni album besar atau kecil.

^+*::
{
    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
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.