なろう小説でなにかツールでも作れないかなーと、とりあえず提供されているapiを叩いてみた。
環境はブラウザ(Javascript)から叩いてみる。その場合、出力形式でjsonpを選ぶとクロスサイトからも許可しているようなので、叩けるようだ。
まずjsonpを簡単に叩けるようにfetch-jsonpを入れる。
npm install fetch-jsonp
呼び出して使う。
import fetchJsonp from "fetch-jsonp";
fetchJsonp("https://api.syosetu.com/rank/rankget?out=jsonp&rtype=20130501-m")
.then(response => response.json())
.then(json => console.log(json))
.catch(error => console.log(error));
上記ではなろう小説ランキングAPIというのを叩いている。
"https://api.syosetu.com/rank/rankget?out=jsonp&rtype=20130501-m"
outにjsonp、rtypeで日にちと月間ランキングなどを指定する。rtypeは必須だ。rtypeの書き方は公式ドキュメントで。
結果
(300) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, …]
[0 … 99]
0: {ncode: "N7648BN", pt: 36092, rank: 1}
1: {ncode: "N6475BO", pt: 33112, rank: 2}
2: {ncode: "N1383BO", pt: 27958, rank: 3}
3: {ncode: "N5090BO", pt: 26221, rank: 4}
4: {ncode: "N3017BO", pt: 24280, rank: 5}
5: {ncode: "N4943BO", pt: 19832, rank: 6}
6: {ncode: "N1995BO", pt: 18990, rank: 7}
7: {ncode: "N6899BO", pt: 18562, rank: 8}
8: {ncode: "N5371BO", pt: 16561, rank: 9}
9: {ncode: "N5981BN", pt: 16534, rank: 10}
300位までのランキングが帰ってきた。
ここからncodeという小説コードを使い、 別のapiから小説情報を取り寄せると良さそうだ。とりあえずここまで。