🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2668閲覧

idtwiの動作を再現するTwitterAPIの使い方について

usugita_san

総合スコア228

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2023/03/20 18:52

編集2023/03/21 08:12

idtwi というサービスを自分で再現できるように、Twitter APIの使い方を知りたい。

  • TwitterのAPIのバージョンは、2023.03.21現在だと2.0と呼ばれるものだと思います。
  • ユーザー名からIDを検索する事は、一応できそうです。
  • しかし、そのユーザーが過去にどんなユーザー名を使用していたかが取得できません。

前提

pythonで以下のようなソースを書いて、ユーザーの情報を取得する事は成功しています。

python

1import requests 2import urllib3 3import setting #Key項目を設定しているファイルだよ。別で管理していない人は、KEY=直書きしてね。 4from func.func_tweet import getTweetById 5from func.get_lookup import lookup_main 6from func.get_users_with_bearer_token import get_users 7from func.user_tweets import user_tweets 8 9import json 10 11http = urllib3.PoolManager() 12KEY = setting.TWITTER_BEARER_TOKEN 13 14url = "https://api.twitter.com/2/users/by?usernames=TwitterDev,TwitterAPI&user.fields=description,created_at" 15 16bearer_token = setting.TWITTER_BEARER_TOKEN 17 18def connect_to_endpoint(url): 19 response = requests.request("GET", url, auth=bearer_oauth,) 20 print(response.status_code) 21 if response.status_code != 200: 22 raise Exception( 23 "Request returned an error: {} {}".format( 24 response.status_code, response.text 25 ) 26 ) 27 return response.json() 28 29def bearer_oauth(r): 30 r.headers["Authorization"] = f"Bearer {bearer_token}" 31 r.headers["User-Agent"] = "v2UserLookupPython" 32 return r 33 34json_response = connect_to_endpoint(url) 35print(json.dumps(json_response, indent=4, sort_keys=True)) 36

結果は以下のようになりました。

json

1{ 2 "data": [ 3 { 4 "created_at": "2013-12-14T04:35:55.000Z", 5 "description": "The voice of the #TwitterDev team and your official source for updates, 6news, and events, related to the #TwitterAPI.", 7 "id": "2244994945", 8 "name": "Twitter Dev", 9 "username": "TwitterDev" 10 }, 11 { 12 "created_at": "2007-05-23T06:01:13.000Z", 13 "description": "Tweets about changes and service issues. Follow @TwitterDev\u00a0for more.", 14 "id": "6253282", 15 "name": "Twitter API", 16 "username": "TwitterAPI" 17 } 18 ] 19}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usugita_san

2023/03/21 08:12

試してみた事を追記してみました。
guest

回答1

0

ベストアンサー

「ChatGPT(GPT-4)により生成された文章です」

Twitter API v2.0では、ユーザーが過去に使用していたユーザー名を直接取得する機能は提供されていません。ただし、過去のツイートからユーザー名を取得することで、間接的にその情報を得ることができます。以下の手順で、Twitter APIを使用して、Pythonで過去のユーザー名を取得する方法を説明します。

1.まず、Twitter Developerアカウントに登録し、APIキーとAPIシークレットキーを取得してください。詳細については、Twitter Developerを参照してください。
2.次に、TweepyなどのPythonライブラリを使用して、Twitter APIにアクセスします。Tweepyをインストールするには、次のコマンドを実行します。

pip install tweepy

3.Tweepyを使用して、Twitter APIにアクセスするための認証情報を設定します。以下のようなPythonスクリプトを作成します(twitter_auth.pyという名前で保存)。

import tweepy

def authenticate(api_key, api_secret_key, access_token, access_token_secret):
auth = tweepy.OAuthHandler(api_key, api_secret_key)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True) return api

4.以下のようなPythonスクリプトを作成して、特定のユーザーが過去にどんなユーザー名を使用していたかを取得します(get_past_usernames.pyという名前で保存)。
import tweepy
from twitter_auth import authenticate

あなたの認証情報を入力してください

API_KEY = "your_api_key"
API_SECRET_KEY = "your_api_secret_key"
ACCESS_TOKEN = "your_access_token"
ACCESS_TOKEN_SECRET = "your_access_token_secret"

api = authenticate(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

def get_past_usernames(user_id, max_tweets=100):
past_usernames = set()
tweets = tweepy.Cursor(api.user_timeline, user_id=user_id, tweet_mode="extended", include_rts=False).items(max_tweets)

for tweet in tweets: past_usernames.add("@" + tweet.user.screen_name) return past_usernames

if name == "main":
user_id = "example_user_id"
past_usernames = get_past_usernames(user_id)
print(past_usernames)

このスクリプトでは、指定したユーザーIDの過去のツイートからユーザー名を取得し、ユーザーが過去に使用していたユーザー名を表示します。ただし、この方法では、過去に使用されていたユーザー名がツイートに含まれている場合のみ、そのユーザー名を取得できます。また、max_tweetsパラメータを増やすことで、さらに遡ってユーザー名を調べることができますが、APIのレート制限に注意してください。この制限に達すると、一定時間待機する必要があります。

この方法では、完全なユーザー名の履歴を取得できるわけではありませんが、過去のツイートから間接的にユーザー名の変更履歴を調べることができます。Twitter API v2.0が過去のユーザー名を直接提供していないため、このような手法を使用して情報を得ることができます。

最後に、Postmanを使用してTwitter APIにアクセスする方法についても説明します。Postmanを使用すると、APIのエンドポイントを直接呼び出してレスポンスを確認することができます。PostmanでTwitter APIを使用するには、以下の手順に従ってください。

1.Postmanをダウンロードしてインストールします。
2.Postmanを開いて、新しいリクエストを作成します。
3.リクエストのタイプを「GET」に設定し、以下のURLを入力します({user_id}を対象のユーザーIDに置き換えてください)。

https://api.twitter.com/2/users/{user_id}/tweets

4.[Authorization]タブをクリックし、[Type]を「OAuth 1.0」に設定します。次に、以下の認証情報を入力します。
Consumer Key: あなたのAPIキー
Consumer Secret: あなたのAPIシークレットキー
Access Token: あなたのアクセストークン
Token Secret: あなたのアクセストークンシークレット

5.[Send]ボタンをクリックしてリクエストを送信します。レスポンスには、指定されたユーザーIDのツイートが含まれます。
6.レスポンスを解析して、過去のユーザー名を取得します。過去のユーザー名がツイートに含まれている場合にのみ、この情報を取得できます。

Postmanを使用すると、Twitter APIと直接対話して結果を確認することができますが、過去のユーザー名を取得するためには、Pythonなどのプログラム言語を使用してレスポンスを解析し、過去のユーザー名を抽出するコードを書く必要があります。このため、PostmanはAPIの動作を確認するのに便利ですが、実際に過去のユーザー名を取得するためには、Pythonのようなプログラミング言語を使用することがより効果的です。

要約すると、Twitter API v2.0では、過去に使用されていたユーザー名を直接取得する機能は提供されていません。しかし、過去のツイートから間接的にユーザー名の変更履歴を調べることができます。PythonやPostmanを使ってTwitter APIにアクセスし、過去のツイートを取得して解析することで、ユーザーが過去に使用していたユーザー名を取得できます。ただし、この方法では完全なユーザー名の履歴を取得できるわけではなく、ツイートに含まれているユーザー名のみを取得できます。

投稿2023/03/20 20:24

編集2023/03/21 07:21
quiz

総合スコア269

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問