「わたモテ」という漫画にハマりすぎて、TwitterとPixivで画像を漁りまくってたら人生初の通信制限を受けました。

どうも、のちょうです。
そんなわけで、Twitterを画像検索ツールとして大活用している私ですが、Twitterの「いいね」機能ってあるじゃないですか。
わたモテ絵師のツイートとかは、すかさず「いいね」ボタン押していってるわけです。
(わたモテの画像をお探しの方は僕のツイートのいいね欄を見てください)
そんなわけで今日も日課のTwitterとPixivで画像を見て英気を養おうと思っていたのですが、Twitterでいいねした画像を見返すのって、イマイチ難しくないですか。
画像以外のツイートも「いいね」しているため、効率的に巡回できないんですよ。
そしてTwitterには、「いいねした『画像』のみを表示する」といった機能は存在しません。
そんなわけで、自分が「いいね」した画像を一括保存できるプログラムを作成しようと思ったわけです。
こういう時にプログラマーで本当に良かったと思います。
いいね画像一括保存プログラム
言語は毎度おなじみのPHPを使用します。
ライブラリ管理ツールのcomposerからTwitter APIの操作ができる「abraham/twitteroauth」をインストール。
composer require abraham/twitteroauth
あとはPHP上で、composerからインストールしたディレクトリを呼び出せば、TwitterOAuthを使うことが出来ます。
あ、Twitter APIは申請しないと使えない仕様になったので、開発用アカウントを持っていない方は申請が必要です。
英語で利用用途とか説明しなきゃいけないけど、まぁGoogle翻訳があればいけると思います。
申請が通ると、Twitter APIを実行できる、コンシューマーキーとアクセストークンが発行されます。
ソースコード
composerからTwitterOAuthを読み込んで、アクセストークンなどの設定を行ったら、favorites/listでデータを取得し、foreachでデータをループさせます。
後は、画像判定のツイートをひらすら保存するのみです。
$file_pass = 'img/favo/'; //保存先パス $connection = new TwitterOAuth('コンシューマーキー', 'コンシューマーシークレット', 'アクセストークン', 'アクセストークンシークレット'); //@noticocoから200件のいいねツイートを取得 $aryParam = ['screen_name' => 'noticoco', 'count' => 200]; $aryList = $connection -> get('favorites/list', $aryParam); $aryList = json_decode(json_encode($aryList), true); foreach($aryList as $key1 => $val1){ //画像のツイートか判定 if(isset($val1['extended_entities']['media'])){ foreach($val1['extended_entities']['media'] as $key2 => $val2){ $data = file_get_contents($val2['media_url_https']); //画像URLからデータを取得 $timestamp = strtotime($val1['created_at']); //投稿日時 $file_name = $file_pass.date('Ymd_His', $timestamp).'_'.($key2 + 1).'.jpg'; //ファイル名 file_put_contents($file_name, $data); //ファイルを保存 sleep(1); //負荷軽減のため間隔を置く } } }
これを実行すると、
んほ~
直近200件のいいねした画像がすべて保存されました。
もちろん、少し改造を加えればさらに前のいいねツイートも保存できます。
後はWindowsのビューアーを使って舐めるように閲覧したいと思います。
私的な利用に留めて、無断掲載や再配布などは決して行わないようにしましょう。
Twitter画像の閲覧及び保存ができるツールを公開しました
Twitterの画像・保存を効率化したツール、「ついすこ」を公開しました。
個人用で使ってたTwitter画像閲覧ツールを一般利用できるようにチューニングして公開しました。
Twitterの画像を一覧化・一括DL化ができるようになる「ついすこ」です。
※動画は僕の「いいね」した画像をzipでダウンロードしています良かったら使ってみてください。https://t.co/w2KnTjmaO4 pic.twitter.com/QVe5jXYfRR
— のちょう (@noticoco) August 18, 2019
開発者でなくても同じことが出来るようになるので、お試しください。
以上、Twitterで「いいね」した画像を一括保存するPHPとTwitterAPI、でした。
コメント
「ついすこ」大変便利に使わせて頂いています。
投稿日付とアカウント名がファイル名に書かれているあたりがとても痒い所に手が届く感じで嬉しいです。
ここからは意見という名の追加機能の要望なのですが、
自分のアカウントのいいね順に並ぶようなオプションがあれば、便利ではないでしょうか?
現在のついすこは画像が投稿された日付順に並んでいるので、昔の絵にいいねを押したとき、だいぶ後ろの方に行ってしまいます。
この関係で、一度保存して、他の画像にいいねを押した場合、投稿時間に合わせて、
自分が保存したものとまだ保存していないものが混ざった状態になります。
いいね順に並べることでこの問題を解決できると思います。
取得するデータの関係上難しいのでしょうか?ご検討いただければ幸いです。
コメントありがとうございます。とても励みになります。
TwitterAPIの仕様上で頂いた内容の完全な再現は難しいかもしれませんが、修正を検討してみます。
ちょっと「ついすこ」を使ってみたのですが、画像サイズが標準というか、例えば、
https://pbs.twimg.com/media/EJ-fpSYVUAAPf9Z.jpg
https://pbs.twimg.com/media/EJ-fpSYVUAAPf9Z.jpg:orig
上記の2つの画像URLは(:orig)がついているほうがサイズが大きく、ついていないほうはサイズが小さいです。
(:orig)がついてる方は確かオリジナルサイズの画像という意味です。
「ついすこ」でダウンロードすると、標準サイズの画像になってしまうので、一律オリジナルサイズで保存できるような仕様に変更できるのであればありがたいです。
こういうの欲しかった!本当にありがとうございます
いいね!ものぐさで万単位で貯まってしまって保存が追い付かない…
もっと過去に遡って保存出来るようになればいいのに、と希望します
動画やテキストの画像化にも対応してくれると嬉しいです