Будь-які зміни Spotify з ярликом на клавіатурі до "зіркових" треків?


20

Я висококласний абонент Spotify та нав’язливий вигляд продуктивності.

Одна річ, яка мене справді дратує, це те, що не існує комбінації клавіш для "зірки" доріжки (тобто додавання треку до вибраного). Мені подобається залишати радіо Spotify, коли я працюю, і мені знову і знову доводиться клацати вказівник миші та клацнути правою кнопкою миші на треку, а потім вибирати "Зірка", коли я чую пісню, яка мені дуже подобається.

Чи є там налаштування / плагіни Spotify, які дозволять мені "зірочити" доріжки за допомогою комбінації клавіш?


Використовуєте програвач Windows Media?
Діого

Ні, просто Spotify
Едді

Відповіді:


3

Звичайно, використовуйте AutoHotkey !

Після встановлення встановіть це у файл AutoHotkey.ahk:

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

До цього додається швидка клавіша Win + Asterisk, яка додасть зірочку до відтворення.

Можливо, вас також зацікавлять інші ярлики Spotify для AutoHotkey.


1
Проблема полягає в тому, що Spotify також має те саме місце розташування, коли натискаєте кнопку UNSTAR. тому треба бути обережним, якщо ви зніміть зірочку із використанням методу ahk
мс. ман

2

Я спробував інший ярлик Autohotkey, і він не працював для мене (просто перейшов на спотифікацію і натиснув у двох мертвих місцях). Я розробив наступне, що працює до тих пір, як у вас вибрано "Великий твір, який зараз грає":

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

Він робить наступне:

  • Зберігає активне вікно
  • Активує Spotify
  • Розраховує компенсації для клацання на зображенні альбому щодо вікна спотифіку
  • Зірки, що зараз відтворюються (за допомогою правої кнопки миші, клацніть лівою кнопкою миші Зірка)
  • Відновлює будь-яке вікно, яке було активним перед усім цим

Це не ідеально (напевно, не буде радий, якщо ви з якоїсь причини спотифіку висите в основному на екрані праворуч), але в більшості випадків це робиться.


Це чудово! Спасибі. Удосконаленням було б прочитати останній пункт контекстного меню, щоб побачити, чи не читає він Знімку, а якщо так, не натискайте на нього. Якщо я дістанусь до нього, я повернусь та напишу.
GollyJer

2

Зірка - це вже не річ.

Перейдіть сюди для оновлених запитань.


Стара відповідь нижче тут ...

Ось ще одне рішення AutoHotkey . Є ліберальні коментарі. Крім того, документація та форуми щодо AutoHotkey - чудові місця, за якими можна дізнатися.

Натискання клавіші Control + Shift + * позначатиме активну пісню.
Ключовою особливістю цього сценарію є те, що він перевіряє, чи пісня вже відзначений зірочкою, і залишає її в спокої, якщо так.

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

Це більше не працює. Дивіться моє рішення.
тиг

0

У мене немає представника, щоб це ставити в коментарі до відповіді GollyJer, але я помітив, коли намагався використати цей сценарій, що виникає проблема із натисканням клавіш {вниз}, яка якось змусить перенести виділену пісню в список відтворення вниз , а не рухатися вниз по меню. Я змінив його, щоб зробити клацання миші на вході в меню "Зірка", а не використовувати клавіші, це, здається, працює досить добре. Я також відредагував його, щоб мінімізувати Spotify до того, як він повернеться до вікна, яке ви використовували, якщо для початку його було мінімізовано.

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

Ви також можете спробувати мій додаток Spotify, Twinkle , який є платформою та незалежним рішенням для верстки графічного інтерфейсу для того, щоб дивитися пісні Spotify одним натисканням кнопки.


0

Рішення, залежні від того, що команда "Зірка" більше не працює ... більше немає команди "Зірка", але "Зірочкою" є елементи папки, до яких можна додавати. Цей сценарій робить це.

; 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 більше немає "зірки", і я, здається, більше не можу отримати вміст контекстного меню, тому цей метод розглядає піксельний колір у контекстному меню та використовує клавіші зі стрілками для вибору. Працює, якщо максимізувати, мінімізувати та якщо обсяг альбомів великий чи малий.

^+*::
{
    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
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.