Twitter のタイムラインから画像を根こそぎ取得する collect_twitter_media という gem をリリースしました

collect_twitter_media の概要

Twitter の自分のタイムラインにある添付画像を根こそぎ取得してしまうという gem です。

リポジトリ

以下になります。

必要なもの

  • wget

使い方

1. gem install する

$ gem install collect_twitter_media

2. require する

require 'collect_twitter_media'

3. token を設定する

Twitter API の token を設定します。

CollectTwitterMedia.consumer_key('YOUR_CONSUMER_KEY')
CollectTwitterMedia.consumer_secret('YOUR_CONSUMER_SECRET')
CollectTwitterMedia.access_token('YOUR_ACCESS_TOKEN')
CollectTwitterMedia.access_token_secret('YOUR_ACCESS_TOKEN_SECRET')

4. 🎉saveメソッドを実行する🎉

あとはsaveメソッドをクラスメソッドとして実行するだけです。引数として保存ディレクトリを指定します。

CollectTwitterMedia.save('media_collection')

5. 🎆ファイルが保存される🎆

「4.」で指定した場所にファイルが保存されます。保存されるファイルは画像ファイルとCSVファイルです。

5-1. 画像ファイルについて

画像ファイルのファイル名は以下の書式に沿います。

@スクリーンネーム_ツイートID_画像ID.拡張子

具体的には以下のようになります。

@dhh_934687159870177697_dPi3GGKVoAERExB.jpg
@tenderlove_924694994511770368_IPi5IX-UEAAoL4v.png

5-2. CSVファイルについて

CSVファイルには以下のカラムが用意されます。

  • tweet_id
  • screen_name
  • original_filename
  • save_filename
  • uri
  • created_at

ファイル名は以下の書式に沿います。

image_from_twitter_%Y%m%d_%H%M%S.csv

具体的にはファイル名は以下のようになります。

image_from_twitter_20171126_171717.csv
image_from_twitter_20171224_210000.csv

スクリーンショット

画像が保存されているディレクトリのスクリーンショットは以下になります。

f:id:gregminster:20171126200624j:plain

CSVファイルのスクリーンショットは以下になります。

f:id:gregminster:20171126200646p:plain

saveメソッドに取ることができる引数

saveメソッドは以下のように4つの引数が取れるようになっています。第一引数は必須です。

  • 第一引数: 保存先のディレクトリ名(必須)
  • 第二引数: 1回のループ(APIアクセス)あたりに取得するツイート数(デフォルトは200)(任意)
  • 第三引数: ツイートを取得するループを行う回数(デフォルトは1)(任意)
  • 第四引数: 取得を開始するツイートのツイートID(文字列)(デフォルトは最新のツイート)(任意)

こんな感じです。

CollectTwitterMedia.save('media_collection', 100, 3, '1234567890123')

注意点

派手に取得すると API の Rate limits に引っかかるので注意が必要です。

苦労した点

これです。

やれていないこと

  • 自分のタイムラインだけではなく、任意のユーザのタイムラインから取得する
  • パブリックタイムラインでキーワード検索を行い、ヒットしたツイートから画像を取得する
  • GIF や mp4 も取得する
Powered by はてなブログ