Qualche modifica di Spotify con la scorciatoia da tastiera per le tracce "a stella"?


20

Sono un abbonato premium di Spotify e un maniaco della produttività ossessivo.

Una cosa che mi infastidisce davvero è che non esiste una scorciatoia da tastiera per "avviare" una traccia (ovvero aggiungere una traccia ai preferiti). Mi piace lasciare la radio Spotify accesa mentre lavoro e ogni tanto devo sorvolare e fare clic con il tasto destro sulla traccia, quindi selezionare "Star" ogni volta che sento una canzone che mi piace davvero.

Ci sono tweaks / plugin Spotify là fuori che mi permetteranno di "star" tracce con una scorciatoia da tastiera?


Stai usando Windows Media Player?
Diogo,

No, solo Spotify
Eddy,

Risposte:


3

Certo, usa AutoHotkey !

Una volta installato, inseriscilo nel file AutoHotkey.ahk:

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

Questo aggiunge un tasto di scelta rapida Win + Asterisk che segnerà il brano in riproduzione.

Potresti anche essere interessato ad altre scorciatoie Spotify per AutoHotkey.


1
il problema è che spotify ha anche la stessa posizione quando si fa clic su UNSTAR una traccia. quindi devo essere attento nel caso in cui si stacchi una traccia stellare usando il metodo ahk
ms. mann,

2

Ho provato l'altro collegamento Autohotkey e non ha funzionato per me (sono passato a Spotify e ho cliccato in due punti morti). Ho ideato quanto segue, che funziona fintanto che hai selezionato "Grandi opere d'arte in riproduzione":

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

Fa quanto segue:

  • Memorizza la finestra attualmente attiva
  • Attiva Spotify
  • Calcola gli offset per fare clic sulla copertina dell'album relativa alla finestra di Spotify
  • Stars ciò che è attualmente in riproduzione (tramite il pulsante destro del mouse sulla grafica, il pulsante sinistro del mouse su Star)
  • Ripristina qualsiasi finestra fosse attiva prima di tutto questo

Non è perfetto (probabilmente non sarà felice se per qualche motivo hai spotify sospeso principalmente dallo schermo a destra), ma nella maggior parte dei casi riesce a fare il lavoro.


Questo è fantastico! Grazie. Un miglioramento sarebbe leggere l'ultima voce del menu di scelta rapida per vedere se legge Unstar e, in tal caso, non fare clic su di esso. Se ci arrivo tornerò e pubblicherò.
GollyJer,

2

Starred non è più una cosa.

Vai qui per le domande e risposte aggiornate.


Vecchia risposta qui sotto ...

Ecco un'altra soluzione AutoHotkey . Ci sono commenti liberali. Inoltre, la documentazione e i forum di AutoHotkey sono ottimi posti per imparare se lo si desidera.

Premendo Ctrl + Maiusc + *, sarà attivo il brano attivo.
Una caratteristica chiave di questo script è che controlla se il brano è già recitato e lo lascia solo.

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

Questo non funziona più. Vedi la mia soluzione
tig

0

Non ho il rappresentante per inserire questo in un commento alla risposta di GollyJer, ma ho notato quando provavo a usare quello script che c'era un problema con i tasti {down} che in qualche modo gli avrebbe fatto spostare il brano evidenziato nella playlist verso il basso , invece di spostarsi verso il basso nel menu. L'ho modificato per fare un clic del mouse sulla voce di menu "Stella" invece di usare i tasti, sembra funzionare abbastanza bene. L'ho anche modificato per minimizzare Spotify prima che ritorni alla finestra che stavi usando se fosse minimizzato per cominciare.

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

Le soluzioni che dipendono dal fatto che esiste un comando "Stella" non funzionano più ... non esiste più un comando Stella, ma "Speciali" è una cartella a cui è possibile aggiungere elementi. Questo script fa questo.

; 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 non ha più la "stella" e non riesco più a recuperare i contenuti del menu di scelta rapida, quindi questo metodo guarda un colore di pixel nel menu di scelta rapida e utilizza i tasti freccia per selezionare. Funziona se ingrandito, ridotto a icona e se le copertine degli album sono grandi o piccole.

^+*::
{
    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
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.