らんだむな記憶

blogというものを体験してみようか!的なー

twitterの画像を保存

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)

雑だけどこんな感じで。