見出し画像

Node.jsを使ってTwitterAPIを使ってみた

SNSと連携出来たら今風の事が出来るかも??(昭和生まれ)

僕は小売業の人間なので、トレンドの深掘りとかに活用出来ればマーケティングに活かせるのではないかと思った次第です。(建前)

以前、OpenWeatherMapのAPIを使って特定の地域の天気情報を取得したことがあったが、それ以来触れないでいた為に使い方が分からなくなってしまった。(本音)

Node.jsを使ってTwitterAPIを使えるモジュールを作ってみた

キーワードから検索されたTweet内容

パラメーターに検索ワードと検索件数を設定し、起動することで、TwitterからTweet情報をJSON形式で取得し、コンソールに表示することが出来る。

取得したJSONの構造が入り組んでいたので、解決するのに膨大な時間を要してしまった…(その分、JSONの構造についての理解は深まったと思う)

作った手順(簡易)

1、TwitterDeveloperへのアカウント登録

自身のTwitterDeveloperアカウントを作成し、アプリケーションを作成。その際に参考にさせていただいたサイト様はこちらから👇

環境構築にあたると思うが、既に何度か躓いています。
・登録するTwitterのアカウントは電話番号での認証が完了しているものでなければ駄目だった点
・Tweetしたり何らかのアクションをさせる為には登録だけでは駄目で、Twitter社から承認を貰わないといけなかった点
(申請する際には英作文で、使用理由だったり、使用方法などを説明しなければいけない)

2、VisualStudioCodeでのコーティング

実際に使用したNode.jsのコードはこちら👇

const Twitter = require('twitter');

const client = new Twitter({
	consumer_key:'API Key',
	consumer_secret: 'API Secret',
	access_token_key: 'Access Token',
	access_token_secret: 'Access Token Secret'
});

const word = '凍結'; //検索ワード
const num = 10; //表示件数

const params = {
    q: word, //検索クエリ
    count: num, //返す最大件数 指定しないと15の模様
};
 
client.get('search/tweets', params).then(function(tweet){
    for(let i = 0; i < num; i++){
        console.log("-------------------------------------");
        console.log(tweet['statuses'][i]['text']);
    }
}).catch(function(err){
    console.log(err);
});

params で設定した検索ワードと表示件数からTweet内容のtextのみをコンソールに出力します。

取得したJSONの扱い(ここでも躓きました)

{
  statuses: [
    {
      created_at: 'Sat Dec 25 10:45:22 +0000 2021',
      id: ************************,
      id_str: '*********************',
      text: '@***** そしたら滑走路凍結で最悪欠航ですね😭',
      truncated: false,
      entities: [Object],
      metadata: [Object],
      source: '<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a>',
      in_reply_to_status_id: **************,
      in_reply_to_status_id_str: '******************',
      in_reply_to_user_id: *******************,
      in_reply_to_user_id_str: '************',
      in_reply_to_screen_name: '************',
      user: [Object],
      geo: null,
      coordinates: null,
      place: null,
      contributors: null,
      is_quote_status: false,
      retweet_count: 0,
      favorite_count: 0,
      favorited: false,
      retweeted: false,
      lang: 'ja'
    }
  ],
  search_metadata: {
    completed_in: 0.017,
    max_id: *****************,
    max_id_str: '**************',
    next_results: '?max_id=****************&q=%E5%87%8D%E7%B5%90&count=1&include_entities=1', 
    query: '%E5%87%8D%E7%B5%90',
    refresh_url: '?since_id=****************&q=%E5%87%8D%E7%B5%90&include_entities=1',        
    count: 1,
    since_id: 0,
    since_id_str: '0'
  }
}
tweet['statuses'][i]['text']

tweet(JSON)➡ statuses(オブジェクト)➡ [ ](配列)➡ text(オブジェクト)といった具合に取り出し方を模索している内に5時間くらい無くなりました

取得したTweet情報の活用方法について考える

Reactを使ってUIを作る(取得ボタン、削除ボタン、一覧表示等)
・CSV等で吐き出せるようにしてAccess等のデータベースとの連携をする
・定期的に Tweet ➡ DB 格納を自動実行させる仕組みを作る

等々の現在の状態から拡張させる為のアイデアを出してみた

過去記事へのリンク

前回、反省した点を踏まえて…

月曜日 :計画を立てる
火曜日~:時間を置かずに直ぐ実行に移す
土曜日~:余裕を持って記事執筆

といった自分の中でのルールを明確にして取り組むことが出来たかな

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