Bildirim Merkezi / twitter'da hangi kancalar var, böylece programlı olarak tweet atabilirim?


12

Özellikle bu yardımcı programdan bir tweet başlatabilir, böylece LaunchBar için özel bir eylem tasarlamak için arıyorum . Bildirim Merkezi'nde "Tweet atmak için tıklayın" düğmesi bulunduğundan, Bildirim Merkezi'nin programın geliştiricisinin bu işlemi gerçekleştirmesi için bir işlev eklemesini beklemeden komut dosyası oluşturmamı sağlayacak herhangi bir kancaya sahip olup olmadığını merak ettim.


2
Bildirim Merkezi'nin AppleScript Sözlüğü, Automator eylemleri yok ve ne yazık ki yürütülebilir paketin etrafında gezinirken ortaya çıkan belirgin kancalar karşısında çok az.
Daniel

1
Dizelerin dökümü, "ShareKit" adlı bir şey, çeşitli sharingService işlevleri ve "Paylaşma Widget'ı" olarak adlandırılan bir şey olduğunu gösterir - belki de bunun bir kısmı yardımcı olabilir.
Daniel

Yarın büyük cevapları incelemek için zamanım olacak ama kazanabileceği herhangi bir ek poz için bunu ödüllendirmek istedim.
bmike

Yanıtlar:


9

Uygulamalar, yeni NSSharingService API ile paylaşım seçeneklerine bağlanabilir . Bu gibi sesler (bu API aktive eder - özel LaunchBar'ı eylemler herhangi bir UNIX yürütülebilir dosya ile yapılabilir muhtemelen küçük bir komut satırı aracı yazabilirsiniz (eğer bunu test gerekecek ya da gerçek bir uygulama oluşturmak gerekebilir) bu yüzden, kullanarak NSSharingServiceNamePostOnTwitter) ve bu tweet iletişim kutusunu görüntülemelidir.

Güncelleme: AppleScript'ten bir tweet başlatmak için aşağıdakileri yapabilirsiniz:

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

Ayrıca, "Uyarıları ve Afişleri Göster" / rahatsız etmeyin modunu da değiştirebilirsiniz:

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

(Bunların tümü, Bildirim Merkezi'nin geçerli pencere düzenine çok özeldir ve gelecekteki OS X güncellemelerinden kopması muhtemeldir - ancak muhtemelen kolay düzeltmeler olacaktır.)


2
Ve bir keystrokekomut Tweet'i metinle başlatabilir. Şimdi programlı olarak Tweet'i tamamlamak için…
Daniel

Yosemite ile çalışmak için bunu güncellemek için başarısız çalışıyorum. Herhangi bir öneri?
15'te

1
@wst Hm, zor görünüyor. Görünen menü çubuğu öğesini tıklamak artık hiçbir şey yapmıyor gibi görünüyor - iyi bir hata raporu yapabilir .
jtbandes

3

Bildiğim hiçbir şey (ve aslında bildirimler alanı içinde bir Twitter / Facebook hızlı yazı alanına sahip olmanın aslında aptal olduğunu düşünüyorum (gerçekten bir widget olmalı) ve ben kapattım) ama komut satırını kullanabilirsiniz her ikisi de bu web sayfasında belirtildiği gibi , aşağıdaki özetleri okuyan bir tweet gönderir :


Tweet listesini görüntülemek için (osxdaily yerine istediğiniz Twitter kullanıcı adını girin):

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

Twitter durumunuzu güncellemek için:

curl -u your_user:your_password -d status='This is My update' https://twitter.com/statuses/update.xml

Metin giriş alanı kullanmayı umuyordum biraz oldu. Launchbar dokümanlar kazmak ve kıvırmak fikir herhangi bir bacak olup olmadığını görmek zorunda kalacak .... Ben açıkça bir şifre gönderme devre dışı düşündüm - bu yüzden bunun için teşekkürler!
bmike

Ben API (anahtar kimlik doğrulama yöntemi ile değiştirerek) kullanan istemciler için parola gönderme kullanımını devre dışı bıraktı düşünüyorum, ama bu aslında, web sitesi bir istemci değil kullanarak, bu yüzden kullanıcı adı / parola kullanarak büyük olasılıkla iyidir. Aslında, zaten aktif bir oturum ve çerez vb ile giriş yaptıysanız, onlarsız bile çalışabilir ... (tahmin)
stuffe

Tanımlama bilgilerinin Safari & arasında paylaşıldığını sanmıyorum curl. Yine de olmamalılar.
olivier

2
Twitter, 30 Haziran 2010'da OAuth tabanlı girişlere tamamen geçti ve temel kimlik doğrulamasını devre dışı bıraktı. Cevabınızdaki ikinci komut o zamandan beri işe yaramadı.
Mathias Bynens

3

Tüm bunları bir adım öteye taşıyarak ve şimdiye kadar öğrendiklerimizi bir araya getirerek, tamamen programlı bir tweet:

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

Tabii ki bu kırılgan, ancak şimdilik işe yarıyor. Gerçek bir kanca bulmak isterim , ancak UI Scripting bir çözümdür.


Ah, temiz. ⇧⌘D'nin tweet'i göndermesi mantıklıdır (Mail In Send için kısayol).
jtbandes

1
Yanlışlıkla buldum. Kas hafızası güçlüdür.
Daniel

3

Mükemmel komut kaydırma D.

Ekleme:

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

1

Ewwis tarafından yayınlanan komut dosyasında bazı sorunları gideren başka bir komut dosyası yazdım:

  • Başlangıçta iletişim kutusunu kapatmanın bir yolu yoktu.
  • Son girişten sonra Bildirim Merkezi gösterilmediyse ikinci tıklama işlemi çalışmadı.
  • Bir tweet oluşturma görünümü gösterilmeden önce bir gecikme olduğunda komut dosyası çalışmadı. Zaten bir metin içeriyorsa, temizlenmedi.
  • Tuş vuruşu komutu yalnızca geçerli giriş yöntemiyle girilebilen karakterler eklemek için kullanılır.
  • Bildirim Merkezi kenar çubuğu sonunda kapatılmadı.

Bildirim Merkezi kenar çubuğu açık olduğunda çalışmaz.

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

API'yı kullanmak daha kolay olurdu .


Hmm - API'ya bakmam gerekecek. Bu da başlatıcısı, Launchbar, UI komut dosyalarından çok daha iyi olurdu. +1 ve muhtemelen yeni bir en iyi yanıt.
bmike

0

Fantastik! Dünyaya başka bir yol gösterdiğin için teşekkürler.

Benim çözümüm benim için çalıştı, ama seninki de öyle.

FAR'ın bir Apple uzmanı değilim, ama onunla uğraşmayı seviyorum.

Teşekkürler!

Sizden öğrendiklerimi kullanarak, işte benim için çalışan başka bir yol. Bu, alternatif klavyeler veya hatalarla ilgili bazı endişelerinizi gidermez, ancak AS'de dabling yapan biri için bir ışık tutacaktır.

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.