Pythonでツイッターのいいねした画像を保存しようと思ったところ色々記事が上がっていたがシンプルな物が見当たらなかったので作ってみた。
とりあえずツイッタータイムライン、いいねの画像を保存したい人向け。
コピペするだけじゃ動かない。
①TwitterAPIの設定
②画像の取得件数を設定。(デフォ200件)
③画像を保存するディレクトリを指定してあげる。
※いいねした画像を保存したいなら自分のユーザーネームを指定してね。
Twitter APIの設定
TwitterAPIの取得の仕方は調べればすぐに出てくるので割愛。
各シングルクォーテーションの間に取得したキーを入れてね。
# Twitter APIを利用するためのキーを設定
CONSUMER_KEY = 'your consumer key'
CONSUMER_SECRET = ''
ACCESS_TOKEN = ''
ACCESS_TOKEN_SECRET = ''
OAuth認証を行い、APIクライアントを作成
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)
取得する投稿の件数の設定して実際に取得、その後保存ディレクトリの設定
# 投稿の保存件数(多分200件まで)
count = 200
# いいねした投稿を取得します(自分のユーザー名を入れると自分のいいねを取得できます)
likeList = api.get_favorites(screen_name="username", count=count)
# ホームタイムラインから最新のツイートを取得します
public_tweets = api.home_timeline(count=count)
#保存ディレクトリの設定
save_dir1 = ''
save_dir2 = ''
d_today = str(datetime.date.today())
いいねした投稿と最新のタイムラインから取得した画像の保存先を分けたかった。
dir1にタイムラインの画像、dir2にいいねした投稿を保存。
ファイル名は日付にuuidで生成した文字列を使っておく。
画像を保存するコード
print("1;timeline other;likelist")
inputnum = int(input())
if inputnum == 1:
print('getting timeline')
# 各ツイートに対して、画像が添付されている場合は、その画像を保存します
for tweet in public_tweets:
if "media" in tweet.entities:
# 画像のURLを取得します
media_url = tweet.entities["media"][0]["media_url"]
file_name = str(d_today) + str(uuid.uuid4()) + ".jpg"
# 画像を保存します
response = requests.get(media_url)
file_name = os.path.join(save_dir1, file_name)
open(file_name, "wb").write(response.content)
else:
print('getting like lists')
for tweet in likeList:
if "media" in tweet.entities:
# 画像のURLを取得します
media_url = tweet.entities["media"][0]["media_url"]
file_name = d_today + str(uuid.uuid4()) + ".jpg"
# 画像を保存します
response = requests.get(media_url)
file_name = os.path.join(save_dir2, file_name)
open(file_name, "wb").write(response.content)
print('end')
if __name__ == "__main__":
main()
1を入力してタイムラインの画像を保存、それ以外の数字でいいねした画像を保存。
コード全体
import tweepy, requests, os, uuid
import datetime
def main():
# Twitter APIを利用するためのキーを設定
CONSUMER_KEY = 'your consumer key'
CONSUMER_SECRET = ''
ACCESS_TOKEN = ''
ACCESS_TOKEN_SECRET = ''
# OAuth認証を行い、APIクライアントを作成
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)
#取得する投稿の件数の設定
count = 200
# いいねした投稿を取得します
likeList = api.get_favorites(screen_name="username", count=count)
# ホームタイムラインから最新のツイートを取得します
public_tweets = api.home_timeline(count=count)
save_dir1 = ''
save_dir2 = ''
d_today = str(datetime.date.today())
print("1;timeline other;likelist")
inputnum = int(input())
if inputnum == 1:
print('getting timeline')
# 各ツイートに対して、画像が添付されている場合は、その画像を保存します
for tweet in public_tweets:
if "media" in tweet.entities:
# 画像のURLを取得します
media_url = tweet.entities["media"][0]["media_url"]
file_name = str(d_today) + str(uuid.uuid4()) + ".jpg"
# 画像を保存します
response = requests.get(media_url)
file_name = os.path.join(save_dir1, file_name)
open(file_name, "wb").write(response.content)
else:
print('getting like lists')
for tweet in likeList:
if "media" in tweet.entities:
# 画像のURLを取得します
media_url = tweet.entities["media"][0]["media_url"]
file_name = d_today + str(uuid.uuid4()) + ".jpg"
# 画像を保存します
response = requests.get(media_url)
file_name = os.path.join(save_dir2, file_name)
open(file_name, "wb").write(response.content)
print('end')
if __name__ == "__main__":
main()
以上、参考までに。