📹

Tweepyでコンテンツ取得

2022/02/12に公開

前提

  • Pythonインストール済
  • Tweepyインストール済
  • Twitter APIのアクセストークンの取得済

コード

python
import tweepy
from time import sleep
import os
import urllib.error
import urllib.request

#ファイルを保存するディレクトリ作成
if not os.path.exists('video'):
    os.mkdir('video')

if not os.path.exists('photo'):
    os.mkdir('photo')

#認証
consumer_key = "予め取得したconsumer_key"
consumer_secret = "予め取得したconsumer_secret"
access_token = "予め取得したaccess_token"
access_token_secret = "予め取得したaccess_token_secret"

#Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

#ツイート取得
results = tweepy.Cursor(api.user_timeline,
                         id="取得したいツイートのアカウント",
                         include_entities=True,
                         tweet_mode='extended',
                         lang='ja').items("数の指定")

for result in results:
        try:
	    #コンテンツ取得
            media = result.extended_entities['media']
            for m in media:
		#動画の時
                if m['type'] == 'video':
                    origin = [variant['url'] for variant in m['video_info']
                        ['variants'] if variant['content_type'] == 'video/mp4'][0]
		  dst_path = 'video/{}.mp4'.format(datetime.datetime.now())
                    download_file(origin, dst_path)
		    try:
			with urllib.request.urlopen(origin) as web_file:
			    data = web_file.read()
			    with open(dst_path, mode='wb') as local_file:
				local_file.write(data)
		    except urllib.error.URLError as e:
			print(e)
		#画像の時
                elif m['type'] == 'photo':
                    img_url = result.extended_entities['media'][0]['media_url']
                    dst_path = 'photo/{}.png'.format(datetime.datetime.now())
                    download_file(img_url, dst_path)
                else:
                    origin = m['media_url_https']
            sleep(1)
        except:
            pass

Discussion