अधिसूचना केंद्र / ट्विटर में क्या हुक मौजूद हैं ताकि मैं प्रोग्रामेटिक रूप से ट्वीट कर सकूं?


12

मैं विशेष रूप से LaunchBar के लिए एक कस्टम एक्शन डिजाइन करना चाह रहा हूं ताकि मैं उस उपयोगिता से एक ट्वीट शुरू कर सकूं । चूंकि अधिसूचना केंद्र में "ट्वीट करने के लिए क्लिक करें" बटन है, इसलिए मुझे आश्चर्य हुआ कि क्या अधिसूचना केंद्र में कोई हुक है जो मुझे इस स्क्रिप्ट की अनुमति देगा बिना प्रोग्राम के डेवलपर की प्रतीक्षा किए बिना इस क्रिया को करने के लिए फ़ंक्शन जोड़ें।


2
अधिसूचना केंद्र में कोई AppleScript डिक्शनरी नहीं है, कोई भी स्वचालक कार्य नहीं है, और स्पष्ट रूप से स्पष्ट हुक के रूप में दुख की बात है जो निष्पादन योग्य बंडल के आसपास पोकिंग करते हैं।
डैनियल

1
सुझाव का एक तार डंप है "ShareKit", विभिन्न साझाकरण सेवा कार्यों और "शेयर विजेट" नामक कुछ चीज़ों के बारे में - शायद कुछ उपसमूह किसी भी तरह से सहायक हो सकते हैं।
डैनियल

मैं कल महान जवाब में खुदाई करने के लिए होगा, लेकिन मैं किसी भी अतिरिक्त जोखिम के लिए यह लाभ उठाना चाहता था।
bmike

जवाबों:


9

एप्लिकेशन नए NSSharingService 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

(यह अधिसूचना केंद्र की वर्तमान विंडो लेआउट के लिए बहुत विशिष्ट है और भविष्य के ओएस एक्स अपडेट के साथ टूटने की संभावना है - लेकिन शायद आसान फ़िक्स होंगे।)


2
और एक keystrokeकमांड कलरव के साथ ट्वीट शुरू कर सकता है। अब प्रोग्राम के रूप में ट्वीट ... पूरा करने के लिए
डैनियल

मैं Yosemite के साथ काम करने के लिए इसे अपडेट करने का असफल प्रयास कर रहा हूं। कोई सुझाव?
wst

1
@wm Hm, मुश्किल लग रहा है। ऐसा लगता है कि एक्सपोज्ड मेन्यू बार आइटम पर क्लिक करने से कुछ नहीं होता है - यह एक अच्छी बग रिपोर्ट बना सकता है ।
jtbandes

3

कोई भी जिसे मैं जानता हूं (और वास्तव में मुझे लगता है कि सूचना क्षेत्र के अंदर एक ट्विटर / फेसबुक त्वरित पोस्ट क्षेत्र वास्तव में गूंगा है (एक विजेट वास्तव में होना चाहिए), और मैंने इसे बंद कर दिया है) लेकिन आप कमांड लाइन का उपयोग कर सकते हैं दोनों एक लिखित ट्वीट भेजते हैं, जैसा कि इस वेबपेज में बताया गया है , नीचे अर्क:


ट्वीट्स की एक सूची प्रदर्शित करने के लिए (अपनी पसंद के ट्विटर उपयोगकर्ता नाम के साथ 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

मुझे लगता है कि उन्होंने एपीआई का उपयोग करने वाले क्लाइंट के लिए पासवर्ड भेजने के उपयोग को अक्षम कर दिया (इसे कुंजी प्रमाणीकरण विधि से बदल दिया गया), लेकिन यह प्रभावी रूप से वेबसाइट का उपयोग करके क्लाइंट नहीं है, इसलिए उपयोगकर्ता नाम / पासवर्ड का उपयोग करना ठीक है। वास्तव में, यदि आप पहले से ही एक सक्रिय सत्र और कुकी आदि के साथ लॉग इन कर रहे हैं, तो यह उनके बिना भी काम कर सकता है ... (अनुमान)
stuffe

मुझे नहीं लगता कि कुकीज़ सफारी और के बीच साझा की जाती हैं curl। और वे वैसे भी नहीं होना चाहिए।
ओलिवियर

2
ट्विटर पूरी तरह से 30 जून 2010 को OAuth- आधारित लॉगिन और अक्षम मूल प्रमाणीकरण पर आ गया। तब से आपके उत्तर की दूसरी कमांड ने काम नहीं किया है।
मथियास ब्येनेंस

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 स्क्रिप्टिंग एक वर्कअराउंड है।


ओह, साफ-सुथरा। यह तर्कसंगत है कि logicalD ट्वीट भेजेगा (जो कि मेल के लिए शॉर्टकट है)।
jtbandes

1
गलती से मिल गया। मांसपेशियों की याददाश्त शक्तिशाली होती है।
डैनियल

3

शानदार कमांड शिफ्ट डी।

जोड़ना:

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

केवल एपीआई का उपयोग करना आसान होगा ।


हम्म - मुझे एपीआई में देखना होगा। इसके अलावा मेरा लॉन्चर, लॉन्चबार यूआई स्क्रिप्टिंग से बहुत बेहतर होगा। +1 और संभवतः एक नया सर्वश्रेष्ठ उत्तर।
bmike

0

बहुत खुबस! दुनिया को दूसरा रास्ता दिखाने के लिए धन्यवाद।

मेरे समाधान ने मेरे लिए काम किया, लेकिन तुम्हारा है।

मैं एफएआर द्वारा एप्सस्क्रिप्ट का विशेषज्ञ नहीं हूं, लेकिन मैं इससे प्यार करता हूं।

धन्यवाद!

मैंने आपसे जो सीखा है, उसका उपयोग करते हुए, यहां एक और तरीका है जो मेरे लिए काम करता है। यह वैकल्पिक कीबोर्ड या त्रुटियों के बारे में आपकी कुछ चिंताओं को संबोधित नहीं करता है, लेकिन हो सकता है कि यह 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.