-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtwitter_reader.js
More file actions
54 lines (47 loc) · 1.76 KB
/
twitter_reader.js
File metadata and controls
54 lines (47 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
const AWS = require("aws-sdk");
const Twitter = require("twitter-lite");
// env
const twitterUserName = process.env.TWITTER_USER_NAME || "ysano";
const region = "ap-northeast-1";
const deliveryStreamName = "Twitter-Dashboard-Raw";
const secretName = "TwitterAPI-Secrets";
// env end
const firehose = new AWS.Firehose({apiVersion: '2015-08-04', region: region });
const secretsManager = new AWS.SecretsManager({ region: region });
async function getSecrets(){
const data = await secretsManager.getSecretValue({SecretId: secretName}).promise();
return JSON.parse(data.SecretString);
}
async function putRecordToFirehose(tweet){
const recordParams = {
DeliveryStreamName: deliveryStreamName,
Record: {
Data: JSON.stringify(tweet) + '\n'
}
}
console.log("putRecordToFirehose: " + JSON.stringify(tweet.id));
await firehose.putRecord(recordParams).promise();
}
async function main(){
try{
const secrets = await getSecrets();
const twitter = new Twitter({
consumer_key: secrets.ConsumerApiKey,
consumer_secret: secrets.ConsumerApiSecret,
access_token_key: secrets.AccessToken,
access_token_secret: secrets.AccessTokenSecret
});
// follower取得
const followIds = await twitter.get("friends/ids", {screen_name: twitterUserName, count: 5000});
//console.log(followIds);
// tweet断続取得
twitter.stream("statuses/filter", { follow: followIds.ids.join(",")})
.on("start", _ => console.log("start"))
.on("data", putRecordToFirehose)
.on("error", error => console.log("error", error))
.on("end", _ => console.log("end"));
} catch (e) {
console.log(e);
}
}
main();