import os import tweepy from datetime import datetime, timezone import pytz import urllib.request def save_images(account_name): auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) api = tweepy.API(auth, wait_on_rate_limit = True) for tweet in tweepy.Cursor(api.user_timeline, screen_name = account_name, exclude_replies = True).items(): if not hasattr(tweet, "extended_entities"): continue extended_entities = tweet.extended_entities if "media" not in extended_entities: continue for i, entry in enumerate(extended_entities["media"]): media_url = entry["media_url"] _, ext = os.path.splitext(media_url) created_at = datetime(year=tweet.created_at.year, month=tweet.created_at.month, day=tweet.created_at.day, hour=tweet.created_at.hour, minute=tweet.created_at.minute, second=tweet.created_at.second, microsecond=tweet.created_at.microsecond, tzinfo=timezone.utc).astimezone(pytz.timezone("Asia/Tokyo")) image_file = "{:4d}{:02d}{:02d}_{:02d}{:02d}".format(created_at.year, created_at.month, created_at.day, created_at.hour, created_at.minute) if len(extended_entities["media"]) > 1: image_file += "-{}".format(i+1) image_path = os.path.join(".", "{}{}".format(image_file, ext)) num = 1 while os.path.exists(image_path): image_path = os.path.join(".", "{}_{}{}".format(image_file, num, ext)) num += 1 urllib.request.urlretrieve(media_url, image_path)
雑だけどこんな感じで。