มีตะขออะไรอยู่ในศูนย์การแจ้งเตือน / twitter เพื่อให้ฉันสามารถทวีตแบบเป็นโปรแกรมได้


12

ฉันกำลังมองหาการออกแบบการกระทำที่กำหนดเองสำหรับLaunchBar โดยเฉพาะเพื่อให้ฉันสามารถเริ่มทวีตจากยูทิลิตี้นั้น เนื่องจากศูนย์การแจ้งเตือนมีปุ่ม "คลิกเพื่อทวีต" ฉันสงสัยว่าศูนย์การแจ้งเตือนมีตะขอใด ๆ ที่จะอนุญาตให้ฉันเขียนสคริปต์นี้โดยไม่รอให้นักพัฒนาโปรแกรมเพิ่มฟังก์ชันเพื่อดำเนินการนี้


2
ศูนย์การแจ้งเตือนไม่มีพจนานุกรม AppleScript ไม่มีการกระทำโดยอัตโนมัติและน่าเศร้าเล็กน้อยในลักษณะของตะขอที่เห็นได้ชัดซึ่งปรากฏขึ้นเมื่อโผล่ไปรอบ ๆ ชุดคำสั่งปฏิบัติการ
แดเนียล

1
การถ่ายโอนสตริงของการแนะนำมีสิ่งที่เรียกว่า "ShareKit", ฟังก์ชั่น SharingService ต่างๆและสิ่งที่เรียกว่า "แบ่งปัน Widget" - บางทีชุดย่อยบางส่วนของที่อาจเป็นประโยชน์อย่างใด
แดเนียล

ฉันจะมีเวลาขุดคำตอบที่ดีในวันพรุ่งนี้ แต่ฉันต้องการที่จะได้รับรางวัลนี้สำหรับการเปิดรับเพิ่มเติมใด ๆ ที่มันอาจได้รับ
bmike

คำตอบ:


9

