twitterAPIとpythonを使ってツイートの埋め込みコードを取得してみる
twitterAPIとpythonを使ってツイートの埋め込みコードを取得してみる
djangoでtwiterを使用したマーケティングツール的なものを開発したいと思っており、その段階としてツイートの埋め込みを取得してみる事にしました。
検索した特定のユーザーにメッセージを送れるようにする機能を考えています。完全自動化もできますが、djangoで実装する予定なので、ツイートをブラウザ上で確認して定型文メッセージを送る半自動的な仕様にしたいと考えました。その場合はブラウザにコードを埋め込むスタイルになります。twitterAPIには「埋め込みコード」を取得する機能も用意されているみたいですね。早速使ってみたいと思います。
参考:
【Python】python-twitterモジュールを使って埋め込みコードを取得する
Python で Twitter から情報収集 (Twitter API 編)
モジュールのインストール
pip3で必要なモジュールをインストールします。
pip3 install requests requests_oauthlib
ソースコード
最終的には下のURLにリクエストすることで該当する埋め込みコードを取得できるみたいです。
「https://twitter.com/<screen_name>/status/<id>
その為には「id」と「screen_name」が必要みたいですね。
なので検索したツイートデータから「id」と「screen_name」を抜き出してあげましょう。
#coding: utf-8
import json
from requests_oauthlib import OAuth1Session
CONSUMER_KEY = 'xxxxxxxxxx'
CONSUMER_SECRET = 'xxxxxxxxxx'
ACCESS_TOKEN = 'xxxxxxxxxx'
ACCESS_SECRET = 'xxxxxxxxxx'
twitter = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET)
url_trend = "https://api.twitter.com/1.1/trends/place.json"
url_search = "https://api.twitter.com/1.1/search/tweets.json"
url_embed = "https://publish.twitter.com/oembed"
url_status = "https://api.twitter.com/1.1/statuses/show.json"
#url_searchからid取得
#url_statusとidからstatus取得
#statusとscreen_nameからembed_dataを取得
class TwitterApi():
def search_tweets(self):
params = {'q': '寿司', 'count': '3'}
request = twitter.get(url_search, params = params)
if request.status_code == 200:
search_tweets = json.loads(request.text)
return search_tweets
def get_tweet_ids(self, search_tweets):
tweet_ids = []
for tweet in search_tweets['statuses']:
tweet_ids.append(str(tweet['id']))
return tweet_ids
def get_screen_names(self, tweet_ids):
embed_params_dicts = []
for tweet_id in tweet_ids:
params = {'id': tweet_id}
request = twitter.get(url_status, params = params)
status = json.loads(request.text)
screen_name = status['user']['screen_name']
embed_params_dict = {}
embed_params_dict['tweet_id'] = tweet_id
embed_params_dict['screen_name'] = screen_name
embed_params_dicts.append(embed_params_dict)
return embed_params_dicts
def get_embed_datas(self, embed_params_dicts):
embed_datas = []
for e in embed_params_dicts:
url = 'https://twitter.com/'+e['screen_name']+'/'+'status/'+e['tweet_id']
params = {'url': url, 'hide_media': False, 'align': 'center'}
request = twitter.get(url_embed, params = params)
embed_data = json.loads(request.text)
embed_datas.append(embed_data['html'])
return embed_datas
def main():
twitterApi = TwitterApi()
search_tweets = twitterApi.search_tweets()
tweet_ids = twitterApi.get_tweet_ids(search_tweets)
embed_params_dicts = twitterApi.get_screen_names(tweet_ids)
embed_datas = twitterApi.get_embed_datas(embed_params_dicts)
for embed_data in embed_datas:
print(embed_data)
if __name__ == '__main__':
main()
実行結果
コンソールにしっかり表示されているのが確認できます。
このコードをブラウザで表示してみます。
しっかり表示されていますね!
これでwordpressAPIも利用すれば完全自動のツイッターまとめサイトなんかもできちゃいそうですね。
最後に
twitterってフォローし合っていないとDM送れませんでしたね...
とりあえず次はdjangoのメッセージボックスに入れた「文字」でツイートを表示できるようにしてみたいと思います。
ディスカッション
コメント一覧
まだ、コメントがありません