¿Qué enlaces existen en el Centro de notificaciones / twitter para que pueda twittear mediante programación?

12

Estoy buscando específicamente diseñar una acción personalizada para LaunchBar para que pueda iniciar un tweet desde esa utilidad. Dado que el Centro de notificaciones tiene un botón "Haga clic para twittear", me pregunté si el Centro de notificaciones tiene algún enlace que me permita escribir esto sin esperar que el desarrollador del programa agregue una función para realizar esta acción.     

pregunta bmike 26.07.2012 - 18:55

6 respuestas

9

Las aplicaciones pueden conectarse a las opciones para compartir con el nuevo NSSharingService API. Se suena como las acciones personalizadas de la barra de inicio se pueden realizar con cualquier archivo ejecutable de UNIX, por lo que podría probablemente escriba una pequeña herramienta de línea de comandos (o puede que necesite crear una aplicación real, tendrá que probarlo) que active esta API (usando NSSharingServiceNamePostOnTwitter ), y que muestre el diálogo del tweet.

Actualizar: para iniciar un tweet desde AppleScript, puedes hacer lo siguiente:

tell application "System Events"
    tell process "Notification Center"
        -- activate notification center
        if (count of UI elements) is 1 then click first menu bar's first menu bar item
        -- click the tweet button
        click button 1 of UI element 1 of row 2 of table 1 of scroll area 1 of window "Window"
    end tell
end tell

Además, puede cambiar el modo "Mostrar alertas y avisos" / No molestar:

tell application "System Events"
    tell process "Notification Center"
        key down option
        click first menu bar's first menu bar item
        key up option
    end tell
end tell

(Todo esto es muy específico para el diseño de la ventana actual del Centro de notificaciones y es probable que se rompa con las futuras actualizaciones de OS X, pero probablemente habrá soluciones fáciles).

    
respondido por el jtbandes 27.07.2012 - 07:07
3

Ninguna que yo sepa (y de hecho creo que tener un área de publicación rápida en Twitter / Facebook dentro del área de notificaciones es realmente tonto (debería ser un widget realmente ), y lo he desactivado, pero puede usar la línea de comandos para enviar un tweet de lectura, como se menciona en esta página web , extractos a continuación:

Para mostrar una lista de tweets (reemplace osxdaily con un nombre de usuario de Twitter de su elección):

curl -s http://twitter.com/osxdaily | grep '' | cut -d">" -f2 | cut -d"<" -f1

Para actualizar tu estado de twitter:

curl -u your_user:your_password -d status='This is My update' https://twitter.com/statuses/update.xml
    
respondido por el stuffe 26.07.2012 - 19:24
3

Llevando todo esto un paso más allá y reuniendo lo que hemos aprendido hasta ahora, aquí hay un tweet totalmente programático:

tell application "System Events"
    tell process "Notification Center"
        click menu bar item 1 of menu bar 1
        click button 1 of UI element 1 of row 2 of table 1 of scroll area 1 of window "window"
        keystroke "Content of the tweet"
        keystroke "D" using {command down, shift down}
    end tell
end tell

Por supuesto, esto es frágil, pero por ahora, funciona. Me encantaría encontrar un gancho real , pero las secuencias de comandos de IU son una solución.

    
respondido por el Daniel 28.07.2012 - 05:48
3

Brillante cambio de comando D.

Agregando:

display dialog "Tweet?" default answer "" buttons {"OK"} default button 1
set mytweet to text returned of result

tell application "System Events"
    tell process "Notification Center"
        click menu bar item 1 of menu bar 1
        click button 1 of UI element 1 of row 2 of table 1 of scroll area 1 of window "window"
        keystroke mytweet
        keystroke "D" using {command down, shift down}
        keystroke space
    end tell
end tell
    
respondido por el Ewwis 08.08.2012 - 18:03
1

Escribí otro script que soluciona algunos problemas en el script publicado por Ewwis:

  • No había forma de cerrar el diálogo al principio.
  • La acción del segundo clic no funcionó si Notification Center no se había mostrado después del último inicio de sesión.
  • El guión no funcionó cuando había un retraso antes de que se mostrara la vista para componer un tweet. Si ya contenía algún texto, no se borró.
  • El comando de pulsación de tecla solo funciona para insertar caracteres que se pueden ingresar con el método de entrada actual.
  • La barra lateral del Centro de notificaciones no se cerró al final.

Sin embargo, no funciona cuando la barra lateral del Centro de notificaciones está abierta.

set answer to text returned of (display dialog "" default answer "")
try
    set old to the clipboard as record
end try
try
    set text item delimiters to linefeed
    set the clipboard to paragraphs of answer as text
    tell application "System Events"
        tell process "Notification Center"
            click menu bar item 1 of menu bar 1
            try
                windows
            on error
                click menu bar item 1 of menu bar 1
                click menu bar item 1 of menu bar 1
            end try
            click button 1 of UI element 1 of row 2 of table 1 of scroll area 1 of window 1
            delay 0.1
            keystroke "av" using command down
            keystroke "d" using {shift down, command down}
            repeat 100 times
                try
                    delay 0.1
                    click menu bar item 1 of menu bar 1
                    exit repeat
                end try
            end repeat
        end tell
    end tell
end try
try
    set the clipboard to old
end try

Sería más fácil simplemente usar la API .

    
respondido por el user495470 21.08.2012 - 21:12
0

¡Fantástico! Gracias por mostrar al mundo de otra manera.

Mi solución funcionó para MÍ, pero también la tuya.

No soy un experto en Applescript de FAR, pero me encanta jugar con él.

¡Gracias!

Usando lo que he aprendido de ti, aquí hay otra manera que funciona para mí. Esto no aborda algunas de sus preocupaciones sobre teclados alternativos o errores, pero tal vez arroje una luz para alguien que incurre en AS.

display dialog "Tweet?" default answer "" buttons {"OK"} default button 1 with icon 2
set mytweet to text returned of result

tell application "System Events"
    tell process "Notification Center"
        click menu bar item 1 of menu bar 1
        click button 1 of UI element 1 of row 2 of table 1 of scroll area 1 of window "window"
        keystroke mytweet
        keystroke "D" using {command down, shift down}
        repeat 100 times
            try
                delay 0.1
                click menu bar item 1 of menu bar 1
                exit repeat
            end try
        end repeat
    end tell
end tell
    
respondido por el Ewwis 22.08.2012 - 16:02

Lea otras preguntas en las etiquetas