Quali ganci esistono in Notification Center / twitter in modo che io possa twittare programmaticamente?

12

Sto specificatamente cercando di progettare un'azione personalizzata per LaunchBar in modo da poter avviare un tweet da tale utilità. Dal momento che il Centro di notifica ha un pulsante "Clicca per twittare", mi sono chiesto se il Centro di notifica ha degli hook che mi permettessero di scrivere questo script senza aspettare che lo sviluppatore del programma aggiungesse una funzione per eseguire questa azione.

    
posta bmike 26.07.2012 - 18:55
fonte

6 risposte

9

Le app possono collegarsi alle opzioni di condivisione con il nuovo NSSharingService API. È suona come azioni LaunchBar personalizzate possono essere eseguite con qualsiasi file eseguibile UNIX, quindi potresti probabilmente scrivi un piccolo strumento da riga di comando (o potresti dover creare un'app effettiva - dovrai testarlo) che attiva questa API (usando NSSharingServiceNamePostOnTwitter ), e che dovrebbe visualizzare la finestra di dialogo del tweet.

Aggiornamento: per avviare un tweet da AppleScript, puoi procedere come segue:

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

Inoltre, puoi attivare la modalità "Mostra avvisi e banner" / non disturbare:

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

(Questo è tutto molto specifico per il layout attuale della finestra del Centro di notifica ed è probabile che si interrompa con i futuri aggiornamenti di OS X - ma ci saranno probabilmente correzioni facili.)

    
risposta data 27.07.2012 - 07:07
fonte
3

Nessuno di quelli che conosco (e in effetti penso che avere un'area di post rapido di Twitter / Facebook all'interno dell'area delle notifiche sia davvero stupida (dovrebbe essere davvero un widget ), e l'ho spento) ma puoi usare la riga di comando per inviare entrambi i tweet di lettura, come menzionato in this pagina web, estratti di seguito:

Per visualizzare un elenco di tweet (sostituisci osxdaily con un nome utente twitter di tua scelta):

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

Per aggiornare lo stato di Twitter:

curl -u your_user:your_password -d status='This is My update' https://twitter.com/statuses/update.xml
    
risposta data 26.07.2012 - 19:24
fonte
3

Facendo questo un passo avanti e mettendo insieme ciò che abbiamo imparato finora, ecco un tweet completamente programmatico:

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

Naturalmente questo è fragile, ma per ora funziona. Mi piacerebbe trovare un hook real , ma l'UI Scripting è una soluzione alternativa.

    
risposta data 28.07.2012 - 05:48
fonte
3

Shift di comando brillante D.

Aggiunta:

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
    
risposta data 08.08.2012 - 18:03
fonte
1

Ho scritto un altro script che risolve alcuni problemi nello script pubblicato da Ewwis:

  • Non c'era modo di chiudere la finestra di dialogo all'inizio.
  • L'azione del secondo clic non ha funzionato se il Centro di notifica non era stato visualizzato dopo l'ultimo accesso.
  • Lo script non funzionava quando c'era un ritardo prima che venisse mostrata la vista per la composizione di un tweet. Se già conteneva del testo, non è stato cancellato.
  • Il comando della sequenza di tasti funziona solo per l'inserimento di caratteri che possono essere immessi con il metodo di immissione corrente.
  • La barra laterale del Centro notifiche non è stata chiusa alla fine.

Non funziona se la barra laterale del Centro di notifica è aperta però.

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

Sarebbe più facile solo utilizzare l'API .

    
risposta data 21.08.2012 - 21:12
fonte
0

Fantastico! Grazie per aver mostrato al mondo un altro modo.

La mia soluzione ha funzionato per ME, ma anche per il tuo.

Non sono un esperto di Applescript di FAR, ma mi piace giocherellare con esso.

Grazie!

Usando ciò che ho imparato da te, ecco un altro modo che funziona per me. Questo non risolve alcuni dei tuoi dubbi su tastiere o errori alternativi, ma forse farà luce su qualcuno che si diletta in 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
    
risposta data 22.08.2012 - 16:02
fonte

Leggi altre domande sui tag