¿Cómo pausar el video de YouTube a través del atajo de teclado o desde la barra de menú?

13

¿Existe una pieza de software que le permite a uno hacer una pausa (y dejar de hacer una pausa) un video de YouTube que se está reproduciendo actualmente (o, idealmente, cualquier video / audio en línea), con un método abreviado de teclado o un botón accesible (p. ej., , un botón que se encuentra en la barra de menú, ubicada en la parte superior derecha de la pantalla)? Cuantos menos clics sean necesarios, mejor.

La clave aquí es que quiero la posibilidad de pausar el video en cualquier aplicación, es decir, cuando Google Chrome no es la aplicación más importante (por ejemplo, TextEdit o Microsoft Word es la aplicación más importante) .

iOS tiene este acceso directo incorporado. Si se desliza desde la parte inferior de la pantalla hasta la parte superior, aparecen los controles de medios. Estos controles pueden manipular cualquier y todo el audio que se origina en una pestaña de Safari.

Mi navegador web es Google Chrome.

OS X El Capitan, versión 10.11.6.

También estaría abierto a lograr esto con un AppleScript (que luego se puede asignar a una combinación de teclas en FastScripts.app). Pero no puedo imaginar que una tarea tan compleja sea posible a través de AppleScript.

    
pregunta rubik's sphere 21.04.2017 - 04:03

2 respuestas

16

Este script hará clic en el botón Reproducir / Pausa en un video que se reproduce en YouTube en Google Chrome, ya sea que Google Chrome esté visible o no.

to clickClassName(theClassName, elementnum)
    tell application "Google Chrome" to (tabs of window 1 whose URL contains "youtube")
    set youtubeTabs to item 1 of the result
    tell application "Google Chrome"
        execute youtubeTabs javascript "document.getElementsByClassName('" & theClassName & "')[" & elementnum & "].click();"
    end tell
end clickClassName    

clickClassName("ytp-play-button ytp-button", 0)

Esta es la versión de script para trabajar con Safari

to clickClassName2(theClassName, elementnum)
    tell application "Safari"
        tell window 1 to set current tab to tab 1 whose URL contains "youtube"
        do JavaScript "document.getElementsByClassName('" & theClassName & "')[" & elementnum & "].click();" in document 1
    end tell
end clickClassName2

clickClassName2("ytp-play-button ytp-button", 0)

En un esfuerzo por brindar al OP una solución AppleScript completa, he dado un paso más en mi respuesta original ...

ACTUALIZAR

Finalmente lo descubrí. Creé una aplicación AppleScript en Xcode. Originalmente, mi proyecto solo comenzó con una ventana de un botón para controlar los videos de YouTube actualmente activos en Chrome o Safari. Este proyecto se ha convertido un poco en una aplicación que contiene varias utilidades. Este GIF muestra el botón de pausa de YouTube que controla YouTube en Chrome y Safari. Vinculé las acciones de los botones al AppleScript que escribí originalmente en el editor de scripts.

EstaesunainstantáneadelaaplicaciónXcodequetrabajaenelarchivoAppDelegate.applescript.

Aquíestáelcódigoenesearchivoquecreéparahacerqueelprogramafuncione.

