[スポンサーリンク]
Python3でTwitterAPI使用する準備
Python3でTwitterAPI使用する準備として、下記を行いました
①APIキーとトークンの取得
②ライブラリのインストール
[スポンサーリンク]
ツイートを投稿 POST statuses/update API
TwitterAPIでツイートを投稿するには、POST statuses/update APIを使用します
パラメータ
POST statuses/update APIのパラメータは以下です
各項目について、メモを残しておきます
記載内容一切保証出来ません
項目名 | 要否 | 個人的メモ |
status | required | ツイート内容を記載 |
in_reply_to_status_id | optional | リプライとしてツイートする場合、リプライ対象のツイートIDを指定 |
auto_populate_reply_metadata | optional | リプライ(in_reply_to_status_idが設定)の時、返信先を@で自動で追加する場合Trueを指定 |
exclude_reply_user_ids | optional | auto_populate_reply_metadataの対象外としたいアカウントIDを指定 |
attachment_url | optional | ツイートのURL、ダイレクトメッセージのパーマネントリンクを指定 |
media_ids | optional | ツイートに添付するメディア(画像/動画etc)のIDを指定 |
possibly_sensitive | optional | メディアを不適切な可能性のあるメディア(画像/動画etc)とする場合Trueを指定 |
lat | optional | ツイート対象の緯度を指定(-90~90) |
long | optional | ツイート対象の経度を指定(-180~180) |
place_id | optional | ツイート対象の位置をplace_idで指定※1 |
display_coordinates | optional | ツイート対象の位置を表示する場合trueを指定 |
trim_user | optional | ユーザオブジェクトをIDのみでツイートする場合Trueを指定 |
enable_dmcommands | optional | ショートコードを使用してフォロワーにダイレクトメッセージを送信する場合Trueを指定※2 |
fail_dmcommands | optional | ショートコードを使用してフォロワーにダイレクトメッセージを送信しない場合Trueを指定※2 |
card_uri | optional | ツイート対象のカードを設定※3 |
※1 Place object
※2 ショートメール経由でツイートする方法
※3 カード
POST statuses/update API サンプルコード① ツイート
サンプルとして、シンプルなツイートをしてみます
statusにツイート内容を指定します
正常にツイート出来た場合、POSTstatusesupdateResponseでHTTPレスポンスコード200が返ってきます
POSTstatusesupdateResultは、APIの公式リファレンスにある通り、ツイートやアカウントに関する情報が返ってきます
・POST statuses/update APIのURLを設定
1 |
POSTstatusesupdateApiUrl = 'https://api.twitter.com/1.1/statuses/update.json' |
・OAuth認証でTwitterとセッション接続
1 |
POSTstatusesupdateApiSession = OAuth1Session(ConsumerAPIKey, ConsumerAPIsecretkey, AccsessToken, AceestokenSecret) |
・Sessionクラスのpostを使って、POST statuses/update APIのレスポンスを取得
1 |
POSTstatusesupdateResponse = POSTstatusesupdateApiSession.post(POSTstatusesupdateApiUrl, params = POSTstatusesupdateParameters) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# coding: utf_8 # ライブラリインポート import json from requests_oauthlib import OAuth1Session # APIキー&トークン設定 ConsumerAPIKey = 【ConsumerKey】 ConsumerAPIsecretkey = 【ConsumerSecretKey】 AccsessToken = 【AccessToken】 AceestokenSecret = 【AccessTokenSecret】 # ツイートパラメータ設定 POSTstatusesupdateParameters = { 'status' : "P\ny\nt\nh\no\nn\n勉\n強\n中\n!!" ,'in_reply_to_status_id' : '' ,'auto_populate_reply_metadata' : '' ,'exclude_reply_user_ids' : '' #attachment_urlは有効なURLを指定しない場合、例外が発生(HTTP400) #,'attachment_url' : '' ,'media_ids' : '' ,'possibly_sensitive' : '' ,'lat' : '' ,'long' : '' ,'place_id' : '' ,'display_coordinates' : '' ,'trim_user' : '' ,'enable_dmcommands' : '' ,'fail_dmcommands' : '' ,'card_uri' : '' } POSTstatusesupdateApiSession = OAuth1Session(ConsumerAPIKey, ConsumerAPIsecretkey, AccsessToken, AceestokenSecret) POSTstatusesupdateApiUrl = 'https://api.twitter.com/1.1/statuses/update.json' # ツイート実行 POSTstatusesupdateResponse = POSTstatusesupdateApiSession.post(POSTstatusesupdateApiUrl, params = POSTstatusesupdateParameters) print(POSTstatusesupdateResponse) if POSTstatusesupdateResponse.status_code == 200: POSTstatusesupdateResult = json.loads(POSTstatusesupdateResponse.text) print(POSTstatusesupdateResult) |
POST statuses/update API サンプルコード② リプライ
サンプルコード①のツイートに対し、リプライツイートをします
【リプライ対象のステータスID】には、リプライ①のidを記載します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# coding: utf_8 # ライブラリインポート import json from requests_oauthlib import OAuth1Session # APIキー&トークン設定 ConsumerAPIKey = 【ConsumerKey】 ConsumerAPIsecretkey = 【ConsumerSecretKey】 AccsessToken = 【AccessToken】 AceestokenSecret = 【AccessTokenSecret】 # ツイートパラメータ設定 POSTstatusesupdateParameters = { 'status' : "P\ny\nt\nh\no\nn\n勉\n強\n中\n!!\nリプライ" ,'in_reply_to_status_id' : '【リプライ対象のステータスID】' ,'auto_populate_reply_metadata' : '' ,'exclude_reply_user_ids' : '' #attachment_urlは有効なURLを指定しない場合、例外が発生(HTTP400) #,'attachment_url' : '' ,'media_ids' : '' ,'possibly_sensitive' : '' ,'lat' : '' ,'long' : '' ,'place_id' : '' ,'display_coordinates' : '' ,'trim_user' : '' ,'enable_dmcommands' : '' ,'fail_dmcommands' : '' ,'card_uri' : '' } POSTstatusesupdateApiSession = OAuth1Session(ConsumerAPIKey, ConsumerAPIsecretkey, AccsessToken, AceestokenSecret) POSTstatusesupdateApiUrl = 'https://api.twitter.com/1.1/statuses/update.json' # ツイート実行 POSTstatusesupdateResponse = POSTstatusesupdateApiSession.post(POSTstatusesupdateApiUrl, params = POSTstatusesupdateParameters) print(POSTstatusesupdateResponse) if POSTstatusesupdateResponse.status_code == 200: POSTstatusesupdateResult = json.loads(POSTstatusesupdateResponse.text) print(POSTstatusesupdateResult) |
POST statuses/update API サンプルコード③ コメント付きリツイート
サンプルコード①のツイートに、コメント付きリツイート(引用リツート)をします
attachment_urlに、リツイート対象のURLを指定します
https://twitter.com/【アカウント名】/status/【ステータスID】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# coding: utf_8 # ライブラリインポート import json from requests_oauthlib import OAuth1Session # APIキー&トークン設定 ConsumerAPIKey = 【ConsumerKey】 ConsumerAPIsecretkey = 【ConsumerSecretKey】 AccsessToken = 【AccessToken】 AceestokenSecret = 【AccessTokenSecret】 # ツイートパラメータ設定 POSTstatusesupdateParameters = { 'status' : "P\ny\nt\nh\no\nn\n勉\n強\n中\n!!\nattachment_url" ,'in_reply_to_status_id' : '' ,'auto_populate_reply_metadata' : '' ,'exclude_reply_user_ids' : '' #attachment_urlは有効なURLを指定しない場合、例外が発生(HTTP400) ,'attachment_url' : 'https://twitter.com/【アカウント名】/status/【ステータスID】' ,'media_ids' : '' ,'possibly_sensitive' : '' ,'lat' : '' ,'long' : '' ,'place_id' : '' ,'display_coordinates' : '' ,'trim_user' : '' ,'enable_dmcommands' : '' ,'fail_dmcommands' : '' ,'card_uri' : '' } POSTstatusesupdateApiSession = OAuth1Session(ConsumerAPIKey, ConsumerAPIsecretkey, AccsessToken, AceestokenSecret) POSTstatusesupdateApiUrl = 'https://api.twitter.com/1.1/statuses/update.json' # ツイート実行 POSTstatusesupdateResponse = POSTstatusesupdateApiSession.post(POSTstatusesupdateApiUrl, params = POSTstatusesupdateParameters) print(POSTstatusesupdateResponse) if POSTstatusesupdateResponse.status_code == 200: POSTstatusesupdateResult = json.loads(POSTstatusesupdateResponse.text) print(POSTstatusesupdateResult) |
[スポンサーリンク]
コメント