Móc nối nào tồn tại trong Trung tâm thông báo / twitter để tôi có thể tweet theo chương trình?


12

Tôi đặc biệt mong muốn thiết kế một hành động tùy chỉnh cho LaunchBar để tôi có thể bắt đầu một tweet từ tiện ích đó. Vì Trung tâm thông báo có nút "Nhấp để tweet", tôi tự hỏi liệu Trung tâm thông báo có bất kỳ móc nối nào cho phép tôi viết kịch bản này mà không cần chờ nhà phát triển chương trình thêm chức năng thực hiện hành động này không.


2
Trung tâm thông báo không có Từ điển AppleScript, không có hành động Automator và đáng buồn là cách các móc rõ ràng xuất hiện khi chọc vào gói thực thi.
Daniel

1
Một chuỗi các gợi ý có một cái gì đó gọi là "ShareKit", các hàm SharingService khác nhau và một cái gì đó gọi là "Widget chia sẻ" - có lẽ một số tập hợp con có thể hữu ích bằng cách nào đó.
Daniel

Tôi sẽ có thời gian để tìm hiểu những câu trả lời tuyệt vời vào ngày mai nhưng tôi muốn trả tiền cho bất kỳ tiếp xúc bổ sung nào mà nó có thể đạt được.
bmike

Câu trả lời:


9

Các ứng dụng có thể kết nối với các tùy chọn chia sẻ với API NSSharingService mới . Có vẻ như các hành động LaunchBar tùy chỉnh có thể được thực hiện với bất kỳ tệp thực thi UNIX nào, vì vậy bạn có thể viết một công cụ dòng lệnh nhỏ (hoặc bạn có thể cần phải xây dựng một ứng dụng thực tế - bạn sẽ phải kiểm tra nó) để kích hoạt API này ( bằng cách sử dụng NSSharingServiceNamePostOnTwitter) và sẽ hiển thị hộp thoại tweet.

Cập nhật: để bắt đầu một tweet từ AppleScript, bạn có thể làm như sau:

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

Hơn nữa, bạn có thể chuyển đổi "Hiển thị cảnh báo và biểu ngữ" / không làm phiền chế độ:

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

(Đây là tất cả rất cụ thể đối với bố cục cửa sổ hiện tại của Trung tâm thông báo và có khả năng bị hỏng với các bản cập nhật OS X trong tương lai - nhưng có thể sẽ có các bản sửa lỗi dễ dàng.)


2
Và một keystrokelệnh có thể bắt đầu Tweet ra với văn bản. Bây giờ để lập trình hoàn thành Tweet Tweet
Daniel

Tôi đã cố gắng không thành công để cập nhật điều này để hoạt động với Yosemite. Bất kỳ đề xuất?
WST

1
@wst Hừm, có vẻ láu cá. Có vẻ như nhấp vào mục thanh trình đơn bị lộ không làm gì nữa - có thể tạo báo cáo lỗi tốt .
jtbandes

3

Không ai tôi biết (và thực tế tôi nghĩ rằng có một khu vực đăng nhanh Twitter / Facebook bên trong khu vực thông báo thực sự là câm (nên là một tiện ích thực sự), và tôi đã tắt nó) nhưng bạn có thể sử dụng dòng lệnh để cả hai đều gửi một tweet đọc, như được đề cập trong trang web này , trích đoạn dưới đây:


Để hiển thị danh sách các tweet (thay thế osxd Daily bằng tên người dùng twitter bạn chọn):

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

Để cập nhật trạng thái twitter của bạn:

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

Khu vực nhập văn bản là bit tôi đã hy vọng sử dụng. Tôi sẽ phải đào sâu vào các tài liệu của launchbar và xem liệu ý tưởng cuộn tròn có chân nào không .... Tôi nghĩ rằng họ đã vô hiệu hóa việc gửi mật khẩu rõ ràng - vì vậy cảm ơn vì điều đó!
bmike

Tôi nghĩ rằng họ đã vô hiệu hóa việc sử dụng mật khẩu gửi cho khách hàng sử dụng API (thay thế bằng phương thức xác thực khóa), nhưng thực tế, việc sử dụng trang web này không phải là máy khách, vì vậy sử dụng tên người dùng / mật khẩu có thể sẽ ổn. Trên thực tế, nếu bạn đã đăng nhập bằng một phiên hoạt động và cookie, v.v., nó thậm chí có thể hoạt động mà không có chúng ... (phỏng đoán)
nhồi vào

Tôi không nghĩ cookie được chia sẻ giữa Safari & curl. Và dù sao họ cũng không nên như vậy.
olivier

2
Twitter hoàn toàn chuyển sang đăng nhập dựa trên OAuth và vô hiệu hóa xác thực cơ bản vào ngày 30 tháng 6 năm 2010. Lệnh thứ hai trong câu trả lời của bạn đã không hoạt động kể từ đó.
Mathias Bynens

3

Tiến xa hơn tất cả một bước và tập hợp những gì chúng ta đã học cho đến nay, đây là một tweet đầy đủ chương trình:

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

Tất nhiên điều này là mong manh, nhưng bây giờ, nó hoạt động. Tôi muốn tìm một cái móc thực sự , nhưng UI Scripting là một cách giải quyết.


Ồ, gọn gàng. Thật hợp lý khi ⇧⌘D sẽ gửi tweet (đó là lối tắt cho Gửi trong thư).
jtbandes

1
Tìm thấy nó do nhầm lẫn. Bộ nhớ cơ bắp là mạnh mẽ.
Daniel

3

Chuyển lệnh rực rỡ D.

Thêm:

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

Tôi đã viết một tập lệnh khác khắc phục một số vấn đề trong tập lệnh được đăng bởi Ewwis:

  • Không có cách nào để đóng hộp thoại khi bắt đầu.
  • Hành động nhấp chuột thứ hai không hoạt động nếu Trung tâm thông báo chưa được hiển thị sau lần đăng nhập cuối cùng.
  • Kịch bản không hoạt động khi có độ trễ trước khi chế độ xem soạn tweet được hiển thị. Nếu nó đã chứa một số văn bản, nó sẽ không bị xóa.
  • Lệnh gõ phím chỉ hoạt động để chèn các ký tự có thể được nhập bằng phương thức nhập hiện tại.
  • Thanh bên Trung tâm thông báo không được đóng ở cuối.

Nó không hoạt động khi thanh bên Trung tâm thông báo đang mở.

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

Nó sẽ dễ dàng hơn để chỉ sử dụng API .


Hmm - Tôi sẽ phải xem xét API. Điều đó cộng với trình khởi chạy của tôi, Launchbar sẽ tốt hơn nhiều so với kịch bản UI. +1 và có thể là một câu trả lời mới tốt nhất.
bmike

0

Tuyệt diệu! Cảm ơn đã cho thế giới thấy một cách khác.

Giải pháp của tôi đã làm việc cho ME, nhưng bạn cũng vậy.

Tôi không phải là chuyên gia về Applescript của FAR, nhưng tôi rất thích chơi với nó.

Cảm ơn!

Sử dụng những gì tôi học được từ bạn, đây là một cách khác phù hợp với tôi. Điều này không giải quyết được một số lo ngại của bạn về bàn phím thay thế hoặc lỗi, nhưng có lẽ nó sẽ làm sáng tỏ một ai đó đang say mê 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.