3 votes

Peut AppleScript détecter si Netflix ou YouTube est en cours de lecture?

J'ai un script qui détecte si QuickTime Player est en train de lire quelque chose en général mais j'ai aussi besoin d'une façon de détecter si Safari est en train de lire quelque chose de spécifique comme Netflix ou YouTube mais s'il pouvait détecter toute activité de lecture en général ce serait mieux.

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

6voto

user3439894 Points 52496

Voici une façon de tester si la vidéo est en cours de lecture dans Safari.

Exemple code AppleScript:

if (do shell script "pmset -g | grep -m 1 'displaysleep'") ¬
    contains "display sleep prevented by Safari" then

    --  # La vidéo est en cours de lecture.
    --  # Faire quelque chose lorsque la vidéo est en cours de lecture.

else

    --  # La vidéo n'est pas en cours de lecture.
    --  # Faire quelque chose d'autre lorsque la vidéo n'est pas en cours de lecture.

end if

Notes:

Testé dans macOS Catalina.

La clause contains "display sleep prevented by Safari" pourrait en réalité contenir uniquement contains "Safari" et cela fonctionnerait. Si vous avez, par exemple, Firefox qui lit une vidéo, vous utiliseriez simplement firefox dans cette clause, et simplement Google Chrome pour Google Chrome.

En général, les parenthèses autour de la <code>do shell script</code> <em>commande</em> ne sont pas nécessaires, sauf dans ce cas d'utilisation pour permettre l'utilisation du caractère de continuation de ligne, <code>¬</code>, là où il se trouve.

0voto

Steve Torrence Points 165

Voulait poster la solution finale que j'ai finalement utilisée. Basé sur l'exemple de @user3439894.

on mySay(p, myMessage)
    if (do shell script "pmset -g | grep -m 1 'displaysleep'") ¬
        ne contient pas "prévenu" 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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X