Estoy buscando específicamente diseñar una acción personalizada para LaunchBar para poder iniciar un tweet desde esa utilidad. Dado que el Centro de notificaciones tiene un botón "Hacer clic para twittear", me preguntaba si el Centro de notificaciones tiene algún gancho que me permita escribir esto sin esperar a que el desarrollador del programa agregue una función para realizar esta acción.
Las aplicaciones pueden conectarse a las opciones para compartir con la nueva API NSSharingService . Parece que las acciones personalizadas de LaunchBar se pueden realizar con cualquier archivo ejecutable de UNIX, por lo que probablemente podría escribir una pequeña herramienta de línea de comandos (o tal vez necesite crear una aplicación real; tendrá que probarla) que activa esta API ( usando NSSharingServiceNamePostOnTwitter
), y eso debería mostrar el diálogo de tweet.
Actualización: para iniciar un tweet desde AppleScript, puede 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 alternar el modo "Mostrar alertas y pancartas" / 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 futuras actualizaciones de OS X, pero probablemente habrá soluciones fáciles).
keystroke
comando puede iniciar el Tweet con texto. Ahora, para completar programáticamente el Tweet...Ninguno que yo sepa (y de hecho creo que tener un área de publicación rápida de Twitter/Facebook dentro del área de notificaciones es una tontería (realmente debería ser un widget), y lo he desactivado) pero puede usar la línea de comando para ambos envían tweets 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 su estado de Twitter:
curl -u your_user:your_password -d status='This is My update' https://twitter.com/statuses/update.xml
curl
. Y no deberían serlo, de todos modos.Llevando todo esto un paso más allá y reuniendo lo que hemos aprendido hasta ahora, aquí hay un tweet completamente 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 UI Scripting es una solución.
Brillante cambio de mando 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
Escribí otra secuencia de comandos que soluciona algunos problemas en la secuencia de comandos publicada por Ewwis:
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 .
¡Fantástico! Gracias por mostrarle al mundo otro camino.
Mi solución funcionó para MÍ, pero también la tuya.
No soy un experto en Applescript por FAR, pero me encanta jugar con él.
¡Gracias!
Usando lo que aprendí de ti, aquí hay otra forma 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 incursiona 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
Daniel
Daniel
bmike