Kait apa yang ada di Pusat Pemberitahuan / twitter sehingga saya dapat tweet secara terprogram?

12

Saya secara khusus mencari untuk merancang tindakan khusus untuk LaunchBar sehingga saya dapat memulai tweet dari utilitas itu. Karena Notification Center memiliki tombol "Click to tweet", saya bertanya-tanya apakah Notification Center memiliki kait yang akan memungkinkan saya untuk skrip ini tanpa menunggu pengembang program menambahkan fungsi untuk melakukan tindakan ini.

bmike
sumber
2
Notification Center tidak memiliki Kamus AppleScript, tidak ada tindakan Automator, dan sayangnya sedikit di jalan kait yang jelas muncul ketika melihat-lihat bundel dieksekusi.
Daniel
1
Kumpulan string menyarankan ada sesuatu yang disebut "ShareKit", berbagai fungsi sharingService, dan sesuatu yang disebut "Berbagi Widget" - mungkin beberapa bagian yang mungkin bisa membantu.
Daniel
Saya akan punya waktu untuk menggali jawaban hebat besok, tetapi saya ingin memberi hadiah ini untuk setiap paparan tambahan yang mungkin didapat.
bmike

Jawaban:

9

Aplikasi dapat terhubung ke opsi berbagi dengan API NSSharingService baru . Ini terdengar seperti LaunchBar tindakan kustom dapat dibuat dengan UNIX file executable, sehingga Anda mungkin bisa menulis sebuah alat baris perintah kecil (atau Anda mungkin perlu untuk membangun sebuah aplikasi yang sebenarnya - Anda harus menguji itu) yang mengaktifkan API ini ( menggunakan NSSharingServiceNamePostOnTwitter), dan itu akan menampilkan dialog tweet.

Pembaruan: untuk memulai tweet dari AppleScript, Anda dapat melakukan hal berikut:

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

Selanjutnya, Anda dapat mengaktifkan "Tampilkan Peringatan dan Spanduk" / jangan ganggu mode:

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

(Ini semua sangat spesifik untuk tata letak jendela Notification Center saat ini dan kemungkinan akan putus dengan pembaruan OS X di masa depan - tetapi mungkin akan ada perbaikan yang mudah.)

jtbandes
sumber
2
Dan sebuah keystrokeperintah dapat memulai Tweet dengan teks. Sekarang untuk menyelesaikan Tweet secara terprogram ...
Daniel
Saya tidak berhasil memperbarui ini agar berfungsi dengan Yosemite. Ada saran?
WST
1
@ pertama Hm, terlihat rumit. Tampaknya mengklik item bilah menu yang terbuka tidak melakukan apa-apa lagi - mungkin membuat laporan bug yang baik .
jtbandes
3

Tidak ada yang saya ketahui (dan sebenarnya saya berpikir bahwa memiliki area posting cepat Twitter / Facebook di dalam area notifikasi sebenarnya bodoh (harusnya benar-benar sebuah widget), dan saya telah mematikannya) tetapi Anda dapat menggunakan baris perintah untuk keduanya mengirim tweets baca, seperti yang disebutkan dalam halaman web ini , ekstrak di bawah ini:


Untuk menampilkan daftar tweet (ganti osxdaily dengan nama pengguna twitter pilihan Anda):

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

Untuk memperbarui status twitter Anda:

curl -u your_user:your_password -d status='This is My update' https://twitter.com/statuses/update.xml
barang
sumber
Area entri teks adalah sedikit yang saya harapkan untuk digunakan. Saya harus menggali dokumen launchbar dan melihat apakah ide ikal memiliki kaki .... Saya pikir mereka menonaktifkan pengiriman kata sandi secara jelas - jadi terima kasih untuk itu!
bmike
Saya pikir mereka menonaktifkan penggunaan pengiriman kata sandi untuk klien yang menggunakan API (menggantinya dengan metode otentikasi kunci), tetapi ini pada dasarnya, menggunakan situs web bukan klien, jadi menggunakan nama pengguna / kata sandi kemungkinan baik-baik saja. Bahkan, jika Anda sudah login dengan sesi aktif dan cookie dll, itu bahkan dapat bekerja tanpa mereka ... (coba tebak)
stuffe
Saya tidak berpikir cookie dibagikan antara Safari & curl. Dan mereka seharusnya tidak.
olivier
2
Twitter sepenuhnya beralih ke login berbasis OAuth dan menonaktifkan otentikasi dasar pada 30 Juni 2010. Perintah kedua dalam jawaban Anda tidak berfungsi sejak saat itu.
Mathias Bynens
3

Mengambil semua ini satu langkah lebih jauh dan menyusun apa yang telah kita pelajari sejauh ini, inilah tweet yang sepenuhnya terprogram:

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

Tentu saja ini rapuh, tetapi untuk saat ini, ia berfungsi. Saya ingin sekali menemukan hook yang sebenarnya , tetapi UI Scripting adalah solusinya.

Daniel
sumber
Oh rapi Adalah logis bahwa ⇧⌘D akan mengirim tweet (itu jalan pintas untuk Send in Mail).
jtbandes
1
Ditemukan secara tidak sengaja. Memori otot sangat kuat.
Daniel
3

Pergeseran perintah Brilliant D.

Menambahkan:

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
Eww
sumber
1

Saya menulis skrip lain yang memperbaiki beberapa masalah dalam skrip yang diposting oleh Ewwis:

  • Tidak ada cara untuk menutup dialog di awal.
  • Tindakan klik kedua tidak berfungsi jika Pusat Pemberitahuan tidak ditampilkan setelah login terakhir.
  • Script tidak berfungsi ketika ada penundaan sebelum tampilan untuk menulis tweet ditampilkan. Jika sudah mengandung beberapa teks, itu tidak dihapus.
  • Perintah keystroke hanya berfungsi untuk menyisipkan karakter yang dapat dimasukkan dengan metode input saat ini.
  • Bilah samping Pusat Pemberitahuan tidak ditutup di bagian akhir.

Itu tidak berfungsi ketika bilah samping Pusat Pemberitahuan terbuka.

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

Akan lebih mudah untuk hanya menggunakan API .

Lri
sumber
Hmm - Saya harus melihat ke dalam API. Itu ditambah peluncur saya, Launchbar akan jauh lebih baik daripada skrip UI. +1 dan mungkin jawaban terbaik baru.
bmike
0

Fantastis! Terima kasih telah menunjukkan kepada dunia cara lain.

Solusi saya bekerja untukKU, tetapi Anda juga.

Saya bukan ahli Applescript oleh FAR, tapi saya suka mengotak-atiknya.

Terima kasih!

Menggunakan apa yang saya pelajari dari Anda, berikut ini cara lain yang cocok untuk saya. Ini tidak menjawab beberapa kekhawatiran Anda tentang keyboard atau kesalahan alternatif, tapi mungkin itu akan memberi cahaya bagi seseorang yang mencoba-coba di 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
Eww
sumber