scriptAppDelegatepropertyparent:class"NSObject"


    -- IBOutlets
    property theWindow : missing value

    to clickClassName(theClassName, elementnum) -- Handler for pausing YouTube in Chrome
        if application "Google Chrome" is running then
            try
                tell application "Google Chrome" to (tabs of window 1 whose URL contains "youtube")
                set youtubeTabs to item 1 of the result
                tell application "Google Chrome"
                    execute youtubeTabs javascript "document.getElementsByClassName('" & theClassName & "')[" & elementnum & "].click();"
                end tell
            end try
        end if
    end clickClassName

    to clickClassName2(theClassName, elementnum) -- Handler for pausing YouTube in Safari
        if application "Safari" is running then
            try
                tell application "Safari"
                    tell window 1 to set current tab to tab 1 whose URL contains "youtube"
                    do JavaScript "document.getElementsByClassName('" & theClassName & "')[" & elementnum & "].click();" in document 1
                end tell
            end try
        end if
    end clickClassName2

    on doSomething:sender -- Calls the Chrome YouTube Handler
        clickClassName("ytp-play-button ytp-button", 0)
    end doSomething:

    on doSomething14:sender -- Calls the Safari YouTube Handler
        clickClassName2("ytp-play-button ytp-button", 0)
    end doSomething14:

    on doSomething2:sender -- Hide and or show the Menu Bar
        tell application "System Preferences"
            reveal pane id "com.apple.preference.general"
        end tell
        tell application "System Events" to tell process "System Preferences" to tell window "General"
            click checkbox "Automatically hide and show the menu bar"
        end tell
        delay 1
        quit application "System Preferences"
    end doSomething2:

    on doSomething3:sender -- Sets Display resolution to the second lowest setting (15 inch Built In Retina Display - MBP)
        tell application "System Preferences"
            reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
        end tell
        tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
            click radio button "Scaled" of radio group 1 of tab group 1
            click radio button 2 of radio group 1 of group 1 of tab group 1
        end tell
        quit application "System Preferences"
    end doSomething3:

    on doSomething4:sender -- Sets Display resolution to the second highest setting (15 inch Built In Retina Display - MBP)
        tell application "System Preferences"
            reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
        end tell
        tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
            click radio button "Scaled" of radio group 1 of tab group 1
            click radio button 4 of radio group 1 of group 1 of tab group 1
        end tell
        quit application "System Preferences"
    end doSomething4:

    on doSomething5:sender -- Sets Display resolution to the highest setting (15 inch Built In Retina Display - MBP)
        tell application "System Preferences"
            reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
        end tell
        tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
            click radio button "Scaled" of radio group 1 of tab group 1
            click radio button 5 of radio group 1 of group 1 of tab group 1
        end tell
        quit application "System Preferences"
    end doSomething5:

    on doSomething6:sender -- Sets Display resolution to the lowest setting (15 inch Built In Retina Display - MBP)
        tell application "System Preferences"
            reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
        end tell
        tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
            click radio button "Scaled" of radio group 1 of tab group 1
            click radio button 1 of radio group 1 of group 1 of tab group 1
            delay 0.1
            click button "OK" of sheet 1
            quit application "System Preferences"
        end tell
    end doSomething6:

    on doSomething7:sender -- Displays a dialog with your current IP
        tell current application to display dialog (do shell script "curl ifconfig.io") with icon 2 buttons "OK" default button 1 with title "Your Current IP Address Is.." giving up after 5
    end doSomething7:

    on doSomething8:sender -- Shows hidden files in Finder
        do shell script "defaults write com.apple.finder AppleShowAllFiles TRUE\nkillall Finder"
    end doSomething8:

    on doSomething9:sender -- Hides hidden files in Finder if they are showing
        do shell script "defaults write com.apple.finder AppleShowAllFiles FALSE\nkillall Finder"
    end doSomething9:

    on doSomething10:sender  -- Brightness Highest
        tell application "System Preferences"
            reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
        end tell
        tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
        set value of value indicator 1 of slider 1 of group 2 of tab group 1 to 12
        end tell
        quit application "System Preferences"
    end doSomething10:

    on doSomething11:sender -- Brightness Lowest
        tell application "System Preferences"
            reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
        end tell
        tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
        set value of value indicator 1 of slider 1 of group 2 of tab group 1 to 0.1
        end tell
        quit application "System Preferences"
    end doSomething11:

    on doSomething12:sender -- Zoom
        tell application "System Events"
            key code 28 using {command down, option down}
        end tell
    end doSomething12:

    on doSomething13:sender -- Dictation On/Off
        tell application "System Events"
            keystroke "x" using {option down}
        end tell
    end doSomething13:

    on doSomething15:sender -- Enables Screensaver as Desktop background
        tell application "System Events"
            do shell script "/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background"
        end tell
    end doSomething15:

    on doSomething16:sender -- Kills Screensaver Desktop background
        try
            tell application id "com.apple.ScreenSaver.Engine" to quit
        end try
    end doSomething16:


    on applicationWillFinishLaunching:aNotification
        -- Insert code here to initialize your application before any files are opened

    end applicationWillFinishLaunching:

    on applicationShouldTerminate:sender
        -- Insert code here to do any housekeeping before your application quits


        return current application's NSTerminateNow
    end applicationShouldTerminate:

    on applicationShouldTerminateAfterLastWindowClosed:sender -- Quits app when clicking red x

        return TRUE

    end applicationShouldTerminateAfterLastWindowClosed:

end script

Actualicé el código para que la pestaña de YouTube en Chrome no tenga que ser la pestaña visible o activa al hacer clic en el botón de pausa de YouTube creado en Xcode

Aquí hay un enlace para descargar todo el proyecto Xcode

ADVERTENCIA:Lafuncióndeprotectordepantalladelescritoriocongelarálaaplicación.Despuésdeforzarelcierreyvolveraabrir,lafuncióndeprotectordepantalladelescritorioparasalirdelprotectordepantallaactivofuncionará.

Pensamientosposteriores:ProbablementedeberíahaberenvueltocadaunodeloscódigosAppleScriptendeclaracionesde"prueba" para evitar todo tipo de mensajes de error para aquellos que juegan con este proyecto, que no tienen el mismo sistema y Tipo de computadora que hago. (MacBook Pro 15 "OS Sierra 10.12.6)

Para que funcione la función de zoom, debe estar habilitado en las preferencias del sistema.

Paraquelaopción"Activación / desactivación del dictado" funcione correctamente, el atajo para habilitar los comandos de dictado en las preferencias del sistema debe coincidir con el acceso directo utilizado en el script

ondoSomething13:sender--DictationOn/Offtellapplication"System Events"
        keystroke "x" using {option down}
    end tell
end doSomething13:

Actualmente estoy trabajando en la capacidad de alternar entre la aplicación que ejecuta Windows o solo la barra de menú

    
respondido por el wch1zpink 21.04.2017 - 22:25
1

Aquí se explica cómo acceder a la barra de menús con AppleScript puro. Guardar como aplicación con stay open after run handler :

P.S. Robé el código para las funciones reales de reproducción / pausa de @ wch1zpink, así que por favor, también voten su respuesta

--AppleScript: menu bar script -- Created 2017-03-03 by Takaaki Naganoya adapted by Josh Brown
--2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "AppKit"
--http://piyocast.com/as/archives/4502

property aStatusItem : missing value

on run
    init() of me
end run

on init()
    set aList to {"Google Chrome", "⏯", "", "Safari", "⏯​", "", "Quit"}
    set aStatusItem to current application's NSStatusBar's systemStatusBar()'s statusItemWithLength:(current application's NSVariableStatusItemLength)

    aStatusItem's setTitle:"                                    
respondido por el JBis 17.07.2018 - 22:07

Lea otras preguntas en las etiquetas