見出し画像

【114日目】Tweepy_search_30_dayメソッドと位置情報

tweepyを使ったアプリ作りを進める一環で、search_30_dayメソッドで特定の地域で発信されたツイートを取得する試みです。


search_30_dayメソッドについては前回の記事で簡単に触れました。


その名の通り過去30日分まで遡ってツイートを取得できるメソッドです。

tweepyのプレミアムアクセスと呼ばれる少し応用的なメソッドで、簡易版であるsearch_tweetメソッドとは書き方が異なる部分がありました。


まず下準備として、Developer Portalからsearch_30_dayを使うための設定を行います。

↓こちらから入ります

↓続いてSet up dev enviromentをクリックします

続いてlabel名と紐づけるアプリ(Developerアカウントの登録時に設定したもの)を設定します。label名は実際にコードを書く際に必要になるものです。(testと記載していますが、色々あってtest1に変更してます)

完了すると以下のような画面になります。

ここまでで下準備は完了です。


では実際にsearch_30_dayを使ってみたいと思います。

import tweepy
 
# 以下はAPIのためのコード
api_key       = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
api_secret    = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
access_key    = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
access_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
 
auth = tweepy.OAuth1UserHandler(api_key, api_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
 
# 検索条件の設定(キーワードを設定し、位置情報とセットにしている)
searchkey = "ランチ"
search ="{} point_radius:[140 36 30km]".format(searchkey)  # 東京は東経140度 北緯36度
item_num = 10
 
# 検索条件を元にツイートを抽出(labelはTwitterのDeveloper portalで設定可能)
tweets = tweepy.Cursor(api.search_30_day, label='test', query=search,).items(item_num)
 
# 一度リストにしないとその後の操作ができない
tweets = list(tweets)
tweet_data = []
for tweet in tweets:
    tweet_data.append([tweet.created_at, tweet.user.name, tweet.text, tweet.favorite_count])

print(tweet_data)

Jupyter lab等で上記のコードを実行すれば、東京の半径30kmで投稿されたツイートを取得できます。

↓こんな感じの出力結果です(ごちゃごちゃですみません、、)。


ちなみに地理情報はpoint_radiusで特定されています。

point_radius:
point_radius:演算子を使用すると、円形の地理領域を指定して、その領域内でツイート固有の位置情報データを含むツイートを照合できます。この演算子を使用するには、中心にする経度-緯度座標を定義してから半径(最大25マイル)を設定します。この領域内にあるジオPointを含むすべてのツイートに一致します。また、Twitter Placeを含むツイートは、定義したポイント-半径領域内に完全に収まるPlaceに定義されたジオポリゴンの位置に一致します。定義したポイント-半径領域外にポリゴンがあるPlaceは一致とみなされません。

この演算子は次のように使用します: point_radius:[lon lat radius]

https://developer.twitter.com/ja/docs/tutorials/filtering-tweets-by-location


また、searchという引数でキーワードと地理情報をセットにしているのですが、これはこの形式でqueryに渡さないとキーワードが変数にできないからです。

今回はformat関数でまとめています。

searchkey = "ランチ"
search ="{} point_radius:[140 36 30km]".format(searchkey)


次はこれをDjangoでアプリ化していきたいと思いますーーー

できるかなー


参考


これまで修了したコース等

【YouTube_Django関係】
Pythonでウェブサービスを作ろう! 1
テンプレートをマスターしよう! 2
静的ファイルを配信しよう !3
本番公開しよう! 4
データベースと接続しよう! 5
ブログを作って学ぶモデル入門! 6
これが汎用ビューの力! 7
Djangoフォームを自由自在に操ろう! 8
djagoを最大限使って効率よくログインを作ろう! 9
ログイン完成!サインアップ & メール認証 10
データベースマイグレーション前編 15
データベースマイグレーション後編 16

【YouTube_Pandas関係】
3時間でマスター Pandas入門コース
Pandas20本ノック

【Paiza】
Aランクレベルアップメニュー 24/49問
データセット選択メニュー   12/17問
配列メニュー         64/64問
ループメニュー1      20/20問
ループメニュー2      12/20問
条件分岐メニュー       25/25問
二重ループメニュー      19/19問
配列活用メニュー       26/26問
文字列処理メニュー      30/30問
Bランクレベルアップメニュー 62/62問
Cランクレベルアップメニュー 30/30問
ランクB合格
ランクC合格
JavaScript体験篇       15/15講座
辞書(ディクショナリ)の基礎 8/8講座

【書籍/ブログ】
Django入門 | 初心者でも1時間でWebアプリ(Todoアプリ)を作成するコース
基礎からのMySQL
Web技術の基本
京大のPython教科書
Pythonデータベースプログラミング
Pythonエンジニアファーストブック

【Progate】
Python Ⅰ~Ⅴ
Python アプリ版 コースⅠ~Ⅴ
SQL Ⅰ~ Ⅳ
SQL アプリ版 コースⅢ
HTML&CSS 初級編

【環境構築】
Python, VSCode, MySQL(MAMP), Git / GitHub, HEROKU, anaconda, jupyter lab

この記事が気に入ったらサポートをしてみませんか?