10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Qiitaに投稿された自分(または他人)の記事の実際のストック数を知る方法 (「いいね」の数じゃなくて・・・「ストック」の数と誰が「ストック」しているかまでわかります!)

Last updated at Posted at 2017-05-03

自分の記事の「ストック数」知りたいですよね?
プログラムを組まなくても、そこそこ簡単に「ストック数」を確認する方法がありますのでお教えしましょう!また、プログラムからQiita APIを起動するやり方も紹介します。


下記のリンクは『Cygwinの環境を複数作ったり、パッケージのインストールを自動化したりする(たった一つのスクリプトファイルだけで…魔法のように…Linuxライク環境が構築できる!) - Qiita』のトップに飾っているものですが、クリックすると Qiita API v2 が実行されて上記記事をストックしている人の一覧が確認できます。

ストック」してくれている方(42名ほど)
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を確認しやすくなります。

image.png

プログラムからAPIを起動する

Windows PCで以下のスクリプトをテキストとして保存して、エクスプローラーからダブルクリックすることで Qiita API をJavaScriptプログラムから実行できます。HTMLを生成するバージョンを現在作成中です。

test-api.wsf
<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>

image.png


ところで、自分(または他人)の記事の中で「ストック数」が多い記事はどれでしょう?
知りたいですよね?
これも、そこそこ簡単に確認する方法があります。以下のURLに飛んだ後で「user:javacommons」の「javacommons」を自分または他人のQiita IDに書き換えて image.png を押してください。「ストック数」の多い順に表示されますので、上述した方法で上の方から順番に実際の「ストック数」を確認してみると良いでしょう。



10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?