・2022/04/10
Pythonの Tweepyライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法
(まるっと取得したかった!質問は受け付けない!)
Tags: [Windows], [無人インストール]
● Twitterの特定アカウントの投稿内容を投稿画像込みで丸っと取得する方法
まるっと取得したかった!質問は受け付けない!
.NET C#版も作りました。
・2022/04/14
.NET C#の Tweetinviライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法
まるっと取得したかった!質問は受け付けない!
・必要な物
取得したい Twitterのアカウントの @マークの部分(URLでも良い)
Users lookupで user_idを取得して、
Tweets lookupで 100件ずつ最後まで取得する。
"includes"の "media"の "url"で画像をダウンロードする。
以上!
●取得したい Twitterのアカウントの @マークの部分
@hogehoge_fugafuga
https://twitter.com/hogehoge_fugafuga
の hogehoge_fugafugaの文字列。
● Twitter API v2 Users lookupで username(screen_name)から id(user_id)を取得する方法
上記の
"hogehoge_fugafuga"
を usernameに設定する。
Users lookup
User lookup by username
API: GET /2/users/by/username/:username
リクエスト
username: hogehoge_fugafuga
レスポンス
{
"data": {
"id": "1234567890111111111",
"name": "なまえ HOGEHOGE FUGAFUGA",
"username": "hogehoge_fugafuga"
}
}
● Twitter API v2 Tweets lookupで User ID紐付く投稿を画像の URL込みで丸っとゲットする方法
上記の
"id": "1234567890111111111"
を idに設定する。
Tweets lookup
User Tweets timeline by User ID
API: GET /2/users/:id/tweets
リクエスト
id: 1234567890111111111
max_results: 100
pagination_token: 最初は空、2ページ目以降(101件目~)は "next_token"を設定する
expansions: attachments.media_keys
tweet.fields: created_at
media.fields: url
・ RFC3339形式
start_time: 2012-01-23T00:00:00Z
end_time: 2012-01-23T23:00:00Z
レスポンス
{
"data": [
{
"attachments": {
"media_keys": [
"3_mmmmmmmmmmmmmmmmmm6"
]
},
"id": "1iiiiiiiiiiiiiiiii3",
"text": "かきくけこ https://t.co/xxxxxxxxxx",
"created_at": "2021-01-23T12:34:56.000Z"
},
{
"attachments": {
"media_keys": [
"3_mmmmmmmmmmmmmmmmmm5"
]
},
"id": "iiiiiiiiiiiiiiiiii4",
"text": "あいうえお https://t.co/xxxxxxxxxx"
"created_at": "2021-01-01T23:45:00.000Z"
},
{
"id": "iiiiiiiiiiiiiiiiii3",
"text": "テキストだけ"
"created_at": "2021-01-01T01:02:03.000Z"
},
...
],
"includes": {
"media": [
{
"media_key": "3_mmmmmmmmmmmmmmmmmm6",
"type": "photo",
"url": "https://pbs.twimg.com/media/FExxxxxxxxxxxxx.jpg"
},
{
"media_key": "3_mmmmmmmmmmmmmmmmmm5",
"type": "photo",
"url": "https://pbs.twimg.com/media/FExxxxxxxxxxxxx.jpg"
},
{
"media_key": "7_mmmmmmmmmmmmmmmmmm7",
"type": "video"
},
...
]
},
"meta": {
"result_count": 100,
"newest_id": "nnnnnnnnnnnnnnnnnnn",
"oldest_id": "ooooooooooooooooooo",
"next_token": "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
}
}
2ページ目以降は "previous_token"が有る。
"meta": {
"result_count": 100,
"newest_id": "nnnnnnnnnnnnnnnnnnn",
"oldest_id": "ooooooooooooooooooo",
"previous_token": "ppppppppppppppppppppppppppppppppppppppppppppp",
"next_token": "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
}
● Twitterの画像の取得方法
上記の "url"の情報を使用する
"url": "https://pbs.twimg.com/media/FExxxxxxxxxxxxx.jpg"
small 小さい画像
https://pbs.twimg.com/media/FExxxxxxxxxxxxx.jpg?format=jpg&name=small
large 大きい画像
https://pbs.twimg.com/media/FExxxxxxxxxxxxx.jpg?format=jpg&name=large
4096x4096 4096x4096pxで超デカイ画像
https://pbs.twimg.com/media/FExxxxxxxxxxxxx.jpg?format=jpg&name=4096x4096
● tweepyで適当に作りました
tweepy v4.8.0
Tweepy Documentation
使用している Twitter APIは v1.1です。
pip3 install tweepy
import tweepy
consumer_key = "xxxxxxx"
consumer_secret = "xxxxxxxxxxx"
screen_name="hogehoge_fugafuga"
auth = tweepy.auth.AppAuthHandler(consumer_key, consumer_secret)
api = tweepy.API(auth)
user = api.get_user(screen_name=screen_name)
print(user.id)
timelines = api.user_timeline(user_id=user.id)
# 100件単位で取得
count = 100
timelines = api.user_timeline(screen_name=screen_name, count=count)
print(len(timelines))
for tl in timelines:
# print("===========")
if not 'media' in tl._json['entities']:
continue
medias = tl._json['entities']['media']
# print("===========")
# print(tl.id)
# print(tl.created_at)
# print(tl.text)
for media in medias:
# print("===========")
# print(media['id'])
# print(media['media_url_https'] + "?format=jpg&name=" + str(media['original_info']['width']) + 'x' + str(media['original_info']['height']))
# print("curl \"" + media['media_url_https'] + "?format=jpg&name=4096x4096\"" + " -o " + media['id_str'] + ".jpg")
print("wget \"" + media['media_url_https'] + "?format=jpg&name=4096x4096\"" + " -O " + media['id_str'] + ".jpg")
# 100なら次ページを取得
while len(timelines) == count:
last_id = timelines[-1].id
timelines = api.user_timeline(screen_name=screen_name, count=count, max_id=last_id-1)
for tl in timelines:
if not 'media' in tl._json['entities']:
continue
medias = tl._json['entities']['media']
for media in medias:
print("wget \"" + media['media_url_https'] + "?format=jpg&name=4096x4096\"" + " -O " + media['id_str'] + ".jpg")
上記では 1ツイートに複数画像に対応していなかったので下記で修正。
extended_entitiesの mediaを使う。
# 100件単位で取得
count = 100
timelines = api.user_timeline(screen_name=screen_name, count=count)
for tl in timelines:
if not hasattr(tl, 'extended_entities'):
continue
if not 'media' in tl.extended_entities:
continue
medias = tl.extended_entities['media']
for media in medias:
print("curl \"" + media['media_url_https'] + "?format=jpg&name=4096x4096\"" + " -o " + tl.id_str +"_"+ media['id_str'] + ".jpg")
# 100なら次ページを取得
while len(timelines) == count:
last_id = timelines[-1].id
timelines = api.user_timeline(screen_name=screen_name, count=count, max_id=last_id-1)
for tl in timelines:
if not hasattr(tl, 'extended_entities'):
continue
if not 'media' in tl.extended_entities:
continue
medias = tl.extended_entities['media']
for media in medias:
print("curl \"" + media['media_url_https'] + "?format=jpg&name=4096x4096\"" + " -o " + tl.id_str +"_"+ media['id_str'] + ".jpg")
https://twitter.com/xxxxxxxxxxx/status/1111111111111111111
tweet = api.get_status(id="1111111111111111111", tweet_mode="extended")
client = tweepy.Client(bearer_token=bearer_token, consumer_key=consumer_key, consumer_secret=consumer_secret)
client.get_user(username=screen_name)
● bearer tokenの取得方法
なんで tweepyライブラリで取得できる様になってないんだ?
How to get Twitter bearer token by consumer key and consumer secret .
App-only authentication and OAuth 2.0 Bearer Token
echo -n consumer_key:consumer_secret | base64 -w
# Windows コマンドラインの場合は末尾の \を ^にする。
curl -X POST \
-H "Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" \
-d "grant_type=client_credentials" \
"https://api.twitter.com/oauth2/token"
{"token_type":"bearer","access_token":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FAAAAAAAAAAAAAAAAAAAA%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}
Authorization: Basicの値が無効な場合や間違っている場合
{"errors":[{"code":99,"message":"Unable to verify your credentials","label":"authenticity_token_error"}]}
CONSUMER_KEY="xvz1evFS4wEEPTGEFPHBog"
CONSUMER_SECRET="L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg"
echo -n $CONSUMER_KEY:$CONSUMER_SECRET | base64 -w0
# eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJnNmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw==
AUTH=`echo -n $CONSUMER_KEY:$CONSUMER_SECRET | base64 -w0`
echo $AUTH
# eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJnNmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw==
curl -X POST \
-H "Authorization: Basic $AUTH" \
-H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" \
-d "grant_type=client_credentials" \
"https://api.twitter.com/oauth2/token"
# {"token_type":"bearer","access_token":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FAAAAAAAAAAAAAAAAAAAA%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}
or
# {"errors":[{"code":99,"message":"Unable to verify your credentials","label":"authenticity_token_error"}]}
Tags: [Windows], [無人インストール]
●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)
Androidで DBのフレームワーク SQLDelightを使う方法、公式の手順だとエラーしか出ない罠
SQLDelightを Androidで使う方法
Androidで Twitter4Jを使って Twitterのユーザー タイムラインを丸っと取得する方法
Twitter4Jの Java ラッパでまるっと取得!ユーザーアカウントでのログインが必要
Androidの公式 Twitterライブラリで Twitterのユーザー タイムラインを丸っと取得する方法
Twitter Kit for Androidでまるっと取得!ユーザーアカウントでのログイン不要
.NET C#の Tweetinviライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法
まるっと取得したかった!質問は受け付けない!
ちいかわの単行本を買ってみた!もちろん特装版!
特装版のカルタが怖いと話題のちいかわ単行本。
すみっコぐらし サンエックスの人気キャラクター お菓子のキッシュシュクレ(タルト)、フィナンシェ
すみっコぐらしshop東京駅店 東京キャラクターストリート 東京駅一番街に行ってみた
【全集中の呼吸】鬼滅の刃の食玩お菓子を買ったら報告するスレ、オマケシール集め【鬼殺隊】
【全買占め】「鬼滅の刃」ブームに乗っかって鬼滅のお菓子を根こそぎ買い占め、これは戦争だ【在庫滅殺】
【我が道を】遂にガチの食玩にも手を出してしまった。。。Re:ゼロから始める異世界生活ウエハース vol.3【突き進むのみ】
【レムは俺の嫁】レムが主役のアニメ、リゼロ【エミリアは脇役】
テレビアニメ ご注文はうさぎですか? 通称「ごちうさ」のフィギュアを買ったのでレビュー
ごちうさのスペシャル フィギュア チノ リゼ シャロを買ったのでレビュー、UFOキャッチャー景品
[HOME]
|
[BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c)
2022 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator
http://www.neko.ne.jp/~freewing/software/twitter_api_get_whole_tweet/