Twitter に流れる画像をまとめてダウンロードする

Posted by
ぴろり
Posted at
2015/04/24 12:59
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
ソフトウェア カテゴリ
カバーイメージ

 夕立ちゃんぺろぺろかわいい …ということで、Twitter のタイムラインを流れる画像を、まとめてダウンロードできるダメ人間 Perl スクリプトを書いてみました。今回、スクリプトを 48 時間ほど走らせたところ、例えば、#艦これ ハッシュタグについて 3,300枚(407MB)、#艦これ版深夜の真剣お絵描き60分一本勝負 ハッシュタグについて 1,960枚(247MB) の画像ファイルを取得できる感じです。

このエントリーをはてなブックマークに追加  

注意事項

 わかる人向けの突貫スクリプトのため、エラー処理やら設定方法やら、かなりいい加減です。爆発しても泣かない人だけご利用ください。

ダウンロード

初期設定

 Twitter API を利用する third party application として動作しますので、Twitter の Application Manager から新規アプリケーションとして登録し、アプリケーション トークンを取得してください。

  1. アプリ名や説明は適当に。アクセス レベルは最低の "Read only" で良いです。
  2. アプリケーションの登録が終わったら、Access Token を生成してください。
  3. Consumer Key (API Key)、Consumer Secret (API Secret)、Access Token、Access Token Secret の 4 つのパラメータを控えておきます*1
  4. これら 4 つのパラメータで、myTwitter.pm 内の $config を書き直してください。
###
use YAML::Tiny;
my $config = YAML::Tiny::Load( <<YAMLHEREDOC );
OAuth:
    CONSUMER_KEY:       Consumer Key (API Key)
    CONSUMER_SECRET:    Consumer Secret (API Secret)
    ACCESS_TOKEN:       Access Token
    ACCESS_SECRET:      Access Token Secret
debug: 0
YAMLHEREDOC

 検索するクエリを変更したい場合は、dl_media_url.pl 内の @query を編集してください。任意のキーワード、ユーザ名(@username)とハッシュ タグ(#tag_name)が使えるようです。

# 検索クエリ
my @query = (
    '任意のキーワード',
    '#ハッシュタグ',
    '@username',
);

動作仕様の概要説明、など

  • Twitter の公開タイムラインをクエリ文字列で全検索してツイートを取得します。取得するツイート数は NUM_TIMELINES で定義しています。
  • 取得したツイートから media_url を探しています。
  • ダウンロードした画像は、クエリと同じ名前でフォルダを作成し、その中に保存しています。
  • ダウンロード済みの画像ファイル名を、download.log にベタ書きしています。このリストを参照して、過去にダウンロード済みのファイルはスキップしています。
  • ダウンロードした画像は、そのハッシュ値をファイル名としたファイル名で保存しています。同じハッシュ値の画像が既存の場合、後からダウンロードした画像は保存しません*2
  • Twitter API のリクエスト頻度の制限を考慮して、1 クエリ毎に 1 分のウェイトを入れています*3
  • OAuth 回りのコードはフル スクラッチのため、仕様に準拠していない可能性があります。特殊文字が入った場合などに通らないクエリがあるかもしれません。
  • ファイル/ディレクトリ操作回りの毒抜きが適当なので、ヤバ文字を含むクエリで爆発するかもしれません。
  • Windows 7+ActivePerl 5.16.3 で動作確認済み。Mac や Linux 環境は試せていません。
  • 別途、MIME::Base64Digest::HMAC_SHA1 モジュールのインストールが必要かもしれません。
  • ライセンスは GPL とします。
  • 気に入って頂けた場合、よろしければ継続開発のためのライセンス購入(任意)をお願いしております。
    お気持ち:  
    一言どうぞ:
  • BitCoinによる送金は、1Kpfw5XbTSuudd6VTj26t4Hj3H7hYnUmcz までどうぞshine.gif
このエントリーをはてなブックマークに追加  

  1. *1 これらのパラメータが他人に漏れると、あなたのアプリを偽って悪さをされますので秘密にしてください。
  2. *2 同じ画像が別ファイル名でアップロードされた場合?
  3. *3 変更する場合は制限に注意してください。


関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。