netebakari / twitter-tl-tracker

Twitterのログを取りたい(なるべくたくさん)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

twitter-tl-tracker

Twitterのログを取る(なるべくたくさん)ためのクライアント。AWS Lambdaで実装している。

モチベーション

UserStreamが死んでしまったので、それと同等のツイートのログを24時間取りたい。

実際にやること

他のクライアントと同様にホームTLを取得するだけでなく、自分のフォロイー全員のTLを巡回して全てのツイートを取得する。これによりUserStreamのall repliesオプションと同じようなTLを保存することを試みる。

サーバーレス。全ての処理はLambdaが行い、結果はS3に保存する。

インストール

1. TwitterのAPIキーを取得

頑張ってください。

2. ログ保存用のS3バケットを作成する

新規作成しても構わないし既存のバケットを使っても構わない。

3. CloudFormationを実行

東京リージョンからは次のリンクで実行できる。 CloudFormation

AWSのコンソールから操作する場合は

テンプレートの指定 > テンプレートソース

で次のURLを入力する。

https://netebakari.s3-ap-northeast-1.amazonaws.com/twitter-timeline-tracker/cloudformation.yaml

設定するパラメーターは次の通り。

名前内容
AccessTokenTwitterのAccess Token
AccessTokenSecretTwitterのAccess Token Secret
ConsumerKeyTwitterのConsumer Key
ConsumerSecretTwitterのConsumer Secret
DaysToArchiveツイートをアーカイブする日数。3に設定すると、8/20 0:00を迎えた時点で8/17のツイートがアーカイブ対象となり、8/17のツイートは新規に取得されなくなる
DynamoDbTableNameTLをどこまで取得したかを管理するDynamoDBのテーブル名。新規に作成する
IncludeFollowerstrueまたはfalseのいずれか。trueを指定すると自分のフォロワーのTLも取得する
QueueNameユーザーTLを取得するスケジュールを管理するために使うSQSのキュー名
RoleNameLambdaに割り当てるロール名
S3BucketNameツイートのログを保存するS3のバケット名
TTLinDaysDynamoDBのTTL(日数。3なら72時間)
TwitterUserId自分のTwitterユーザーID。スクリーンネームではないので注意
UploadedPackageBucketNameパッケージ(.zip)をアップロードしたS3のバケット名(デフォルト値でよい)
UploadedPackageKeyNameパッケージ(.zip)のキー名(デフォルト値でよい)
UtcOffsetInHours日本時間なら9

CLIからの場合は次のように実行する。

aws cloudformation create-stack \
  --stack-name TwitterTLTracker \
  --template-url "https://netebakari.s3-ap-northeast-1.amazonaws.com/twitter-timeline-tracker/cloudformation.yaml" \
  --capabilities CAPABILITY_NAMED_IAM \
  --parameters \
                     ParameterKey=AccessToken,ParameterValue=___YOUR_ACCESS_TOKEN__ \
               ParameterKey=AccessTokenSecret,ParameterValue=___YOUR_ACCESS_TOKEN_SECRET__ \
                     ParameterKey=ConsumerKey,ParameterValue=___YOUR_CONSUMER_KEY__ \
                  ParameterKey=ConsumerSecret,ParameterValue=__YOUR_CONSUMER_SECRET__ \
                   ParameterKey=DaysToArchive,ParameterValue=4 \
               ParameterKey=DynamoDbTableName,ParameterValue=TwitterTLTracker-Timelines \
                ParameterKey=IncludeFollowers,ParameterValue=false \
                       ParameterKey=QueueName,ParameterValue=TwitterTLTracker-ScheduleQueue \
                        ParameterKey=RoleName,ParameterValue=TwitterTLTracker-Lambda \
                    ParameterKey=S3BucketName,ParameterValue=__YOUR_S3_BUCKET_NAME__ \
                       ParameterKey=TTLinDays,ParameterValue=4 \
                   ParameterKey=TwitterUserId,ParameterValue=__YOUR_TWITTER_ID__ \
       ParameterKey=UploadedPackageBucketName,ParameterValue=netebakari \
          ParameterKey=UploadedPackageKeyName,ParameterValue=twitter-timeline-tracker/timeline-tracker-latest.zip \
                ParameterKey=utcOffsetInHours,ParameterValue=9

4. CloudWatch Eventsを調整する

インストール直後は次のような実行間隔になっているが、必要に応じて調整する。それぞれのLambdaの処理内容はDetails.md参照。

  • Twitter-TL-Tracker-HomeTimeline : 2分おき
  • Twitter-TL-Tracker-userTL : 2分おき
  • Twitter-TL-Tracker-QueueFiller : 30分おき

5. 待つ

ツイートが指定したS3バケットに保存されていく。

実装の中身、パラメーター調整など

Details.mdを参照

About

Twitterのログを取りたい(なるべくたくさん)

License:MIT License


Languages

Language:TypeScript 99.5%Language:Shell 0.5%