Je cherche spécifiquement à concevoir une action personnalisée pour Barre de lancement afin que je puisse lancer un tweet à partir de cet utilitaire. Comme le Centre de notification dispose d'un bouton "Cliquer pour tweeter", je me suis demandé si le Centre de notification dispose de crochets qui me permettraient de script ceci sans attendre que le développeur du programme ajoute une fonction pour effectuer cette action.
Réponses
Trop de publicités?Les applications peuvent se brancher sur les options de partage grâce à la nouvelle fonction NSSharingService API. Il s'agit de On dirait que Les actions personnalisées de la barre de lancement peuvent être réalisées avec n'importe quel fichier exécutable UNIX, de sorte que vous pourriez probablement écrire un petit outil de ligne de commande (ou vous pourriez avoir besoin de construire une application réelle - vous devrez la tester) qui active cette API (à l'aide de la fonction NSSharingServiceNamePostOnTwitter
), et cela devrait afficher le dialogue de tweet.
Mise à jour : pour lancer un tweet à partir d'AppleScript, vous pouvez procéder comme suit :
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
En outre, vous pouvez basculer le mode "Afficher les alertes et les bannières" / ne pas déranger :
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
(Tout ceci est très spécifique à la disposition actuelle des fenêtres du Centre de notification et est susceptible de se briser avec les futures mises à jour d'OS X - mais il y aura probablement des corrections faciles).
Aucun que je connaisse (et en fait, je pense que le fait d'avoir un Twitter/Facebook poste rapide à l'intérieur de la notifications est en fait stupide (il devrait s'agir d'un widget, et je l'ai désactivé), mais vous pouvez utiliser la ligne de commande pour envoyer et lire des tweets, comme indiqué dans la rubrique ce page web, extraits ci-dessous :
Pour afficher une liste de tweets (remplacez osxdaily par un nom d'utilisateur twitter de votre choix) :
curl -s http://twitter.com/osxdaily | grep '' | cut -d">" -f2 | cut -d"<" -f1
Pour mettre à jour votre statut twitter :
curl -u your_user:your_password -d status='This is My update' https://twitter.com/statuses/update.xml
Pour aller plus loin et rassembler tout ce que nous avons appris jusqu'à présent, voici un tweet entièrement programmatique :
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
Bien sûr, cela est fragile, mais pour l'instant, cela fonctionne. J'aimerais trouver un réel mais le Scripting UI est une solution de contournement.
Brillant changement de commandement D.
En ajoutant :
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
J'ai écrit un autre script qui corrige certains problèmes dans le script posté par Ewwis :
- Il n'y avait aucun moyen de fermer le dialogue au départ.
- L'action du deuxième clic ne fonctionnait pas si le centre de notification n'avait pas été affiché après la dernière connexion.
- Le script ne fonctionnait pas lorsqu'il y avait un délai avant que la vue pour composer un tweet ne s'affiche. Si elle contenait déjà du texte, celui-ci n'était pas effacé.
- La commande de frappe ne fonctionne que pour insérer des caractères qui peuvent être saisis avec la méthode de saisie actuelle.
- La barre latérale du centre de notification n'était pas fermée à la fin.
Cela ne fonctionne pas lorsque la barre latérale du centre de notification est ouverte.
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
Il serait plus facile de simplement utiliser l'API .
- Réponses précédentes
- Plus de réponses