Tengo un script que detecta si QuickTime Player está reproduciendo algo en general , pero también necesito una forma de detectar si Safari está reproduciendo algo específico como Netflix o YouTube, pero si pudiera detectar cualquier actividad de reproducción, sería mejor.
on mySay(p, myMessage)
if application "QuickTime Player" is running then
tell application "QuickTime Player" to set isQTplaying to ¬
((documents whose playing is true) is not {}) as boolean
else
set isQTplaying to false
end if
if isQTplaying then
return
else
set myVolumeBefore to output volume of (get volume settings)
set volume output volume p
say myMessage
set volume output volume myVolumeBefore
end if
end mySay
Esta es una manera de probar si el video se está reproduciendo en Safari .
Ejemplo de código AppleScript :
if (do shell script "pmset -g | grep -m 1 'displaysleep'") ¬
contains "display sleep prevented by Safari" then
-- # Video is playing.
-- # Do something when video is playing.
else
-- # Video is not playing.
-- # Do something else when video is not playing.
end if
Notas:
Probado en macOS Catalina .
La contains "display sleep prevented by Safari"
cláusula en realidad solo podría contener contains "Safari"
y funcionaría. Si tiene, por ejemplo, Firefox reproduciendo video, usaría solo firefox
en esa cláusula, y solo Google Chrome
para Google Chrome .
En términos generales, los paréntesis alrededor del do shell script
comando no son necesarios, excepto en este caso de uso para permitir que el uso del carácter de continuación de línea, ¬
se haya colocado donde está.
tell application "System Events" to if exists (buttons of group 2 of toolbar 1 of window 1 of application process "Safari" whose description contains "Mute This Tab") then return true
para cualquier cosa que produzca una señal de audio en Safari .if (do shell script "pmset -g | grep -m 1 'sleep'") contains "firefox" then
o para Google Chrome contains "Google Chrome"
, sin embargo, para Safari no es definitivo y solo informa sleep prevented by coreaudiod
cuando se usa 'sleep'
, y por eso le di una solución de UI Scripting en el comentario anterior.pmset -g
en la Terminal para ver cómo cambia cuando los distintos navegadores/aplicaciones cambian su opción cuando el video y/o solo el audio se reproduce/no se reproduce y ver qué es mejor para probar contra. En su pregunta mencionó Netflix , YouTube y Safari y nunca mencionó otros navegadores/aplicaciones como objetivo de la respuesta. Entre lo que incluí en mi respuesta y los comentarios a bmike, estoy seguro de que el código se puede modificar para adaptarse.Quería publicar la solución final que terminé usando. Basado en el ejemplo de @user3439894.
on mySay(p, myMessage)
if (do shell script "pmset -g | grep -m 1 'displaysleep'") ¬
does not contain "prevented" then
set myVolumeBefore to output volume of (get volume settings)
set volume output volume p
say myMessage
set volume output volume myVolumeBefore
end if
end mySay
micro solar
steve torrence
sin ladera
steve torrence
usuario3439894
bmike
steve torrence
steve torrence