프로그래밍 방식으로 트윗 할 수 있도록 알림 센터 / 트위터에 어떤 후크가 있습니까?


12

특히 해당 유틸리티에서 트윗을 시작할 수 있도록 LaunchBar에 대한 사용자 지정 작업을 설계 하려고합니다. 알림 센터에는 "클릭하여 트윗"버튼이 있으므로 알림 센터에 프로그램 개발자가이 작업을 수행하는 기능을 추가 할 때까지 기다리지 않고 스크립트를 작성할 수있는 후크가 있는지 궁금합니다.


2
Notification Center에는 AppleScript Dictionary, Automator 작업이 없으며 실행 가능한 번들을 둘러 볼 때 나타나는 후크가 거의 없습니다.
다니엘

1
문자열 덤프는 "ShareKit", 다양한 sharingService 함수 및 "Share Widget"이라는 것이 있는데, 그 중 일부는 어쨌든 도움이 될 수 있습니다.
다니엘

나는 내일 큰 대답을 파헤칠 시간이 있지만 나는 그것이 얻을 수있는 추가 노출에 대해 이것을 바우 고 싶었다.
bmike

답변:


9

앱은 새로운 NSSharingService API 를 통해 공유 옵션에 연결할 수 있습니다 . 이 같은 소리 (이 API를 활성화하는 - 사용자 정의 실행 창 작업은 어떤 UNIX 실행 파일로 만들 수 있습니다 당신은 아마 작은 명령 줄 도구를 쓸 수있다 (당신이 그것을 테스트해야합니다 또는 당신이 실제 응용 프로그램을 구축해야 할 수도 있습니다) 그래서, )를 사용 NSSharingServiceNamePostOnTwitter하면 트윗 대화 상자가 표시됩니다.

업데이트 : AppleScript에서 트윗을 시작하려면 다음을 수행하십시오.

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

또한 "알림 및 배너 표시"/ 방해 금지 모드를 전환 할 수 있습니다.

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

(이것은 모두 알림 센터의 현재 창 레이아웃에만 적용되며 향후 OS X 업데이트에서 중단 될 수 있지만 쉽게 수정 될 수 있습니다.)


2
그리고 keystroke명령은 텍스트로 트윗을 시작할 수 있습니다. 프로그래밍 방식으로 트윗을 완성하려면…
Daniel

요세미티와 함께 ​​작동하도록 이것을 업데이트하지 못했습니다. 어떤 제안?
wst

1
@wst 흠, 까다로워 보인다. 노출 된 메뉴 표시 줄 항목을 클릭해도 더 이상 아무 것도하지 않는 것 같습니다 . 좋은 버그 보고서를 만들 수 있습니다 .
jtbandes

3

아무도 알지 못합니다 ( 실제로 알림 영역 내에 Twitter / Facebook 빠른 게시 영역 을 갖는 것은 실제로 바보 일뿐이며 실제로는 꺼져 있다고 생각합니다)하지만 명령 줄을 사용하여 웹 페이지 에서 언급 한대로 아래 트윗을 읽어보십시오 .


트윗 목록을 표시하려면 (osxdaily를 선택한 트위터 사용자 이름으로 바꾸십시오) :

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

트위터 상태를 업데이트하려면 :

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

텍스트 입력 영역은 내가 사용하기를 원하는 비트였습니다. 발사 막대 문서를 파고 컬 아이디어에 다리가 있는지 확인해야합니다 .... 암호를 분명하게 보내지 못하도록 생각했습니다.
bmike

API를 사용하는 클라이언트 (키 인증 방법으로 대체)에 대한 암호 전송 사용을 비활성화했다고 생각하지만 실제로는 클라이언트가 아닌 웹 사이트를 사용하므로 사용자 이름 / 암호를 사용하는 것이 좋습니다. 실제로, 당신이 이미 활성 세션과 쿠키 등으로 로그인했다면, 그것들 없이도 작동 할 수도 있습니다 ... (guesswork)
stuffe

Safari & 사이에 쿠키가 공유되지 않는다고 생각합니다 curl. 그리고 어쨌든 그들은해서는 안됩니다.
올리비에

2
Twitter는 2010 년 6 월 30 일에 OAuth 기반 로그인으로 완전히 전환하고 기본 인증을 비활성화했습니다. 그 이후로 답변의 두 번째 명령이 작동하지 않았습니다.
Mathias Bynens

3

한 걸음 더 나아가서 지금까지 배운 내용을 종합하면 다음과 같이 완전히 프로그래밍 가능한 트윗이 있습니다.

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

물론 이것은 깨지기 쉽지만 현재로서는 작동합니다. 나는 진짜 후크 를 찾고 싶지만 UI 스크립팅은 해결 방법입니다.


오, 깔끔 해요 ⇧⌘D가 트윗 (메일로 보내기의 바로 가기)을 보내는 것이 합리적입니다.
jtbandes

1
실수로 찾았습니다. 근육 기억력이 강력합니다.
다니엘

3

화려한 커맨드 시프트 D.

첨가:

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가 게시 한 스크립트의 일부 문제를 해결하는 다른 스크립트를 작성했습니다.

  • 처음에 대화 상자를 닫을 방법이 없었습니다.
  • 마지막 로그인 후 알림 센터가 표시되지 않은 경우 두 번째 클릭 동작이 작동하지 않았습니다.
  • 트윗 작성에 대한보기가 표시되기 전에 지연이 발생하면 스크립트가 작동하지 않았습니다. 텍스트가 이미 포함되어 있으면 지워지지 않았습니다.
  • 키 입력 명령은 현재 입력 방법으로 입력 할 수있는 문자를 삽입하는 경우에만 작동합니다.
  • 마지막에 알림 센터 사이드 바가 닫히지 않았습니다.

알림 센터 사이드 바가 열려 있으면 작동하지 않습니다.

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를 사용하는 것이 더 쉬울 것 입니다.


흠-API를 조사해야합니다. 그뿐만 아니라 내 실행기 인 Launchbar가 UI 스크립팅보다 훨씬 낫습니다. +1 및 새로운 최고 답변.
bmike

0

환상적인! 세상을 다른 방식으로 보여 주셔서 감사합니다.

내 솔루션은 나를 위해 일했지만 당신도 그렇게했습니다.

나는 FAR의 Applescript 전문가는 아니지만 그것을 다루는 것을 좋아합니다.

감사!

내가 당신에게서 배운 것을 사용하여, 나를 위해 일하는 또 다른 방법이 있습니다. 이것은 대체 키보드 나 오류에 대한 귀하의 우려를 해결하지는 못하지만, 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.