12 votes

Quels sont les crochets existants dans le centre de notification / twitter pour que je puisse tweeter de manière programmatique ?

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.

9voto

jtbandes Points 10878

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).

3voto

stuffe Points 25320

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

3voto

Daniel Points 32917

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.

3voto

Manu Kemppainen Points 11

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

1voto

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 .

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