ツイートの内容を取得しよう
所要時間:20分
次に、
- ツイッターのプロフィールのデータを取得する関数
- ツイッターの日付ごとの集計データを取得する関数
- リツイート数が多い順に並んだツイート一覧を取得する関数
を実装していきましょう。
ツイッターのプロフィールのデータを取得する関数
ツイッターのプロフィールのデータを取得する、get_profile関数を実装します。
def get_profile(screen_name):
user = api.get_user(screen_name= screen_name)
profile = {
"id": user.id,
"user_id": screen_name,
"image": user.profile_image_url,
"description": user.description
}
return profile
ツイッターの日付ごとの集計データを取得する関数
次に、日付ごとにいいね数とリツイート数が合計されているデータを集計する関数を実装していきましょう。
def get_grouped_df(tweets_df):
grouped_df = tweets_df.groupby([tweets_df["created_at"].dt.date]).sum().sort_values(by="created_at", ascending=False)
return grouped_df
リツイート数が多い順に並んだツイート一覧を取得する関数
最後に、リツイート数順にツイートが並んだ関数を実装していきましょう。
def get_sorted_df(tweets_df):
sorted_df = tweets_df.sort_values(by="retweets", ascending=False)
return sorted_df
動くか確認してみよう
最後に、これらの関数がうまく動くか確認してみましょう。
import tweepy
import os
from dotenv import load_dotenv
import pandas as pd
load_dotenv()
CONSUMER_KEY = os.getenv("CONSUMER_KEY")
CONSUMER_SECRET = os.getenv("CONSUMER_SECRET")
ACCESS_TOKEN = os.getenv("ACCESS_TOKEN")
ACCESS_SECRET = os.getenv("ACCESS_SECRET")
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
def get_tweets_df(screen_name):
columns = [
"tweet_id",
"created_at",
"text",
"fav",
"retweets"
]
tweets_df = pd.DataFrame(columns=columns)
for tweet in tweepy.Cursor(api.user_timeline,screen_name = screen_name, exclude_replies = True).items():
try:
if not "RT @" in tweet.text:
se = pd.Series([
tweet.id,
tweet.created_at,
tweet.text.replace('\n',''),
tweet.favorite_count,
tweet.retweet_count
]
,columns
)
tweets_df = tweets_df.append(se,ignore_index=True)
except Exception as e:
print (e)
tweets_df["created_at"] = pd.to_datetime(tweets_df["created_at"])
return tweets_df
def get_profile(screen_name):
user = api.get_user(screen_name= screen_name)
profile = {
"id": user.id,
"user_id": screen_name,
"image": user.profile_image_url,
"description": user.description
}
return profile
def get_grouped_df(tweets_df):
grouped_df = tweets_df.groupby([tweets_df["created_at"].dt.date]).sum().sort_values(by="created_at", ascending=False)
return grouped_df
def get_sorted_df(tweets_df):
sorted_df = tweets_df.sort_values(by="retweets", ascending=False)
return sorted_df
get_tweets_df("manajob_jp")
grouped_df = get_grouped_df(tweets_df)
sorted_df = get_sorted_df(tweet_df)
# 動くか出力する
print (get_profile("manajob_jp"))
print (get_tweets_df("manajob_jp"))
print (get_sorted_df(tweet_df))
うまくいくと、それぞれの値が出力されます。
次に、これらのデータを利用して、HTMLにしていきましょう!