عميل API Twitter للعقدة
يدعم كل من الباقي واتجاه API.
npm install twit
var Twit = require ( 'twit' )
var T = new Twit ( {
consumer_key : '...' ,
consumer_secret : '...' ,
access_token : '...' ,
access_token_secret : '...' ,
timeout_ms : 60 * 1000 , // optional HTTP request timeout to apply to all requests.
strictSSL : true , // optional - requires SSL certificates to be valid.
} )
//
// tweet 'hello world!'
//
T . post ( 'statuses/update' , { status : 'hello world!' } , function ( err , data , response ) {
console . log ( data )
} )
//
// search twitter for all tweets containing the word 'banana' since July 11, 2011
//
T . get ( 'search/tweets' , { q : 'banana since:2011-07-11' , count : 100 } , function ( err , data , response ) {
console . log ( data )
} )
//
// get the list of user id's that follow @tolga_tezel
//
T . get ( 'followers/ids' , { screen_name : 'tolga_tezel' } , function ( err , data , response ) {
console . log ( data )
} )
//
// Twit has promise support; you can use the callback API,
// promise API, or both at the same time.
//
T . get ( 'account/verify_credentials' , { skip_status : true } )
. catch ( function ( err ) {
console . log ( 'caught error' , err . stack )
} )
. then ( function ( result ) {
// `result` is an Object with keys "data" and "resp".
// `data` and `resp` are the same objects as the ones passed
// to the callback.
// See https://github.com/ttezel/twit#tgetpath-params-callback
// for details.
console . log ( 'data' , result . data ) ;
} )
//
// retweet a tweet with id '343360866131001345'
//
T . post ( 'statuses/retweet/:id' , { id : '343360866131001345' } , function ( err , data , response ) {
console . log ( data )
} )
//
// destroy a tweet with id '343360866131001345'
//
T . post ( 'statuses/destroy/:id' , { id : '343360866131001345' } , function ( err , data , response ) {
console . log ( data )
} )
//
// get `funny` twitter users
//
T . get ( 'users/suggestions/:slug' , { slug : 'funny' } , function ( err , data , response ) {
console . log ( data )
} )
//
// post a tweet with media
//
var b64content = fs . readFileSync ( '/path/to/img' , { encoding : 'base64' } )
// first we must post the media to Twitter
T . post ( 'media/upload' , { media_data : b64content } , function ( err , data , response ) {
// now we can assign alt text to the media, for use by screen readers and
// other text-based presentations and interpreters
var mediaIdStr = data . media_id_string
var altText = "Small flowers in a planter on a sunny balcony, blossoming."
var meta_params = { media_id : mediaIdStr , alt_text : { text : altText } }
T . post ( 'media/metadata/create' , meta_params , function ( err , data , response ) {
if ( ! err ) {
// now we can reference the media and post a tweet (media will attach to the tweet)
var params = { status : 'loving life #nofilter' , media_ids : [ mediaIdStr ] }
T . post ( 'statuses/update' , params , function ( err , data , response ) {
console . log ( data )
} )
}
} )
} )
//
// post media via the chunked media upload API.
// You can then use POST statuses/update to post a tweet with the media attached as in the example above using `media_id_string`.
// Note: You can also do this yourself manually using T.post() calls if you want more fine-grained
// control over the streaming. Example: https://github.com/ttezel/twit/blob/master/tests/rest_chunked_upload.js#L20
//
var filePath = '/absolute/path/to/file.mp4'
T . postMediaChunked ( { file_path : filePath } , function ( err , data , response ) {
console . log ( data )
} )
//
// stream a sample of public statuses
//
var stream = T . stream ( 'statuses/sample' )
stream . on ( 'tweet' , function ( tweet ) {
console . log ( tweet )
} )
//
// filter the twitter public stream by the word 'mango'.
//
var stream = T . stream ( 'statuses/filter' , { track : 'mango' } )
stream . on ( 'tweet' , function ( tweet ) {
console . log ( tweet )
} )
//
// filter the public stream by the latitude/longitude bounded box of San Francisco
//
var sanFrancisco = [ '-122.75' , '36.8' , '-121.75' , '37.8' ]
var stream = T . stream ( 'statuses/filter' , { locations : sanFrancisco } )
stream . on ( 'tweet' , function ( tweet ) {
console . log ( tweet )
} )
//
// filter the public stream by english tweets containing `#apple`
//
var stream = T . stream ( 'statuses/filter' , { track : '#apple' , language : 'en' } )
stream . on ( 'tweet' , function ( tweet ) {
console . log ( tweet )
} )
var T = new Twit(config)
قم بإنشاء مثيل Twit
يمكن استخدامه لتقديم طلبات إلى واجهات برمجة تطبيقات Twitter.
إذا كانت المصادقة مع سياق المستخدم ، يجب أن يكون config
كائنًا للنموذج:
{
consumer_key: '...'
, consumer_secret: '...'
, access_token: '...'
, access_token_secret: '...'
}
إذا كانت المصادقة مع سياق التطبيق ، يجب أن يكون config
كائنًا للنموذج:
{
consumer_key: '...'
, consumer_secret: '...'
, app_only_auth: true
}
لاحظ أن Auth-Auth Auth فقط لن يسمح لك بإجراء طلبات لنقاط نهاية API التي تتطلب سياق المستخدم ، مثل نشر التغريدات. ومع ذلك ، يمكن أن يكون لنقاط النهاية المتاحة حد لمعدل أعلى.
T.get(path, [params], callback)
الحصول على أي من نقاط نهاية API REST.
طريق
نقطة النهاية لضرب. عند تحديد قيم path
، حذف ".json" في النهاية (أي استخدام "Search/Tweets" بدلاً من "Search/Tweets.json" ).
params
(اختياري) المعلمات للطلب.
أتصل مرة أخرى
function (err, data, response)
data
هي البيانات المحلية المستلمة من Twitter.response
هي [http.incomingmessage] (http://nodejs.org/api/http.html# http_http_incomingmessage) المستلمة من Twitter. T.post(path, [params], callback)
انشر أي من نقاط نهاية API REST. نفس الاستخدام مثل T.get()
.
T.postMediaChunked(params, callback)
وظيفة المساعد لنشر الوسائط عبر الوسائط/التحميل (chunked) API. params
هو كائن يحتوي على مفتاح file_path
. file_path
هو المسار المطلق للملف الذي تريد تحميله.
var filePath = '/absolute/path/to/file.mp4'
T . postMediaChunked ( { file_path : filePath } , function ( err , data , response ) {
console . log ( data )
} )
يمكنك أيضًا استخدام API Post Media/Apload عبر مكالمات T.Post () إذا كنت تريد المزيد من التحكم الدقيق في البث ؛ [انظر هنا للحصول على مثال] (https://github.com/ttezel/twit/blob/master/tests/rest_chunked_upload.js# l20).
T.getAuth()
احصل على رموز مصادقة العميل.
T.setAuth(tokens)
قم بتحديث رموز مصادقة العميل.
T.stream(path, [params])
استخدم هذا مع API البث.
طريق
تدفق نقطة النهاية لضرب. واحد من:
للحصول على وصف لكل نقطة نهاية دفق ، راجع مستندات API Twitter.
params
(اختياري) المعلمات للطلب. يتم تحويل أي صفائف تم تمريرها في params
إلى سلاسل مفصولة بفاصلة ، مما يتيح لك تقديم طلبات مثل:
//
// I only want to see tweets about my favorite fruits
//
// same result as doing { track: 'bananas,oranges,strawberries' }
var stream = T . stream ( 'statuses/filter' , { track : [ 'bananas' , 'oranges' , 'strawberries' ] } )
stream . on ( 'tweet' , function ( tweet ) {
//...
} )
T.stream(path, [params])
يحافظ على الاتصال على قيد الحياة ، ويعيد EventEmitter
.
تنبعث الأحداث التالية:
ينبعث في كل مرة يتم استلام كائن في الدفق. هذا حدث مشتركة يمكن استخدامه لمعالجة أي بيانات تم استلامها في الدفق ، بدلاً من استخدام الأحداث الأكثر تحديدًا الموثقة أدناه. جديد في الإصدار 2.1.0.
stream . on ( 'message' , function ( msg ) {
//...
} )
تنبعث في كل مرة تأتي حالة (تغريدة) في الدفق.
stream . on ( 'tweet' , function ( tweet ) {
//...
} )
تنبعث في كل مرة تأتي رسالة الحذف (تغريدة) في الدفق.
stream . on ( 'delete' , function ( deleteMessage ) {
//...
} )
تنبعث في كل مرة تأتي رسالة تقييد إلى الدفق.
stream . on ( 'limit' , function ( limitMessage ) {
//...
} )
تنبعث في كل مرة تأتي رسالة حذف الموقع إلى الدفق.
stream . on ( 'scrub_geo' , function ( scrubGeoMessage ) {
//...
} )
تنبعث عندما تأتي رسالة فصل من Twitter. يحدث هذا إذا كان لديك تدفقات متعددة متصلة بواجهة برمجة تطبيقات Twitter. عند تلقي رسالة فصل من Twitter ، ستغلق Twit
الاتصال وينبعث من هذا الحدث بتفاصيل الرسالة التي تم استلامها من Twitter.
stream . on ( 'disconnect' , function ( disconnectMessage ) {
//...
} )
المنبعثة عند إجراء محاولة اتصال على Twitter. ينبعث كائن request
HTTP.
stream . on ( 'connect' , function ( request ) {
//...
} )
المنبعثة عند استلام الرد من Twitter. ينبعث كائن response
HTTP.
stream . on ( 'connected' , function ( response ) {
//...
} )
تنبعث عندما يتم جدولة محاولة إعادة الاتصال إلى Twitter. إذا كان Twitter يعاني من مشاكل أو حصلنا على معدل محدود ، فنحن نحدد تحديدًا وفقًا لإرشادات إعادة الاتصال على Twitter. تنبعث آخر request
HTTP وكائنات response
، إلى جانب الوقت (بالميلي ثانية) المتبقية قبل حدوث إعادة الاتصال.
stream . on ( 'reconnect' , function ( request , response , connectInterval ) {
//...
} )
هذه الرسالة مناسبة للعملاء الذين يستخدمون اتصالات عالية النطاق الترددي ، مثل خروع النار. إذا كان اتصالك يتخلف ، فسيقوم Twitter بتصوير رسائل لك ، حتى تملأ قائمة الانتظار الخاصة بك ، وفي هذه النقطة سوف يفصلونك.
stream . on ( 'warning' , function ( warning ) {
//...
} )
المنبعث عندما يرسل Twitter رسالة status_withheld
في الدفق. وهذا يعني أن تغريدة تم حجبها في بعض البلدان.
stream . on ( 'status_withheld' , function ( withheldMsg ) {
//...
} )
المنبعث عندما يرسل Twitter رسالة user_withheld
في الدفق. هذا يعني أنه تم حجب مستخدم Twitter في بعض البلدان.
stream . on ( 'user_withheld' , function ( withheldMsg ) {
//...
} )
ينبعث عندما يرسل Twitter [Preamble "[" Friends "] (https://dev.twitter.com/streaming/overview/messages-types# user_stream_messsages) عند الاتصال بتيار مستخدم. تحتوي هذه الرسالة على قائمة بأصدقاء المستخدم ، ممثلة كمجموعة من معرفات المستخدم. إذا تم تعيين معلمة stringify_friend_ids ، فسيتم إرجاع ديباجة قائمة الأصدقاء كأسلاك (بدلاً من الأرقام).
var stream = T . stream ( 'user' , { stringify_friend_ids : true } )
stream . on ( 'friends' , function ( friendsMsg ) {
//...
} )
المنبعثة عند إرسال رسالة مباشرة إلى المستخدم. لسوء الحظ ، لم يقم Twitter بتوثيق هذا الحدث لتيارات المستخدمين.
stream . on ( 'direct_message' , function ( directMsg ) {
//...
} )
المنبعث عندما يرسل Twitter حدث دفق المستخدم. راجع مستندات Twitter لمزيد من المعلومات حول بنية كل حدث.
stream . on ( 'user_event' , function ( eventMsg ) {
//...
} )
بالإضافة إلى ذلك ، يتم توفير أحداث دفق المستخدم التالية للاستماع إليها:
blocked
unblocked
favorite
unfavorite
follow
unfollow
mute
unmute
user_update
list_created
list_destroyed
list_updated
list_member_added
list_member_removed
list_user_subscribed
list_user_unsubscribed
quoted_tweet
retweeted_retweet
favorited_retweet
unknown_user_event
(لحدث لا يتطابق مع أي مما سبق) stream . on ( 'favorite' , function ( event ) {
//...
} )
ينبعث عند حدوث طلب API أو خطأ في الاستجابة. ينبعث كائن Error
، مع الخصائص:
{
message : '...' , // error message
statusCode : '...' , // statusCode from Twitter
code : '...' , // error code from Twitter
twitterReply : '...' , // raw response data from Twitter
allErrors : '...' // array of errors returned from Twitter
}
استدعاء هذه الوظيفة على الدفق لوقف البث (يغلق الاتصال مع Twitter).
استدعاء هذه الوظيفة لإعادة تشغيل الدفق بعد استدعاء .stop()
عليها. ملاحظة: ليست هناك حاجة للاتصال .start()
للبدء في التدفق. Twit.stream
مكالمات .start()
بالنسبة لك.
أي شيء في واجهة برمجة تطبيقات Twitter:
انتقل إلى هنا لإنشاء تطبيق والحصول على بيانات اعتماد OAuth (إذا لم تكن قد لم تكن بالفعل): https://apps.twitter.com/app/new
يمكنك تحديد مجموعة من بصمات أصابع الشهادة الموثوقة إذا كنت ترغب فقط في الوثوق بمجموعة محددة من الشهادات. عند استلام استجابة HTTP ، يتم التحقق من توقيع الشهادة ، ويجب أن تكون بصمة شهادة النظير واحدة من القيم التي حددتها. بشكل افتراضي ، سيتم استخدام CAS Node.js الموثوق بها.
على سبيل المثال.
var twit = new Twit ( {
consumer_key : '...' ,
consumer_secret : '...' ,
access_token : '...' ,
access_token_secret : '...' ,
trusted_cert_fingerprints : [
'66:EA:47:62:D9:B1:4F:1A:AE:89:5F:68:BA:6B:8E:BB:F8:1D:BF:8E' ,
]
} )
قم بإنشاء ملفين: config1.js
و config2.js
في جذر المجلد twit
. يجب أن تحتوي على مجموعتين مختلفتين من بيانات اعتماد OAuth لاستخدامها (هناك حاجة إلى حسابين لاختبار التفاعلات). يجب أن يبدوا كلاهما مثل هذا:
module.exports = {
consumer_key: '...'
, consumer_secret: '...'
, access_token: '...'
, access_token_secret: '...'
}
ثم قم بتشغيل الاختبارات:
npm test
يمكنك أيضًا تشغيل المثال:
node examples/rtd2.js
المثال هو روبوت Twitter يدعى RTD2 مكتوب باستخدام twit
. تويت RTD2 حول GitHub وترتيب الرسم البياني الاجتماعي.
التعليمات
(ترخيص معهد ماساتشوستس للتكنولوجيا)
حقوق الطبع والنشر (C) بقلم Tolga Tezel [email protected]
يتم منح الإذن بموجب هذا ، مجانًا ، لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة ("البرنامج") ، للتعامل في البرنامج دون تقييد ، بما في ذلك على سبيل المثال لا الحصر حقوق استخدام ، نسخ ، تعديل ، دمج أو نشر نسخ وتوزيعها و/أو بيعها و/أو بيع نسخ من البرامج ، والسماح للأشخاص الذين يتم تقديم البرنامج لهم للقيام بذلك ، مع مراعاة الشروط التالية:
يجب إدراج إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو" ، دون أي ضمان من أي نوع ، صريح أو ضمني ، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق واللياقة لغرض معين وعدم الانفجار. لا يجوز بأي حال من الأحوال أن يتحمل المؤلفون أو حاملي حقوق الطبع والنشر مسؤولية أي مطالبة أو أضرار أو مسؤولية أخرى ، سواء في إجراء عقد أو أضرار أو غير ذلك ، ناشئة عن البرامج أو خارجها أو الاستخدام أو غيرها برمجة.
T.delete(...)
.parser-error
بدلاً من حدث error
إذا أرسل Twitter هيئة استجابة HTTP غير مضغوطة.new
؛ var t = Twit(config)
يعمل ، ويعمل var t = new Twit(config)
أيضًا.config.trusted_cert_fingerprints
.mime
باعتباره التبعية.friends
لرسالة friends_str
التي تم استلامها عند طلب دفق المستخدم مع stringify_friend_ids=true
.error
في هذه الحالة.retweeted_retweet
و favorited_retweet
أحداث المستخدم.T.postMediaChunked()
لتسهيل الأمر.account/update_profile_image
و account/update_profile_background_image
.quoted_tweet
message
.connected
عند تلقي الرد من Twitterstream.stop()
و stream.start()
بدلاً من انبعاث أحداث start
stop
disconnect
، فإنه يغلق الدفق وينبعث disconnect
بالرسالة التي يتم فصلها من Twittertwit
للاستخدام مع v1.1 من API Twitter.twit.stream()
. لا يأخذ رد الاتصال بعد الآن. يعود على الفور مع EventEmitter
يمكنك الاستماع إليه. تم تحديث قسم Usage
في readme.md. اقرأها.twit.stream()
لديه function (path, params, callback)