自分の記事の「ストック数」知りたいですよね?
プログラムを組まなくても、そこそこ簡単に「ストック数」を確認する方法がありますのでお教えしましょう!また、プログラムからQiita APIを起動するやり方も紹介します。
下記のリンクは『Cygwinの環境を複数作ったり、パッケージのインストールを自動化したりする(たった一つのスクリプトファイルだけで…魔法のように…Linuxライク環境が構築できる!) - Qiita』のトップに飾っているものですが、クリックすると Qiita API v2 が実行されて上記記事をストックしている人の一覧が確認できます。
https://qiita.com/api/v2/items/1a182f187fd2a8df29c2/stockers?per_page=100&page=1
- JSON形式で表示されます。Firefox で見ると整形されて表示されるので読めます。Chromeでは読めません(いぁ、読めるけど・・・)。
- 上記URL内の記事のUUIDの部分(1a182f187fd2a8df29c2)をあなたの(または確認したい他人の)記事のUUIDに入れ替えて実行(ブラウザで開く)してください。(ちなみに上記記事のURLは
http://qiita.com/javacommons/items/
1a182f187fd2a8df29c2 です) - 100人を超えていたら page=1 の部分を page=2 page=3 ・・・のようにカウントアップしてみてください。
Choromeで開いた場合は "id": で検索すると人数とQiita IDを確認しやすくなります。
プログラムからAPIを起動する
Windows PCで以下のスクリプトをテキストとして保存して、エクスプローラーからダブルクリックすることで Qiita API をJavaScriptプログラムから実行できます。HTMLを生成するバージョンを現在作成中です。
<package>
<job>
<script language="JavaScript">
if (!String.prototype.format) {
String.prototype.format = function() {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};
}
var isCscript = /\\cscript\.exe$/i.exec(WScript.FullName);
if(!isCscript) {
var shell = new ActiveXObject("WScript.Shell");
var cmd = "cmd /c cscript.exe \"{0}\"".format(WScript.ScriptFullName);
shell.Run(cmd, 1, true);
WScript.Quit();
}
var json_html = WScript.CreateObject('htmlfile'), JSON;
json_html.write('<meta http-equiv="x-ua-compatible" content="IE=9" />');
json_html.close(JSON = json_html.parentWindow.JSON);
var vec = loadVectorFromURL("https://qiita.com/api/v2/items/1a182f187fd2a8df29c2/stockers?per_page=100&page=1");
echo("{0}人がストックしています。".format(vec.length));
for (var i=0; i<vec.length; i++) {
echo("{0}人目: @{1}={2}".format(i + 1, vec[i].id, vec[i].name));
}
var msg = "終了します。";
echo(msg);
msgbox(msg);
WScript.Quit();
function echo(msg) {
WScript.Echo(msg);
}
function msgbox(msg) {
var shell = new ActiveXObject("WScript.Shell");
shell.Popup(msg, 0, "Windows Script Host", 0);
}
function getURLContent(url) {
var StreamTypeEnum = { adTypeBinary: 1, adTypeText: 2 };
var SaveOptionsEnum = { adSaveCreateNotExist: 1, adSaveCreateOverWrite: 2 };
var http = WScript.CreateObject("MSXML2.XMLHTTP");
var strm = WScript.CreateObject("ADODB.Stream");
http.Open("GET", url, false);
http.Send();
strm.Type = StreamTypeEnum.adTypeBinary;
strm.Open();
strm.Write(http.responseBody);
strm.Position = 0
strm.Type = StreamTypeEnum.adTypeText;
strm.Charset = "utf-8";
var result = strm.ReadText();
strm.Close();
return result;
}
function loadJsonObjectFromURL(url) {
var json = getURLContent(url);
return JSON.parse(json);
}
function loadVectorFromURL(url) {
var vec =loadJsonObjectFromURL(url);
var result = [];
for (var i=0; i<vec.length; i++) {
result.push(vec[i]);
}
return result;
}
</script>
</job>
</package>
ところで、自分(または他人)の記事の中で「ストック数」が多い記事はどれでしょう?
知りたいですよね?
これも、そこそこ簡単に確認する方法があります。以下のURLに飛んだ後で「user:javacommons」の「javacommons」を自分または他人のQiita IDに書き換えて を押してください。「ストック数」の多い順に表示されますので、上述した方法で上の方から順番に実際の「ストック数」を確認してみると良いでしょう。