10月以降も Twitter シェア数を取得する
2015年10月から、ツイートボタンが刷新されシェア数のカウント表示がなくなります。それにともないシェア数を取得できる非公式 API も廃止されます。
Twitter、ツイートボタン刷新でシェア数のカウント表示を10月から廃止 -INTERNET Watch
Web メディアなどでよくあるシェア数を自動ツイートするプログラムは、改修しなければ動作しないと思われます。このプログラミング生放送でも、プロ生ちゃんがシェア数を自動ツイートしています。
【50ツイート】これから「Twitter スタンプ」が流行る兆し!? http://t.co/cTHlbf1fj7 #自動
— プロ生ちゃん(暮井 慧)🍍 (@pronama) September 28, 2015
シェア数取得 API
そこで、10月以降もシェア数を取得できる API を作りました!
http://urlsapi.azurewebsites.net/count.json?url=http://example.jp にアクセスすると、これまでの count.json API と同じような結果が得られます。
{"count":79,"url":"https://pronama.jp/2015/09/28/twitter-stamp/"}
ただし、pronama.jp ドメイン以外は、1~6 の count 値を返します。プログラミング生放送のシェア数の取得またはサイコロなどにご活用ください。
検索 API からシェア数を求める
URL のシェア数(ツイート数)は、URL を検索することで近い値を求められます。ただし、すぐに古いツイートは検索で取得できなくなるため、こまめに結果を保存しておく必要があります。50や100 区切りでシェア数を定期的にツイートするようなプログラムは、もともといくつまでツイートしたか保存しておく必要があるので、少しの手間で改修できると思います。
C# と CoreTweet で書くとこのような感じでしょうか? ※ 実際にこのサイトで動かしているコードとは全然違います。
https://gist.github.com/jz5/2038cefe289e00c10bb8
search/tweets API を利用します。q パラメーターに URL を指定します。
- 検索したとき、一番新しいツイートの ID をシェア数と併せて保存します。次回検索するとき since_id に指定し、取得済みのツイートより古いツイートは検索対象からはずします。
- 検索したとき、100件以上あり一度に取得できない場合は、一番古いツイートの ID – 1 の値を、max_id に指定し、繰り返し取得します。
API の呼び出し制限ですが、App auth であれば、450回/15min も検索できるので、たいていのサイトでは十分だと思います。