TOP / 技術マニュアル / 利用実績 / 商標ガイドライン

なろう小説APIサンプルプログラム「ページ分割対応小説簡易一覧(PHP)」

ページ分割対応小説簡易一覧(PHP)はなろう小説APIを利用して小説のタイトル、作者名、Nコード、小説種別(部分数)、文字数、あらすじ、URLを表示するシンプルなPHPスクリプトです。


・ソースコード(PHP5.4以降で動作)

<?php

//APIのURL(パラメーターを指定してください)
$url='{$ssl_protocol}://api.syosetu.com/novelapi/api/'
      .'?out=json'
      .'&word=%E5%A5%B3%E4%B8%BB%E4%BA%BA%E5%85%AC'
      .'&gzip=5'
      .'&order=ncodedesc';

/*
  ++補足++
  下記の文字列は「女主人公」をUTF-8でURLエンコードしたものです。
  %E5%A5%B3%E4%B8%BB%E4%BA%BA%E5%85%AC
*/


//1ページあたりの表示件数
$lim = 20;









//ページ番号取得
$p=intval($_GET['p']);

//もしページ番号が1未満なら1を代入
if($p<1){$p=1;}


//位置を決定
$st=($p-1)*$lim;

//stは0はじまりではなく1始まりなので1を加算
$st++;

//APIのURLにstを追加
$url.='&st='.($st);

//APIのURLにlimを追加
$url.='&lim='.$lim;


//APIを取得
$file = file_get_contents($url);

//解凍する
$file=gzdecode($file);

//JSONデコード
$listarray=json_decode($file,true);
print '全抽出作品数:'.number_format($listarray[0]['allcount']).'<br>';
print 'ページ番号:'.$p.'<br>';
print '▼抽出した小説の一覧<br><br><br>';


//展開する
foreach($listarray as $key=>$value){

      //要素0には全小説出力数が入っているので、飛ばす
      if($key==0){continue;}

      //タイトルの表示
      print '<b>'.$value['title'].'</b><br>';

      //作者の表示
      print '作:'.$value['writer'].' Nコード:'.$value['ncode'].'<br>';
      
      //タイプと連載の場合は全掲載部分数表示
      if($value['novel_type']==2){
            print '短編<br>';
      }else{
            //novel_typeが2以外,つまり1なら連載
            if($value['end']==1){
                  print '連載中(全'.$value['general_all_no'].'部分)<br>';
            }else{
                  print '完結済(全'.$value['general_all_no'].'部分)<br>';
            }
      }
      
      print '文字数:'.$value['length'].'文字<br><br>';
      


      //あらすじの表示
      print nl2br($value['story']).'<br>';

      //小説のURLを代入
      $novelurl='http://ncode.syosetu.com/'.strtolower($value['ncode']).'/';

      //小説へのリンク
      print '<a href="'.$novelurl.'">'.$novelurl.'</a>';

      print '<hr>';
}
//前へのリンク
if($p>1) {
      print '<a href="'.$_SERVER["PHP_SELF"].'?p='.($p-1).'">前のページ</a>';
}

print '<br>';


//次へのリンク
if($p*$lim<$listarray[0]['allcount']) {
      print '<a href="'.$_SERVER["PHP_SELF"].'?p='.($p+1).'">次のページ</a>';
}



?>



・説明

タイトル、あらすじ、キーワード、作者名に「女主人公」が入っている作品を一覧表示するプログラムです。20作品ずつでページ分割しており、Nコードが新しい順でソートしています。

APIのURLを編集することで、思い通りの小説一覧を作ることができます。 1ページあたりの最大出力数、limは20になっています。lim=50にすると1ページ50件ずつ出力します。wordを修正する場合はUTF-8でURLエンコードしてください。
くわしくはなろう小説APIの仕様をご覧ください。

改変は営利・非営利問わず自由です。ご自由にご利用ください。

▼動作環境注意1
file_get_contentsにURLを使用しています。
php.iniの設定、allow_url_fopenがonになっていることを確認してください。
一部レンタルサーバなどではセキュリティ上の理由によりOFFになっている場合があります。

▼動作環境注意2
gzip圧縮された文字列をデコードする為にgzdecodeを使用しています。
PHP5.4.0以降でご利用ください。



・API取得の仕組み

APIのURLで出力形式(out)をjson形式に指定しています。
また、gzip=5を指定しgzip圧縮ファイルとして受けとることで、転送量を削減しています。

基本的な流れは下記のとおりです。
file_get_contents()を使用し、APIのURLをオープンし$file変数に代入します。gzip=5が指定されているので、この段階ではgzip圧縮されています。
gzipファイルの解凍にはgzdecode()を使用し、解凍します。 解凍された文字列は$file変数に上書きされ、json_decode()で連想配列$listarrayに変換されます。


・免責事項

・個人・法人に限らず自由に使用することができます。
・自己の責任の上でご利用ください。
・本プログラムを使用することによって生じるいかなる問題についても、当社はその責務を負いません。
・本プログラムに関する個別サポートは行っておりません。


企画&運営
HinaProject Inc.