本内容を利用した場合の一切の責任を私は負いません。
概要
7月末にNHKが下記のtweetをしたのでAPIを使って集計してみた。
https://twitter.com/NHK_DVD/status/1553228894316023808
バージョン
・node-v10.16.0-win-x64
・needle@3.1.0
・columns Version: 2.2.2
集計ルール
・NHKのtweetの日以前に作成されたユーザーのtweetが対象
(=新しいユーザーは除外。)
・1アカウントの最新のタグ有りtweetのみ対象
(=複数の場合は最新のみ。)
・タグの直前直後の空行を除く3行を、1行当たり20文字分
直前直後は直前が優先で、直前が無いか空行のみの場合のみ直後を採用する。
・#等記号と空白を無視
#等記号は、
・#
・「」
・『』
・「・」
・①②③
・✓
・📺
・'
・"
・’
・”
・!
・!
・主なカテゴリー名を無視
主なカテゴリは、
・連続テレビ小説
・海外ドラマ
・大河ドラマ
・銀河テレビ小説
リポジトリ
主なファイルは、
・nhk_drama_totalling.js
本体。
・totalling_result_top1000.csv
集計結果。
・nhk_drama.csv
カテゴリ名が含まれていると集計精度が落ちる。
どんなカテゴリーがあるか下記を解析して確認した。
https://www2.nhk.or.jp/archives/search/index.cgi?type=index&genre=drama&subgenre=0&year=all&view=0#page=1
解析時に取得したデータ。
使用
node.jsでnhk_drama_totalling.jsを動かし、ブラウザからlocalhost:8081にアクセスする。
twitter APIの認証はBearerを使用してるので、twitterの開発者ページで発行し、「token」環境変数に設定しておく。
そうすると、nhk_drama_totalling.js#L24の下記で使用される。
const token = process.env.token;
実行は1リクエストごとに停まるようなブレークポイントをかけること。
停めないとAPIのRateを超えて途中で止まることになると思う。
(下記のAPIのページにRateが載っている。)
備考
自分のtwitterリストチェッカー( https://qiita.com/qiita21409102/items/b1acef8b270b502838aa )を流用した上に、APIの使用回数上限により何度も実行できないため、全く精査されていないソースになった。
ただ、個人情報を除いて、動作実績のあるものが良いと思ったので、このまま挙げた。
50件取得で215リクエストなので該当tweetは10750程あったもよう。
ちなみにAPIでは100件取得までできる。
何故100件にしないかというと、needleライブラリの受信バッファがどうやら0.7MBくらいしかないっぽい。
レスポンスが正常終了なのにデータが中途になっている。
(HTTPのレスポンスのcompleteを見るとfalseになっているのでわかる。)
twitter APIは厳密には下記のSandboxのlast30dayを使った。
https://developer.twitter.com/en/docs/twitter-api/premium/search-api/overview
本当のPremiumは有料。
Standardサーチは直近7日(自分の動作実績では10日)しか取得できない。
V2APIのRecentも7日で、FullはAcademic用。
https://developer.twitter.com/en/docs/twitter-api/tweets/search/api-reference
集計結果はJSONをWeb表にするjqueryライブラリの下記を使った。
[columns]
https://github.com/eisenbraun/columns
上記のtwitterリストチェッカーで使っていたtwitterライブラリはBearerに対応していないようだったので、今回は下記のneedleを使った。
[needle]
https://github.com/tomas/needle
上記のストリームの説明に「from 0.7+」とあるのは0.7MB制限のことかも。
実働もそのくらいの大きさで中途になる。
ただ、ストリーム等のメソッドはクエリーをオブジェクトで渡せず、URL指定になる。
自分がやった時はURL指定ではうまく動作しなかった。
※追記(2022/08/21)
最初に考えた集計方法は違った。
tweetが主ではなく、NHKのサイト解析で得たドラマリストが主。
これをtweetにマッチングしていって票を集める。
ただ、これだとリストが2500くらいあり、かなり時間がかかると思ったため。
けど、この方法なら不要な語句のことを考える必要もないし、集計精度は高い。
この集計方法が先にあったため、リストを取得した。
というか、解析でリストが取得できたから、集計してみようと思った。
ちなみにリストは管理情報的なものもあるらしく、放送日が載っていないものもあるので、まず、リストを精査する必要があるとは思う。