Code | npm | Code sample
npm install reshuffle-twitter-connector
This package contains a Reshuffle connector for connecting to Twitter as a Twitter Developer App.
The following example follows Taylor Swift on Twitter. When running it, every Swift tweet is printed to the console:
const { Reshuffle } = require('reshuffle')
const { TwitterConnector } = require('reshuffle-twitter-connector')
const app = new Reshuffle()
const twitter = new TwitterConnector(app, {
customerKey: process.env.TWITTER_CUSTOMER_KEY,
customerSecret: process.env.TWITTER_CUSTOMER_SECRET,
})
twitter.on({ follow: 'taylorswift13' }, async (event, app) => {
for (const tweet of event.tweets) {
console.log(tweet.text)
}
})
app.start()
Configuration Configuration options
follow Follow a user on Twitter
search Track expressions in tweets
GET Direct REST GET
POST Direct REST POST
Note: You will need to sign up as a Twitter developer and proceed to create a Developer App. Then navigate to the Keys and Tokens page to retrieve your Customer API keys.
const app = new Reshuffle()
const twitter = new TwitterConnector(app, {
customerKey: process.env.TWITTER_CUSTOMER_KEY,
customerSecret: process.env.TWITTER_CUSTOMER_SECRET,
})
Options:
follow: string
A Twitter handle to follow, e.g. "taylorswift13" or "@taylorswift13"
Example: Process tweets generated by a specific user
async (event, app) => {
for (const tweet of event.tweets) {
console.log(tweet.text)
}
})
The event
object includes a single field named tweets
, which is an array
of objects similar to this:
{
created_at: 'Sat Oct 17 15:01:59 +0000 2020',
id: 1317480984862879700,
id_str: '1317480984862879749',
text: 'Along with the signed cd, some lucky purchasers of these items may even receive complimentary cat hair stuck inside… https://t.co/aQ139uxVJf',
truncated: true,
entities: { hashtags: [], symbols: [], user_mentions: [], urls: [ [Object] ] },
source: '<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a>',
in_reply_to_status_id: null,
in_reply_to_status_id_str: null,
in_reply_to_user_id: null,
in_reply_to_user_id_str: null,
in_reply_to_screen_name: null,
user: {
id: 17919972,
id_str: '17919972',
name: 'Taylor Swift',
screen_name: 'taylorswift13',
location: '',
description: 'you drew stars around my scars',
url: 'https://t.co/9Cbc2ywlrl',
entities: { url: [Object], description: [Object] },
protected: false,
followers_count: 87316619,
friends_count: 0,
listed_count: 112877,
created_at: 'Sat Dec 06 10:10:54 +0000 2008',
favourites_count: 1031,
utc_offset: null,
time_zone: null,
geo_enabled: false,
verified: true,
statuses_count: 528,
lang: null,
contributors_enabled: false,
is_translator: false,
is_translation_enabled: false,
profile_background_color: 'C0DEED',
profile_background_image_url: 'http://abs.twimg.com/images/themes/theme1/bg.png',
profile_background_image_url_https: 'https://abs.twimg.com/images/themes/theme1/bg.png',
profile_background_tile: false,
profile_image_url: 'http://pbs.twimg.com/profile_images/1286270219980242945/70DWScEH_normal.jpg',
profile_image_url_https: 'https://pbs.twimg.com/profile_images/1286270219980242945/70DWScEH_normal.jpg',
profile_banner_url: 'https://pbs.twimg.com/profile_banners/17919972/1595563550',
profile_link_color: '0084B4',
profile_sidebar_border_color: 'FFFFFF',
profile_sidebar_fill_color: 'DDEEF6',
profile_text_color: '333333',
profile_use_background_image: false,
has_extended_profile: false,
default_profile: false,
default_profile_image: false,
following: null,
follow_request_sent: null,
notifications: null,
translator_type: 'regular'
},
geo: null,
coordinates: null,
place: null,
contributors: null,
is_quote_status: false,
retweet_count: 19509,
favorite_count: 157344,
favorited: false,
retweeted: false,
possibly_sensitive: false,
lang: 'en'
}
Options:
search: string
Search term, e.g. "#music"
Example: Process tweets containing the specified search term. (See follow for details of the event object)
async (event, app) => {
for (const tweet of event.tweets) {
console.log(tweet.user.name, 'says:', tweet.text)
}
})
Definition:
(
path: string,
qs?: object,
) => object | text
Usage:
const response = await twitter.GET('statuses/user_timeline.json')
Send a GET request. Authenticate using the configured credentials, and check for errors before returning the response data.
Definition:
(
path: string,
qs?: object,
body?: object,
) => object | text
Usage:
const response = await twitter.POST('friendships/create')
Send a POST request. Authenticate using the configured credentials, and check for errors before returning the response data.
Note that most POST requests may require user level authorization and are not supported by this connector at the moment.