経緯
ちょっとしたTwitterアプリでも作ろうかなと試行錯誤していたところ、
特定のツイートに対するすべてリプライを取得したいのに、なぜか取得できないツイートがありかなりハマったので自分のためにもここに残します。
【環境】
・C#.Net
・CoreTweet
問題
特定のツイートへのリプライを取得する方法に、これといったスマートな方法はないらしいです。
中でも多くHitしたのが以下のような方法。
// 対象ツイートの取得
var status = tokens.Statuses.Show(id => ************/*対象のツイートのID*/));
// 対象ツイート以降に投稿されたツイート主へのリプライを取得
var replies = tokens.Search.Tweets(q=>"to:"+ status.User.ScreenName,
count=>100, since_id=>status.Id );
// リプライの中でも、宛先が対象のツイートとなっているもののみを取得
var targetReplies = replies.Where(w => w.InReplyToStatusId == status.Id);
この方法では Standard search API を利用してリプライを取得しています。
もっといい方法があれば教えてください。
そして、この方法ではなぜか取得できないツイートが発生します。
これが掲題の取得できないリプライツイート問題です。
原因
結果としては、取得できないツイートの主が、Twitter社から良質なアカウントと認定されていないからということでした。
[Twitter公式ブログ - Serving healthy conversation]
(https://blog.twitter.com/official/en_us/topics/product/2018/Serving_Healthy_Conversation.html)
開設して間も無かったり、大量に同じようなツイートとしていたり…理由は様々ですが、そういったアカウントのツイートは検索できないようになっているようです。
こちらが参考になりました。
Twitterで自分のツイートが検索表示されなくなったらまずここへ!
解決策
どうしろと。
ほんとにスパムアカウントとかならいいんですが、そうじゃない人もいるのでとても困りますね…。
こういったフィルタを掛けるかかけないかを検索オプションで指定できたらいいのですが。
もっといい方法があれば教えてください。(二回目)
デフォルトでONになっているセーフサーチを解除すれば解決するかも!
あとで調査します。