Herhangi bir Spotify, 'yıldız' parçalarına klavye kısayolu olan herhangi bir tweaks?


20

Spotify'ın premium bir abonesi ve takıntılı bir verimlilik geekiyim.

Beni gerçekten sinirlendiren bir şey, bir parçayı 'yıldız' yapmak için kullanılan bir klavye kısayolu olmamasıdır (yani, favorilere bir parça ekleyin). Çalışırken Spotify radyoyu açık bırakmayı seviyorum ve şimdi ve tekrar tekrar izlemeliyim ve parçayı sağ tıklayıp sonra gerçekten sevdiğim bir şarkıyı duyduğumda 'Yıldız'ı seçin.

Dışarıda herhangi bir Spotify tweaks / eklentisi var mı? Klavye kısayoluyla parçaları 'yıldızlamamı' sağlayacak.


Windows Media player kullanıyor musunuz?
Diogo

Hayır, sadece Spotify
Eddy

Yanıtlar:


3

Elbette, AutoHotkey'i kullanın !

Kurduktan sonra, bunu AutoHotkey.ahk dosyanıza koyun:

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

Bu, çalan parçayı başlatacak bir Win + Asterisk kısayol tuşu ekler.

AutoHotkey için diğer Spotify kısayolları da ilginizi çekebilir .


1
Sorun, spotify'ın bir parçayı UNSTAR'a tıklatırken de aynı konuma sahip olmasıdır. böylece ahk yöntemi kullanarak bir yıldız işaretli parçayı yıldızını kaldırmak fixated örtmek lazım
ms. mann

2

Diğer Autohotkey kısayolunu denedim ve bu benim için işe yaramadı (sadece iki ölü noktada tespit edip tıklanmaya başladı). Seçtiğim "Büyük Şimdi Çalma Sanat eserini" seçtiğiniz sürece çalışan aşağıdakileri tasarladım:

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

Aşağıdakileri yapar:

  • Şu anda aktif olan pencereyi saklar
  • Spotify'ı etkinleştirir
  • Spotify penceresine göre albüm resmine tıklamak için ofsetleri hesaplar
  • Şu anda ne çaldığını yıldızlar (sağ tıkla resimle, sol tıkla Star ile)
  • Tüm bunlardan önce hangi pencerenin etkin olduğunu geri yükler

Mükemmel değil (bir nedenden ötürü çoğunlukla ekrandan sağa doğru asıldığını tespit ediyorsanız, muhtemelen mutlu olmaz), ancak çoğu durumda işi halleder.


Bu harika! Teşekkürler. Bir gelişme, Unstar okuyup okumadığını görmek için son bağlam menüsü öğesini okumak olacaktır, eğer öyleyse tıklamayın. Ona ulaşırsam geri gelip postalayacağım
GollyJer

2

Yıldızlı artık bir şey değil.

Güncelleştirilmiş soru-cevap için buraya gidin .


Buradaki eski cevap ...

İşte başka bir AutoHotkey çözümü. Liberal yorumlar var. Ayrıca, AutoHotkey dokümantasyonu ve forumları istenirse öğrenmek için harika yerlerdir.

Control + Shift + * tuşlarına basmak, aktif şarkıya yıldız ekler.
Bu betiğin en önemli özelliği, şarkının zaten yıldızlı olup olmadığını kontrol etmesi ve eğer öyleyse yalnız bırakmasıdır.

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

Bu artık işe yaramıyor. Çözümü gör.
tig

0

Bunu GollyJer'in cevabına yapılan bir yorumda yayınlayacak cevabım yok, ancak bu betiği kullanmaya çalışırken {down} tuş vuruşlarında bir şekilde şarkıyı aşağıya vurgulu şarkıyı aşağıya doğru hareket ettirecek bir sorun olduğunu fark ettim. , menüde aşağı hareket etmek yerine. Tuşları kullanmak yerine "Yıldız" menü girişine fare tıklaması yapmak için değiştirdim, oldukça iyi çalışıyor gibi görünüyor. Ayrıca, Spotify'ı baştan küçültülmüşse kullandığınız pencereye geri dönmeden önce küçültmek için de düzenlemiştim.

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

Orada bir "Yıldız" komutu olmasına bağlı çözümler artık işe yaramıyor ... artık bir Yıldız komutu yok, ancak "Yıldızlı" eklenebilecek bir klasör öğesidir. Bu komut dosyası bunu yapar.

; 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 artık "yıldız" a sahip değil ve içerik menüsünün içeriğini artık geri getiremiyorum, bu nedenle içerik menüsündeki piksel rengine bakıyor ve seçmek için ok tuşlarını kullanıyor. Büyütülmüş, küçültülmüş ve albüm resmi büyük veya küçükse çalışır.

^+*::
{
    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
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.