แอพสามารถเชื่อมต่อกับตัวเลือกการแชร์ด้วยNSSharingService API ใหม่ มันเสียงเหมือนการกระทำ LaunchBar ที่กำหนดเองสามารถทำกับแฟ้มที่ปฏิบัติการยูนิกซ์ใด ๆ ดังนั้นคุณอาจจะเขียนเครื่องมือบรรทัดคำสั่งขนาดเล็ก (หรือคุณอาจจำเป็นต้องสร้างแอปที่เกิดขึ้นจริง - คุณจะต้องทดสอบออก) ซึ่งเปิดใช้งาน API นี้ ( ใช้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คำสั่งสามารถเริ่มทวีตด้วยข้อความ ตอนนี้เพื่อดำเนินการทวีตให้เสร็จสมบูรณ์โดยทางโปรแกรม…
แดเนียล

ฉันพยายามอัปเดตสิ่งนี้เพื่อทำงานกับโยเซมิตีไม่สำเร็จ ข้อเสนอแนะใด ๆ
wst

1
@wst หืมมมดูเหมือนว่าจะยุ่งยาก ดูเหมือนว่ารายการคลิกแถบเมนูสัมผัสไม่ได้ทำอะไรอีกต่อไป - อาจจะทำให้ดีรายงานข้อผิดพลาด
jtbandes

3

ไม่มีที่ฉันรู้ (และอันที่จริงฉันคิดว่าการมีพื้นที่โพสต์แบบรวดเร็ว Twitter / Facebook ในพื้นที่แจ้งเตือนนั้นเป็นจริง (ควรเป็นเครื่องมือจริงๆ) และฉันได้ปิด) แต่คุณสามารถใช้บรรทัดคำสั่งเพื่อ ทั้งสองส่งทวีตอ่านตามที่กล่าวไว้ในหน้าเว็บนี้แยกด้านล่าง:


หากต้องการแสดงรายการทวีต (แทนที่ osxdaily ด้วยชื่อผู้ใช้ twitter ที่คุณเลือก):

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

หากต้องการอัปเดตสถานะ Twitter ของคุณ:

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

พื้นที่ป้อนข้อความเป็นบิตที่ฉันหวังว่าจะใช้ ฉันจะต้องขุดลงในเอกสาร Launchbar และดูว่าแนวคิด curl มีขาใด ๆ .... ฉันคิดว่าพวกเขาปิดการใช้งานที่ส่งรหัสผ่านในที่ชัดเจน - ขอบคุณมากสำหรับสิ่งนั้น!
bmike

ฉันคิดว่าพวกเขาปิดใช้งานการใช้รหัสผ่านที่ส่งให้กับลูกค้าที่ใช้ API (แทนที่ด้วยวิธีการรับรองความถูกต้องของคีย์) แต่นี่คือผลการใช้เว็บไซต์ไม่ใช่ลูกค้าดังนั้นการใช้ชื่อผู้ใช้ / รหัสผ่านอาจเป็นเรื่องปกติ ในความเป็นจริงถ้าคุณได้เข้าสู่ระบบด้วยเซสชั่นที่ใช้งานและคุกกี้ ฯลฯ มันอาจทำงานได้โดยไม่มีพวกเขา ... (คาดเดา)
stuffe

ฉันไม่คิดว่าคุกกี้ร่วมกันระหว่าง Safari curl& และพวกเขาก็ไม่ควรเป็นเช่นนั้น
olivier

2
Twitter เปลี่ยนเป็นการเข้าสู่ระบบตาม OAuth อย่างสมบูรณ์และปิดใช้งานการรับรองความถูกต้องเบื้องต้นในวันที่ 30 มิถุนายน 2010 คำสั่งที่สองในคำตอบของคุณยังไม่ได้ผล
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 Scripting เป็นวิธีแก้ปัญหา


โอ้เรียบร้อย มันสมเหตุสมผลที่⇧⌘Dจะส่งทวีต (นั่นคือทางลัดสำหรับส่งในเมล)
jtbandes

1
พบโดยไม่ได้ตั้งใจ หน่วยความจำของกล้ามเนื้อมีประสิทธิภาพ
Daniel

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:

  • ไม่มีวิธีปิดการสนทนาในตอนเริ่มต้น
  • การคลิกครั้งที่สองไม่ทำงานหากศูนย์การแจ้งเตือนไม่ได้ถูกแสดงหลังจากเข้าสู่ระบบครั้งล่าสุด
  • สคริปต์ไม่ทำงานเมื่อมีความล่าช้าก่อนที่จะมีการแสดงทวีต หากมีข้อความอยู่แล้วแสดงว่าไม่ได้ลบทิ้ง
  • คำสั่ง keystroke ทำงานเฉพาะสำหรับการแทรกอักขระที่สามารถป้อนด้วยวิธีการป้อนข้อมูลปัจจุบัน
  • แถบด้านข้างของศูนย์การแจ้งเตือนไม่ได้ปิดในตอนท้าย

มันไม่ทำงานเมื่อเปิดแถบด้านข้างของศูนย์การแจ้งเตือน

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

Fantastic! ขอขอบคุณที่แสดงให้โลกเห็นอีกทางหนึ่ง

โซลูชันของฉันใช้งานได้กับฉัน แต่ก็เป็นเช่นนั้น

ฉันไม่ใช่ผู้เชี่ยวชาญ Applescript โดย FAR แต่ฉันชอบเล่นซอกับมัน

ขอบคุณ!

ใช้สิ่งที่ฉันเรียนรู้จากคุณนี่คืออีกวิธีหนึ่งที่เหมาะกับฉัน สิ่งนี้ไม่ได้ตอบข้อกังวลของคุณบางอย่างเกี่ยวกับแป้นพิมพ์หรือข้อผิดพลาดอื่น ๆ แต่บางทีมันอาจจะทำให้คนที่ขี้ขลาดใน 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.