¿Algún ajuste de Spotify con atajo de teclado para pistas 'estrella'?

20

Soy un suscriptor premium de Spotify y un obsesivo friki de la productividad.

Una cosa que realmente me molesta es que no hay un atajo de teclado para 'marcar' una pista (es decir, agregar una pista a favoritos). Me gusta dejar la radio de Spotify encendida mientras estoy trabajando y de vez en cuando tengo que presionar y hacer clic derecho en la pista y luego seleccionar 'Estrella' cada vez que escucho una canción que realmente me gusta.

¿Existen algunos ajustes / complementos de Spotify que me permitan 'destacar' las pistas con un atajo de teclado?

Remolino
fuente
¿Estás usando el reproductor de Windows Media?
Diogo
No, solo Spotify
Eddy

Respuestas:

3

¡Claro, usa AutoHotkey !

Una vez que lo tengas instalado, pon esto en tu archivo AutoHotkey.ahk:

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

Esto agrega una tecla de acceso rápido Win + Asterisk que marcará la pista que se está reproduciendo.

También puede estar interesado en otros accesos directos de Spotify para AutoHotkey.

seisyll
fuente
1
El problema es que Spotify también tiene la misma ubicación al hacer clic para DESACTIVAR una pista. así que tenga cuidado en caso de que desmarque una pista destacada utilizando el método ahk
ms. mann
2

Probé el otro atajo de Autohotkey y no funcionó para mí (simplemente cambié a spotify y hice clic en dos puntos muertos). Diseñé lo siguiente, que funciona siempre y cuando haya seleccionado "Obra de arte grande ahora jugando":

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

Hace lo siguiente:

  • Almacena la ventana actualmente activa
  • Activa Spotify
  • Calcula los desplazamientos para hacer clic en la carátula del álbum en relación con la ventana de spotify
  • Destaca lo que se está reproduciendo actualmente (a través del botón derecho del mouse, clic izquierdo en Estrella)
  • Restaura cualquier ventana que estuviera activa antes de todo esto

No es perfecto (probablemente no estará contento si por alguna razón tiene Spotify colgando principalmente de su pantalla a la derecha), pero hace el trabajo en la mayoría de los casos.

RCIX
fuente
¡Esto es genial! Gracias. Una mejora sería leer el último elemento del menú contextual para ver si dice Unstar, y si es así, no haga clic en él. Si llego a eso, volveré y publicaré.
GollyJer
2

Estrellado ya no es una cosa.

Vaya aquí para las preguntas y respuestas actualizadas.


Antigua respuesta a continuación aquí ...

Aquí hay otra solución AutoHotkey . Hay comentarios liberales. Además, la documentación y los foros de AutoHotkey son excelentes lugares para aprender si lo desea.

Al presionar Control + Shift + * aparecerá la canción activa.
Una característica clave de este guión es que comprueba si la canción ya está protagonizada y la deja sola si es así.

^+*::
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
fuente
Esto ya no funciona. Mira mi solución.
tig
0

No tengo el representante para poner esto en un comentario a la respuesta de GollyJer, pero cuando traté de usar ese guión noté que había un problema con las pulsaciones de teclas {down} que de alguna manera lo harían mover la canción resaltada en la lista de reproducción hacia abajo , en lugar de moverse hacia abajo en el menú. Lo modifiqué para hacer clic con el mouse en la entrada del menú "Estrella" en lugar de usar las teclas, parece que funciona bastante bien. También lo edité para minimizar Spotify antes de que vuelva a la ventana que estaba usando si se minimizó para empezar.

^+*::
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
}
Jordán
fuente
0

También puedes probar mi aplicación Spotify, Twinkle , que es una plataforma y una solución independiente de diseño de GUI para mirar canciones de Spotify con un solo clic.

Erik R. Yverling
fuente
0

Las soluciones que dependen de que haya un comando "Star" ya no funcionan ... ya no hay un comando Star, pero "Starred" es una carpeta a la que se pueden agregar elementos. Este script hace esto.

; 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
fuente
0

Spotify ya no tiene la "estrella", y parece que tampoco puedo recuperar el contenido del menú contextual, por lo que este método observa un color de píxel en el menú contextual y usa las teclas de flecha para seleccionar. Funciona si está maximizado, minimizado y si la carátula del álbum es grande o pequeña.

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