Des ajustements de Spotify avec un raccourci clavier vers des pistes «vedettes»?

20

Je suis un abonné premium de Spotify et un obsédé de la productivité.

Une chose qui m'agace vraiment, c'est qu'il n'y a pas de raccourci clavier pour «mettre en vedette» une piste (c'est-à-dire ajouter une piste aux favoris). J'aime laisser la radio Spotify allumée pendant que je travaille et de temps en temps je dois tabuler et cliquer avec le bouton droit sur la piste, puis sélectionner `` Star '' chaque fois que j'entends une chanson que j'aime vraiment.

Existe-t-il des réglages / plugins Spotify qui me permettront de «mettre en vedette» les pistes avec un raccourci clavier?

Tourbillon
la source
Utilisez-vous le lecteur Windows Media?
Diogo
Non, juste Spotify
Eddy

Réponses:

3

Bien sûr, utilisez AutoHotkey !

Une fois que vous l'avez installé, placez-le dans votre fichier AutoHotkey.ahk:

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

Cela ajoute un raccourci clavier Win + Asterisk qui mettra en vedette la piste en cours de lecture.

Vous pouvez également être intéressé par d'autres raccourcis Spotify pour AutoHotkey.

seisyll
la source
1
Le problème est que Spotify a également le même emplacement lorsque vous cliquez sur pour annuler le suivi d'une piste. alors soyez prudent au cas où vous décompressez un morceau étoilé en utilisant la méthode ahk
ms. mann
2

J'ai essayé l'autre raccourci Autohotkey et cela n'a pas fonctionné pour moi (je suis juste passé à spotify et j'ai cliqué sur deux points morts). J'ai conçu ce qui suit, qui fonctionne tant que vous avez sélectionné "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

Il fait ce qui suit:

  • Stocke la fenêtre actuellement active
  • Active Spotify
  • Calcule les décalages pour cliquer sur la pochette de l'album par rapport à la fenêtre spotify
  • Met en vedette ce qui est en cours de lecture (via un clic droit sur l'illustration, un clic gauche sur l'étoile)
  • Restaure la fenêtre qui était active avant tout cela

Ce n'est pas parfait (ne sera probablement pas heureux si pour une raison quelconque vous avez Spotify suspendu principalement à votre écran vers la droite), mais fait le travail dans la plupart des cas.

RCIX
la source
C'est bien! Merci. Une amélioration serait de lire le dernier élément du menu contextuel pour voir s'il lit Unstar, et si c'est le cas, ne cliquez pas dessus. Si j'y arrive, je reviendrai et posterai.
GollyJer
2

La vedette n'est plus une chose.

Allez ici pour la Q & A mise à jour.


Ancienne réponse ci-dessous ici ...

Voici une autre solution AutoHotkey . Il y a des commentaires libéraux. En outre, la documentation et les forums AutoHotkey sont d'excellents endroits pour apprendre si vous le souhaitez.

Appuyez sur Ctrl + Maj + * pour lancer la chanson active.
Une caractéristique clé de ce script est qu'il vérifie si la chanson est déjà suivie et la laisse seule si c'est le cas.

^+*::
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
}
GollyJer
la source
Cela ne fonctionne plus. Voir ma solution.
tig
0

Je n'ai pas le représentant pour mettre cela dans un commentaire à la réponse de GollyJer, mais j'ai remarqué en essayant d'utiliser ce script qu'il y avait un problème avec les frappes {down} qui le feraient en quelque sorte déplacer la chanson en surbrillance dans la liste de lecture vers le bas , au lieu de descendre dans le menu. Je l'ai modifié pour faire un clic de souris sur l'entrée de menu "Etoile" au lieu d'utiliser les touches, cela semble assez bien fonctionner. Je l'ai également modifié pour minimiser Spotify avant qu'il ne revienne à la fenêtre que vous utilisiez s'il était minimisé au départ.

^+*::
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
}
Jordan
la source
0

Vous pouvez également essayer mon application Spotify, Twinkle , qui est une solution indépendante de la plate-forme et de la disposition de l'interface graphique pour regarder des chansons Spotify en un seul clic.

Erik R. Yverling
la source
0

Les solutions qui dépendent de l'existence d'une commande "Star" ne fonctionnent plus ... il n'y a plus de commande Star, mais "Starred" est un dossier auquel des éléments peuvent être ajoutés. Ce script fait cela.

; 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
tig
la source
0

Spotify n'a plus l '"étoile", et je n'arrive plus à récupérer le contenu du menu contextuel, donc cette méthode regarde une couleur de pixel dans le menu contextuel et utilise les touches fléchées pour sélectionner. Fonctionne si maximisé, minimisé et si la pochette d'album est grande ou petite.

^+*::
{
    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
}
Craig
la source