narou 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/dist/{chunk-RITMMCZE.js → chunk-3A5MHPWL.js} +1 -1
- package/dist/chunk-3A5MHPWL.js.map +1 -0
- package/dist/{chunk-CDOBNSCL.js → chunk-5UDKQCPJ.js} +1 -1
- package/dist/chunk-5UDKQCPJ.js.map +1 -0
- package/dist/{chunk-UN3W2CT3.js → chunk-6BZWV4ZC.js} +6 -3
- package/dist/{chunk-UN3W2CT3.js.map → chunk-6BZWV4ZC.js.map} +1 -1
- package/dist/chunk-BQLSW236.js +117 -0
- package/dist/chunk-BQLSW236.js.map +1 -0
- package/dist/{chunk-K22KVNAH.js → chunk-DEQICAN3.js} +2 -2
- package/dist/chunk-E2H3AJSQ.js +57 -0
- package/dist/chunk-E2H3AJSQ.js.map +1 -0
- package/dist/chunk-HOBLKBZ6.js +452 -0
- package/dist/chunk-HOBLKBZ6.js.map +1 -0
- package/dist/{chunk-XVH2CU2Q.js → chunk-IPDEGCWU.js} +1 -1
- package/dist/chunk-IPDEGCWU.js.map +1 -0
- package/dist/{chunk-AZT2OXBZ.js → chunk-LQLNWSWV.js} +3 -3
- package/dist/{chunk-SNPBEVCY.js → chunk-PLEM2AOH.js} +3 -3
- package/dist/chunk-RNHRR56W.js +25 -0
- package/dist/chunk-RNHRR56W.js.map +1 -0
- package/dist/{chunk-NVMUSXA5.js → chunk-VUZIISP2.js} +1 -1
- package/dist/chunk-VUZIISP2.js.map +1 -0
- package/dist/{chunk-XAUB42TO.js → chunk-VZVUANDN.js} +6 -4
- package/dist/chunk-VZVUANDN.js.map +1 -0
- package/dist/index.browser.cjs +214 -85
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.d.cts +24 -9
- package/dist/index.browser.d.ts +24 -9
- package/dist/index.browser.js +11 -10
- package/dist/index.browser.js.map +1 -1
- package/dist/index.cjs +214 -85
- package/dist/index.cjs.map +1 -1
- package/dist/index.common.cjs +214 -85
- package/dist/index.common.cjs.map +1 -1
- package/dist/index.common.d.cts +2 -2
- package/dist/index.common.d.ts +2 -2
- package/dist/index.common.js +9 -8
- package/dist/index.d.cts +15 -6
- package/dist/index.d.ts +15 -6
- package/dist/index.js +13 -12
- package/dist/index.js.map +1 -1
- package/dist/narou-DBa12V_l.d.ts +404 -0
- package/dist/narou-DCp4aGfA.d.cts +404 -0
- package/dist/narou-fetch.cjs +4 -1
- package/dist/narou-fetch.cjs.map +1 -1
- package/dist/narou-fetch.d.cts +2 -2
- package/dist/narou-fetch.d.ts +2 -2
- package/dist/narou-fetch.js +4 -4
- package/dist/narou-jsonp.cjs +4 -1
- package/dist/narou-jsonp.cjs.map +1 -1
- package/dist/narou-jsonp.d.cts +2 -2
- package/dist/narou-jsonp.d.ts +2 -2
- package/dist/narou-jsonp.js +4 -4
- package/dist/narou-ranking-results.d.cts +2 -2
- package/dist/narou-ranking-results.d.ts +2 -2
- package/dist/{narou-search-results-DWCJWTC5.d.cts → narou-search-results-C21hWrnL.d.cts} +2 -2
- package/dist/{narou-search-results-D5yqPRZ7.d.ts → narou-search-results-DT0YdaBn.d.ts} +2 -2
- package/dist/narou-search-results.cjs.map +1 -1
- package/dist/narou-search-results.d.cts +1 -1
- package/dist/narou-search-results.d.ts +1 -1
- package/dist/narou-search-results.js +1 -1
- package/dist/narou.cjs +4 -1
- package/dist/narou.cjs.map +1 -1
- package/dist/narou.d.cts +2 -2
- package/dist/narou.d.ts +2 -2
- package/dist/narou.js +2 -2
- package/dist/params.cjs.map +1 -1
- package/dist/params.d.cts +1 -1
- package/dist/params.d.ts +1 -1
- package/dist/params.js +1 -1
- package/dist/ranking-history.cjs +11 -3
- package/dist/ranking-history.cjs.map +1 -1
- package/dist/ranking-history.d.cts +12 -1
- package/dist/ranking-history.d.ts +12 -1
- package/dist/ranking-history.js +2 -1
- package/dist/ranking.cjs +186 -77
- package/dist/ranking.cjs.map +1 -1
- package/dist/ranking.d.cts +69 -8
- package/dist/ranking.d.ts +69 -8
- package/dist/ranking.js +4 -3
- package/dist/search-builder-r18.cjs +118 -59
- package/dist/search-builder-r18.cjs.map +1 -1
- package/dist/search-builder-r18.d.cts +19 -6
- package/dist/search-builder-r18.d.ts +19 -6
- package/dist/search-builder-r18.js +3 -3
- package/dist/search-builder.cjs +135 -69
- package/dist/search-builder.cjs.map +1 -1
- package/dist/search-builder.d.cts +2 -2
- package/dist/search-builder.d.ts +2 -2
- package/dist/search-builder.js +2 -2
- package/dist/user-search.cjs +37 -13
- package/dist/user-search.cjs.map +1 -1
- package/dist/user-search.d.cts +2 -2
- package/dist/user-search.d.ts +2 -2
- package/dist/user-search.js +3 -3
- package/dist/util/date.cjs +51 -0
- package/dist/util/date.cjs.map +1 -0
- package/dist/util/date.d.cts +21 -0
- package/dist/util/date.d.ts +21 -0
- package/dist/util/date.js +11 -0
- package/dist/util/date.js.map +1 -0
- package/dist/util/jsonp.cjs.map +1 -1
- package/dist/util/jsonp.d.cts +36 -0
- package/dist/util/jsonp.d.ts +36 -0
- package/dist/util/jsonp.js +1 -1
- package/dist/util/type.cjs.map +1 -1
- package/dist/util/type.d.cts +23 -0
- package/dist/util/type.d.ts +23 -0
- package/dist/util/unzipp.cjs.map +1 -1
- package/dist/util/unzipp.d.cts +9 -0
- package/dist/util/unzipp.d.ts +9 -0
- package/dist/util/unzipp.js +1 -1
- package/package.json +34 -36
- package/pnpm-lock.yaml +2114 -1991
- package/src/index.browser.ts +21 -5
- package/src/index.ts +11 -2
- package/src/narou-search-results.ts +2 -1
- package/src/narou.ts +4 -1
- package/src/params.ts +1 -1
- package/src/ranking-history.ts +13 -4
- package/src/ranking.ts +79 -15
- package/src/search-builder-r18.ts +17 -4
- package/src/search-builder.ts +176 -73
- package/src/util/date.ts +38 -0
- package/src/util/jsonp.ts +61 -6
- package/src/util/type.ts +23 -0
- package/src/util/unzipp.ts +9 -0
- package/dist/chunk-4VC3246A.js +0 -83
- package/dist/chunk-4VC3246A.js.map +0 -1
- package/dist/chunk-CDOBNSCL.js.map +0 -1
- package/dist/chunk-NVMUSXA5.js.map +0 -1
- package/dist/chunk-P7QOZBII.js +0 -386
- package/dist/chunk-P7QOZBII.js.map +0 -1
- package/dist/chunk-RITMMCZE.js.map +0 -1
- package/dist/chunk-WYSPGQ3S.js +0 -44
- package/dist/chunk-WYSPGQ3S.js.map +0 -1
- package/dist/chunk-XAUB42TO.js.map +0 -1
- package/dist/chunk-XVH2CU2Q.js.map +0 -1
- package/dist/narou-CatW_TC9.d.cts +0 -301
- package/dist/narou-fH9osIoh.d.ts +0 -301
- /package/dist/{chunk-K22KVNAH.js.map → chunk-DEQICAN3.js.map} +0 -0
- /package/dist/{chunk-AZT2OXBZ.js.map → chunk-LQLNWSWV.js.map} +0 -0
- /package/dist/{chunk-SNPBEVCY.js.map → chunk-PLEM2AOH.js.map} +0 -0
package/dist/index.browser.cjs
CHANGED
|
@@ -149,7 +149,10 @@ var NarouNovel = class {
|
|
|
149
149
|
* @see https://dev.syosetu.com/man/userapi/
|
|
150
150
|
*/
|
|
151
151
|
async executeUserSearch(params) {
|
|
152
|
-
return
|
|
152
|
+
return new NarouSearchResults(
|
|
153
|
+
await this.execute(params, "https://api.syosetu.com/userapi/api/"),
|
|
154
|
+
params
|
|
155
|
+
);
|
|
153
156
|
}
|
|
154
157
|
};
|
|
155
158
|
|
|
@@ -594,14 +597,30 @@ var SearchBuilderBase = class {
|
|
|
594
597
|
/**
|
|
595
598
|
* constructor
|
|
596
599
|
* @private
|
|
600
|
+
* @param params クエリパラメータ
|
|
601
|
+
* @param api NarouNovel インスタンス
|
|
597
602
|
*/
|
|
598
603
|
constructor(params = {}, api) {
|
|
599
604
|
this.params = params;
|
|
600
605
|
this.api = api;
|
|
601
606
|
}
|
|
607
|
+
/**
|
|
608
|
+
* 配列から重複を除去する
|
|
609
|
+
* @protected
|
|
610
|
+
* @static
|
|
611
|
+
* @param array 配列
|
|
612
|
+
* @returns 重複を除去した配列
|
|
613
|
+
*/
|
|
602
614
|
static distinct(array) {
|
|
603
615
|
return Array.from(new Set(array));
|
|
604
616
|
}
|
|
617
|
+
/**
|
|
618
|
+
* 配列をハイフン区切りの文字列に変換する
|
|
619
|
+
* @protected
|
|
620
|
+
* @static
|
|
621
|
+
* @param n 文字列または数値の配列、あるいは単一の文字列または数値
|
|
622
|
+
* @returns ハイフン区切りの文字列
|
|
623
|
+
*/
|
|
605
624
|
static array2string(n) {
|
|
606
625
|
if (Array.isArray(n)) {
|
|
607
626
|
return this.distinct(n).join("-");
|
|
@@ -610,44 +629,48 @@ var SearchBuilderBase = class {
|
|
|
610
629
|
}
|
|
611
630
|
}
|
|
612
631
|
/**
|
|
613
|
-
*
|
|
614
|
-
* @
|
|
632
|
+
* 取得件数を指定する (lim)
|
|
633
|
+
* @param num 取得件数 (1-500)
|
|
634
|
+
* @return {this}
|
|
615
635
|
*/
|
|
616
636
|
limit(num) {
|
|
617
637
|
this.set({ lim: num });
|
|
618
638
|
return this;
|
|
619
639
|
}
|
|
620
640
|
/**
|
|
621
|
-
*
|
|
622
|
-
* @
|
|
641
|
+
* 取得開始位置を指定する (st)
|
|
642
|
+
* @param num 取得開始位置 (1-)
|
|
643
|
+
* @return {this}
|
|
623
644
|
*/
|
|
624
645
|
start(num) {
|
|
625
646
|
this.set({ st: num });
|
|
626
647
|
return this;
|
|
627
648
|
}
|
|
628
649
|
/**
|
|
629
|
-
*
|
|
630
|
-
* @
|
|
650
|
+
* ページ番号と1ページあたりの件数で取得範囲を指定する
|
|
651
|
+
* @param no ページ番号 (0-)
|
|
652
|
+
* @param count 1ページあたりの件数 (デフォルト: 20)
|
|
653
|
+
* @return {this}
|
|
631
654
|
*/
|
|
632
655
|
page(no, count2 = 20) {
|
|
633
656
|
return this.limit(count2).start(no * count2);
|
|
634
657
|
}
|
|
635
658
|
/**
|
|
636
|
-
*
|
|
637
|
-
*
|
|
659
|
+
* 出力順序を指定する (order)
|
|
660
|
+
* 指定しない場合は新着順となります。
|
|
638
661
|
* @param {TOrder} order 出力順序
|
|
639
|
-
* @return {
|
|
662
|
+
* @return {this}
|
|
640
663
|
*/
|
|
641
664
|
order(order) {
|
|
642
665
|
this.set({ order });
|
|
643
666
|
return this;
|
|
644
667
|
}
|
|
645
668
|
/**
|
|
646
|
-
* gzip
|
|
669
|
+
* gzip圧縮レベルを指定する (gzip)
|
|
647
670
|
*
|
|
648
671
|
* 転送量上限を減らすためにも推奨
|
|
649
672
|
* @param {GzipLevel} level gzip圧縮レベル(1~5)
|
|
650
|
-
* @return {
|
|
673
|
+
* @return {this}
|
|
651
674
|
*/
|
|
652
675
|
gzip(level) {
|
|
653
676
|
this.set({ gzip: level });
|
|
@@ -655,8 +678,9 @@ var SearchBuilderBase = class {
|
|
|
655
678
|
}
|
|
656
679
|
/**
|
|
657
680
|
* クエリパラメータをセットする
|
|
658
|
-
* @
|
|
659
|
-
* @
|
|
681
|
+
* @protected
|
|
682
|
+
* @param obj セットするパラメータ
|
|
683
|
+
* @return {this}
|
|
660
684
|
*/
|
|
661
685
|
set(obj) {
|
|
662
686
|
this.params = { ...this.params, ...obj };
|
|
@@ -664,6 +688,9 @@ var SearchBuilderBase = class {
|
|
|
664
688
|
}
|
|
665
689
|
/**
|
|
666
690
|
* クエリパラメータを削除する
|
|
691
|
+
* @protected
|
|
692
|
+
* @param key 削除するパラメータのキー
|
|
693
|
+
* @returns {this}
|
|
667
694
|
*/
|
|
668
695
|
unset(key) {
|
|
669
696
|
delete this.params[key];
|
|
@@ -672,56 +699,65 @@ var SearchBuilderBase = class {
|
|
|
672
699
|
};
|
|
673
700
|
var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilderBase {
|
|
674
701
|
/**
|
|
675
|
-
*
|
|
676
|
-
*
|
|
702
|
+
* 検索語を指定します (word)。
|
|
703
|
+
* 半角または全角スペースで区切るとAND抽出になります。部分一致でHITします。
|
|
704
|
+
* @param word 検索語
|
|
705
|
+
* @return {this}
|
|
677
706
|
*/
|
|
678
707
|
word(word) {
|
|
679
708
|
this.set({ word });
|
|
680
709
|
return this;
|
|
681
710
|
}
|
|
682
711
|
/**
|
|
683
|
-
*
|
|
684
|
-
*
|
|
712
|
+
* 除外したい単語を指定します (notword)。
|
|
713
|
+
* スペースで区切ることにより除外する単語を増やせます。部分一致で除外されます。
|
|
714
|
+
* @param word 除外語
|
|
715
|
+
* @return {this}
|
|
685
716
|
*/
|
|
686
717
|
notWord(word) {
|
|
687
718
|
this.set({ notword: word });
|
|
688
719
|
return this;
|
|
689
720
|
}
|
|
690
721
|
/**
|
|
691
|
-
*
|
|
692
|
-
* @
|
|
722
|
+
* 検索対象を作品名に限定するかどうかを指定します (title)。
|
|
723
|
+
* @param bool trueの場合、作品名を検索対象とする (デフォルト: true)
|
|
724
|
+
* @return {this}
|
|
693
725
|
*/
|
|
694
726
|
byTitle(bool = true) {
|
|
695
727
|
this.set({ title: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
696
728
|
return this;
|
|
697
729
|
}
|
|
698
730
|
/**
|
|
699
|
-
*
|
|
700
|
-
* @
|
|
731
|
+
* 検索対象をあらすじに限定するかどうかを指定します (ex)。
|
|
732
|
+
* @param bool trueの場合、あらすじを検索対象とする (デフォルト: true)
|
|
733
|
+
* @return {this}
|
|
701
734
|
*/
|
|
702
735
|
byOutline(bool = true) {
|
|
703
736
|
this.set({ ex: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
704
737
|
return this;
|
|
705
738
|
}
|
|
706
739
|
/**
|
|
707
|
-
*
|
|
708
|
-
* @
|
|
740
|
+
* 検索対象をキーワードに限定するかどうかを指定します (keyword)。
|
|
741
|
+
* @param bool trueの場合、キーワードを検索対象とする (デフォルト: true)
|
|
742
|
+
* @return {this}
|
|
709
743
|
*/
|
|
710
744
|
byKeyword(bool = true) {
|
|
711
745
|
this.set({ keyword: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
712
746
|
return this;
|
|
713
747
|
}
|
|
714
748
|
/**
|
|
715
|
-
*
|
|
716
|
-
* @
|
|
749
|
+
* 検索対象を作者名に限定するかどうかを指定します (wname)。
|
|
750
|
+
* @param bool trueの場合、作者名を検索対象とする (デフォルト: true)
|
|
751
|
+
* @return {this}
|
|
717
752
|
*/
|
|
718
753
|
byAuthor(bool = true) {
|
|
719
754
|
this.set({ wname: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
720
755
|
return this;
|
|
721
756
|
}
|
|
722
757
|
/**
|
|
723
|
-
*
|
|
724
|
-
* @
|
|
758
|
+
* ボーイズラブ作品を抽出または除外します (isbl/notbl)。
|
|
759
|
+
* @param bool trueの場合、ボーイズラブ作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
760
|
+
* @return {this}
|
|
725
761
|
*/
|
|
726
762
|
isBL(bool = true) {
|
|
727
763
|
if (bool) {
|
|
@@ -732,8 +768,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
732
768
|
return this;
|
|
733
769
|
}
|
|
734
770
|
/**
|
|
735
|
-
*
|
|
736
|
-
* @
|
|
771
|
+
* ガールズラブ作品を抽出または除外します (isgl/notgl)。
|
|
772
|
+
* @param bool trueの場合、ガールズラブ作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
773
|
+
* @return {this}
|
|
737
774
|
*/
|
|
738
775
|
isGL(bool = true) {
|
|
739
776
|
if (bool) {
|
|
@@ -744,8 +781,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
744
781
|
return this;
|
|
745
782
|
}
|
|
746
783
|
/**
|
|
747
|
-
*
|
|
748
|
-
* @
|
|
784
|
+
* 残酷な描写あり作品を抽出または除外します (iszankoku/notzankoku)。
|
|
785
|
+
* @param bool trueの場合、残酷な描写あり作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
786
|
+
* @return {this}
|
|
749
787
|
*/
|
|
750
788
|
isZankoku(bool = true) {
|
|
751
789
|
if (bool) {
|
|
@@ -756,8 +794,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
756
794
|
return this;
|
|
757
795
|
}
|
|
758
796
|
/**
|
|
759
|
-
*
|
|
760
|
-
* @
|
|
797
|
+
* 異世界転生作品を抽出または除外します (istensei/nottensei)。
|
|
798
|
+
* @param bool trueの場合、異世界転生作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
799
|
+
* @return {this}
|
|
761
800
|
*/
|
|
762
801
|
isTensei(bool = true) {
|
|
763
802
|
if (bool) {
|
|
@@ -768,8 +807,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
768
807
|
return this;
|
|
769
808
|
}
|
|
770
809
|
/**
|
|
771
|
-
*
|
|
772
|
-
* @
|
|
810
|
+
* 異世界転移作品を抽出または除外します (istenni/nottenni)。
|
|
811
|
+
* @param bool trueの場合、異世界転移作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
812
|
+
* @return {this}
|
|
773
813
|
*/
|
|
774
814
|
isTenni(bool = true) {
|
|
775
815
|
if (bool) {
|
|
@@ -780,16 +820,18 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
780
820
|
return this;
|
|
781
821
|
}
|
|
782
822
|
/**
|
|
783
|
-
*
|
|
784
|
-
* @return {
|
|
823
|
+
* 異世界転生または異世界転移作品を抽出します (istt)。
|
|
824
|
+
* @return {this}
|
|
785
825
|
*/
|
|
786
826
|
isTT() {
|
|
787
827
|
this.set({ istt: BooleanNumber.True });
|
|
788
828
|
return this;
|
|
789
829
|
}
|
|
790
830
|
/**
|
|
791
|
-
*
|
|
792
|
-
*
|
|
831
|
+
* 抽出する作品の文字数を指定します (length)。
|
|
832
|
+
* 範囲指定する場合は、最小文字数と最大文字数をハイフン(-)記号で区切ってください。
|
|
833
|
+
* @param length 文字数、または[最小文字数, 最大文字数]
|
|
834
|
+
* @return {this}
|
|
793
835
|
*/
|
|
794
836
|
length(length) {
|
|
795
837
|
this.set({ length: _NovelSearchBuilderBase.array2string(length) });
|
|
@@ -806,59 +848,66 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
806
848
|
return this;
|
|
807
849
|
}
|
|
808
850
|
/**
|
|
809
|
-
*
|
|
810
|
-
* @
|
|
851
|
+
* 抽出する作品の挿絵数を指定します (sasie)。
|
|
852
|
+
* @param num 挿絵数、または[最小挿絵数, 最大挿絵数]
|
|
853
|
+
* @return {this}
|
|
811
854
|
*/
|
|
812
855
|
sasie(num) {
|
|
813
856
|
this.set({ sasie: _NovelSearchBuilderBase.array2string(num) });
|
|
814
857
|
return this;
|
|
815
858
|
}
|
|
816
859
|
/**
|
|
817
|
-
*
|
|
818
|
-
* @
|
|
860
|
+
* 抽出する作品の予想読了時間を分単位で指定します (time)。
|
|
861
|
+
* @param num 読了時間(分)、または[最小読了時間, 最大読了時間]
|
|
862
|
+
* @return {this}
|
|
819
863
|
*/
|
|
820
864
|
time(num) {
|
|
821
865
|
this.set({ time: _NovelSearchBuilderBase.array2string(num) });
|
|
822
866
|
return this;
|
|
823
867
|
}
|
|
824
868
|
/**
|
|
825
|
-
*
|
|
826
|
-
* @
|
|
869
|
+
* Nコードを指定して取得します (ncode)。
|
|
870
|
+
* @param ncodes Nコード、またはNコードの配列
|
|
871
|
+
* @return {this}
|
|
827
872
|
*/
|
|
828
873
|
ncode(ncodes) {
|
|
829
874
|
this.set({ ncode: _NovelSearchBuilderBase.array2string(ncodes) });
|
|
830
875
|
return this;
|
|
831
876
|
}
|
|
832
877
|
/**
|
|
833
|
-
*
|
|
834
|
-
* @
|
|
878
|
+
* 抽出する小説タイプを指定します (type)。
|
|
879
|
+
* @param type 小説タイプ (t: 短編, r: 連載中, er: 完結済連載小説, ter: 短編と完結済連載小説, re: 連載中と完結済連載小説)
|
|
880
|
+
* @return {this}
|
|
835
881
|
*/
|
|
836
882
|
type(type) {
|
|
837
883
|
this.set({ type });
|
|
838
884
|
return this;
|
|
839
885
|
}
|
|
840
886
|
/**
|
|
841
|
-
*
|
|
842
|
-
*
|
|
887
|
+
* 抽出する作品の文体を指定します (buntai)。
|
|
888
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
889
|
+
* @param buntai 文体コード、または文体コードの配列
|
|
890
|
+
* @return {this}
|
|
843
891
|
*/
|
|
844
892
|
buntai(buntai) {
|
|
845
893
|
this.set({ buntai: _NovelSearchBuilderBase.array2string(buntai) });
|
|
846
894
|
return this;
|
|
847
895
|
}
|
|
848
896
|
/**
|
|
849
|
-
*
|
|
850
|
-
* @
|
|
897
|
+
* 連載停止中作品に関する指定をします (stop)。
|
|
898
|
+
* @param bool trueの場合、長期連載停止中のみ取得する (デフォルト: true)。falseの場合、長期連載停止中を除外する。
|
|
899
|
+
* @return {this}
|
|
851
900
|
*/
|
|
852
901
|
isStop(bool = true) {
|
|
853
902
|
this.set({ stop: bool ? StopParam.Stopping : StopParam.NoStopping });
|
|
854
903
|
return this;
|
|
855
904
|
}
|
|
856
905
|
/**
|
|
857
|
-
*
|
|
858
|
-
* @return {
|
|
906
|
+
* ピックアップ作品のみを取得します (ispickup)。
|
|
907
|
+
* @return {this}
|
|
859
908
|
*/
|
|
860
|
-
isPickup(
|
|
861
|
-
this.set({ ispickup:
|
|
909
|
+
isPickup() {
|
|
910
|
+
this.set({ ispickup: BooleanNumber.True });
|
|
862
911
|
return this;
|
|
863
912
|
}
|
|
864
913
|
lastUpdate(x, y) {
|
|
@@ -899,48 +948,59 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
899
948
|
};
|
|
900
949
|
var SearchBuilder = class _SearchBuilder extends NovelSearchBuilderBase {
|
|
901
950
|
/**
|
|
902
|
-
*
|
|
903
|
-
*
|
|
951
|
+
* 大ジャンルを指定して取得します (biggenre)。
|
|
952
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
953
|
+
* @param genre 大ジャンルコード、または大ジャンルコードの配列
|
|
954
|
+
* @return {this}
|
|
904
955
|
*/
|
|
905
956
|
bigGenre(genre) {
|
|
906
957
|
this.set({ biggenre: _SearchBuilder.array2string(genre) });
|
|
907
958
|
return this;
|
|
908
959
|
}
|
|
909
960
|
/**
|
|
910
|
-
*
|
|
911
|
-
*
|
|
961
|
+
* 除外したい大ジャンルを指定します (notbiggenre)。
|
|
962
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
963
|
+
* @param genre 除外する大ジャンルコード、または大ジャンルコードの配列
|
|
964
|
+
* @return {this}
|
|
912
965
|
*/
|
|
913
966
|
notBigGenre(genre) {
|
|
914
967
|
this.set({ notbiggenre: _SearchBuilder.array2string(genre) });
|
|
915
968
|
return this;
|
|
916
969
|
}
|
|
917
970
|
/**
|
|
918
|
-
*
|
|
919
|
-
*
|
|
971
|
+
* ジャンルを指定して取得します (genre)。
|
|
972
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
973
|
+
* @param genre ジャンルコード、またはジャンルコードの配列
|
|
974
|
+
* @return {this}
|
|
920
975
|
*/
|
|
921
976
|
genre(genre) {
|
|
922
977
|
this.set({ genre: _SearchBuilder.array2string(genre) });
|
|
923
978
|
return this;
|
|
924
979
|
}
|
|
925
980
|
/**
|
|
926
|
-
*
|
|
927
|
-
*
|
|
981
|
+
* 除外したいジャンルを指定します (notgenre)。
|
|
982
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
983
|
+
* @param genre 除外するジャンルコード、またはジャンルコードの配列
|
|
984
|
+
* @return {this}
|
|
928
985
|
*/
|
|
929
986
|
notGenre(genre) {
|
|
930
987
|
this.set({ notgenre: _SearchBuilder.array2string(genre) });
|
|
931
988
|
return this;
|
|
932
989
|
}
|
|
933
990
|
/**
|
|
934
|
-
*
|
|
935
|
-
*
|
|
991
|
+
* ユーザIDを指定して取得します (userid)。
|
|
992
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
993
|
+
* @param ids ユーザID、またはユーザIDの配列
|
|
994
|
+
* @return {this}
|
|
936
995
|
*/
|
|
937
996
|
userId(ids) {
|
|
938
997
|
this.set({ userid: _SearchBuilder.array2string(ids) });
|
|
939
998
|
return this;
|
|
940
999
|
}
|
|
941
1000
|
/**
|
|
942
|
-
*
|
|
943
|
-
* @
|
|
1001
|
+
* R15作品を抽出または除外します (isr15/notr15)。
|
|
1002
|
+
* @param bool trueの場合、R15作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
1003
|
+
* @return {this}
|
|
944
1004
|
*/
|
|
945
1005
|
isR15(bool = true) {
|
|
946
1006
|
if (bool) {
|
|
@@ -951,13 +1011,22 @@ var SearchBuilder = class _SearchBuilder extends NovelSearchBuilderBase {
|
|
|
951
1011
|
return this;
|
|
952
1012
|
}
|
|
953
1013
|
/**
|
|
954
|
-
*
|
|
955
|
-
*
|
|
1014
|
+
* 出力する項目を個別に指定します (of)。
|
|
1015
|
+
* 未指定時は全項目出力されます。転送量軽減のため、このパラメータの使用が推奨されます。
|
|
1016
|
+
* 複数項目を出力する場合はハイフン(-)記号で区切ってください。
|
|
1017
|
+
* @param fields 出力するフィールド名、またはフィールド名の配列
|
|
1018
|
+
* @return {SearchBuilder<SearchResultFields<TFields>, TOpt>} 型が更新されたビルダー
|
|
956
1019
|
*/
|
|
957
1020
|
fields(fields) {
|
|
958
1021
|
this.set({ of: _SearchBuilder.array2string(fields) });
|
|
959
1022
|
return this;
|
|
960
1023
|
}
|
|
1024
|
+
/**
|
|
1025
|
+
* 出力オプション項目を指定します (opt)。
|
|
1026
|
+
* 複数項目を出力する場合はハイフン(-)記号で区切ってください。
|
|
1027
|
+
* @param option 出力するオプションフィールド名、またはオプションフィールド名の配列
|
|
1028
|
+
* @return {SearchBuilder<T, SearchResultOptionalFields<TFields>>} 型が更新されたビルダー
|
|
1029
|
+
*/
|
|
961
1030
|
opt(option) {
|
|
962
1031
|
this.set({ opt: _SearchBuilder.array2string(option) });
|
|
963
1032
|
return this;
|
|
@@ -974,50 +1043,99 @@ var SearchBuilderR18 = class extends NovelSearchBuilderBase {
|
|
|
974
1043
|
execute() {
|
|
975
1044
|
return this.api.executeNovel18(this.params);
|
|
976
1045
|
}
|
|
1046
|
+
/**
|
|
1047
|
+
* 抽出するR18サイトを指定します (nocgenre)。
|
|
1048
|
+
* @param sites R18サイトコード、またはR18サイトコードの配列 (1: ノクターンノベルズ, 2: ムーンライトノベルズ(男性向け), 3: ムーンライトノベルズ(BL), 4: ミッドナイトノベルズ)
|
|
1049
|
+
* @return {this}
|
|
1050
|
+
*/
|
|
977
1051
|
r18Site(sites) {
|
|
978
1052
|
this.set({ nocgenre: NovelSearchBuilderBase.array2string(sites) });
|
|
979
1053
|
return this;
|
|
980
1054
|
}
|
|
981
1055
|
/**
|
|
982
|
-
*
|
|
983
|
-
* @
|
|
1056
|
+
* X-IDを指定して取得します (xid)。
|
|
1057
|
+
* @param ids X-ID、またはX-IDの配列
|
|
1058
|
+
* @return {this}
|
|
984
1059
|
*/
|
|
985
1060
|
xid(ids) {
|
|
986
1061
|
this.set({ xid: NovelSearchBuilderBase.array2string(ids) });
|
|
987
1062
|
return this;
|
|
988
1063
|
}
|
|
989
1064
|
/**
|
|
990
|
-
*
|
|
991
|
-
*
|
|
1065
|
+
* 出力する項目を個別に指定します (of)。
|
|
1066
|
+
* 未指定時は全項目出力されます。転送量軽減のため、このパラメータの使用が推奨されます。
|
|
1067
|
+
* @param fields 出力するR18フィールド名、またはR18フィールド名の配列
|
|
1068
|
+
* @return {SearchBuilderR18<SearchResultR18Fields<R18Fields>>} 型が更新されたビルダー
|
|
992
1069
|
*/
|
|
993
1070
|
fields(fields) {
|
|
994
1071
|
this.set({ of: NovelSearchBuilderBase.array2string(fields) });
|
|
995
1072
|
return this;
|
|
996
1073
|
}
|
|
1074
|
+
/**
|
|
1075
|
+
* 出力オプション項目を指定します (opt)。
|
|
1076
|
+
* @param option 出力するオプションフィールド名、またはオプションフィールド名の配列
|
|
1077
|
+
* @return {SearchBuilderR18<T, SearchResultOptionalFields<TFields>>} 型が更新されたビルダー
|
|
1078
|
+
*/
|
|
997
1079
|
opt(option) {
|
|
998
1080
|
this.set({ opt: NovelSearchBuilderBase.array2string(option) });
|
|
999
1081
|
return this;
|
|
1000
1082
|
}
|
|
1001
1083
|
};
|
|
1002
1084
|
|
|
1085
|
+
// src/util/date.ts
|
|
1086
|
+
function parseDate(dateStr) {
|
|
1087
|
+
const year = parseInt(dateStr.substring(0, 4), 10);
|
|
1088
|
+
const month = parseInt(dateStr.substring(4, 6), 10) - 1;
|
|
1089
|
+
const day = parseInt(dateStr.substring(6, 8), 10);
|
|
1090
|
+
return new Date(year, month, day, 0, 0, 0, 0);
|
|
1091
|
+
}
|
|
1092
|
+
function formatDate(date) {
|
|
1093
|
+
const year = date.getFullYear();
|
|
1094
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
1095
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
1096
|
+
return `${year}${month}${day}`;
|
|
1097
|
+
}
|
|
1098
|
+
function addDays(date, days) {
|
|
1099
|
+
const result = new Date(date);
|
|
1100
|
+
result.setDate(result.getDate() + days);
|
|
1101
|
+
return result;
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1003
1104
|
// src/ranking.ts
|
|
1004
|
-
var import_date_fns = require("date-fns");
|
|
1005
|
-
var dateFormat = "yyyyMMdd";
|
|
1006
1105
|
var RankingBuilder = class {
|
|
1007
1106
|
/**
|
|
1008
1107
|
* constructor
|
|
1108
|
+
* @param params - 初期クエリパラメータ
|
|
1109
|
+
* @param api - API実行クラスのインスタンス
|
|
1009
1110
|
* @private
|
|
1010
1111
|
*/
|
|
1011
1112
|
constructor(params = {}, api) {
|
|
1012
1113
|
this.params = params;
|
|
1013
1114
|
this.api = api;
|
|
1014
|
-
this.date$ = (
|
|
1115
|
+
this.date$ = addDays(/* @__PURE__ */ new Date(), -1);
|
|
1015
1116
|
this.type$ = RankingType.Daily;
|
|
1016
1117
|
}
|
|
1118
|
+
/**
|
|
1119
|
+
* ランキング集計対象の日付を指定します。
|
|
1120
|
+
*
|
|
1121
|
+
* - 日間: 任意の日付
|
|
1122
|
+
* - 週間: 火曜日の日付
|
|
1123
|
+
* - 月間・四半期: 1日の日付
|
|
1124
|
+
*
|
|
1125
|
+
* @param date 集計対象の日付
|
|
1126
|
+
* @returns {RankingBuilder} this
|
|
1127
|
+
* @see https://dev.syosetu.com/man/rankapi/
|
|
1128
|
+
*/
|
|
1017
1129
|
date(date) {
|
|
1018
1130
|
this.date$ = date;
|
|
1019
1131
|
return this;
|
|
1020
1132
|
}
|
|
1133
|
+
/**
|
|
1134
|
+
* ランキング種別を指定します。
|
|
1135
|
+
* @param type ランキング種別
|
|
1136
|
+
* @returns {RankingBuilder} this
|
|
1137
|
+
* @see https://dev.syosetu.com/man/rankapi/
|
|
1138
|
+
*/
|
|
1021
1139
|
type(type) {
|
|
1022
1140
|
this.type$ = type;
|
|
1023
1141
|
return this;
|
|
@@ -1034,23 +1152,36 @@ var RankingBuilder = class {
|
|
|
1034
1152
|
return this;
|
|
1035
1153
|
}
|
|
1036
1154
|
/**
|
|
1037
|
-
*
|
|
1155
|
+
* クエリパラメータを内部的にセットします。
|
|
1156
|
+
* @param obj - セットするパラメータオブジェクト
|
|
1157
|
+
* @returns {RankingBuilder} this
|
|
1038
1158
|
* @private
|
|
1039
|
-
* @return {RankingBuilder} this
|
|
1040
1159
|
*/
|
|
1041
1160
|
set(obj) {
|
|
1042
1161
|
Object.assign(this.params, obj);
|
|
1043
1162
|
return this;
|
|
1044
1163
|
}
|
|
1045
1164
|
/**
|
|
1046
|
-
*
|
|
1047
|
-
*
|
|
1165
|
+
* 設定されたパラメータに基づき、なろう小説ランキングAPIへのリクエストを実行します。
|
|
1166
|
+
*
|
|
1167
|
+
* 返される結果には、Nコード、ポイント、順位が含まれます。
|
|
1168
|
+
* @returns {Promise<NarouRankingResult[]>} ランキング結果の配列
|
|
1169
|
+
* @see https://dev.syosetu.com/man/rankapi/#output
|
|
1048
1170
|
*/
|
|
1049
1171
|
execute() {
|
|
1050
|
-
const date = (
|
|
1172
|
+
const date = formatDate(this.date$);
|
|
1051
1173
|
this.set({ rtype: `${date}-${this.type$}` });
|
|
1052
1174
|
return this.api.executeRanking(this.params);
|
|
1053
1175
|
}
|
|
1176
|
+
/**
|
|
1177
|
+
* ランキングAPIを実行し、取得したNコードを元になろう小説APIで詳細情報を取得して結合します。
|
|
1178
|
+
*
|
|
1179
|
+
* @template TFields - 取得する小説情報のフィールド型
|
|
1180
|
+
* @template TOpt - オプショナルな取得フィールドの型
|
|
1181
|
+
* @param fields - 取得するフィールドの配列 (省略時はデフォルトフィールド)
|
|
1182
|
+
* @param opt - オプショナルな取得フィールド (`weekly` など)
|
|
1183
|
+
* @returns {Promise<RankingResult<SearchResultFields<TFields>>[]>} 詳細情報を含むランキング結果の配列
|
|
1184
|
+
*/
|
|
1054
1185
|
async executeWithFields(fields = [], opt) {
|
|
1055
1186
|
const ranking2 = await this.execute();
|
|
1056
1187
|
const fields$ = Array.isArray(fields) ? fields.length == 0 ? [] : [...fields, Fields.ncode] : [fields, Fields.ncode];
|
|
@@ -1072,12 +1203,10 @@ var RankingBuilder = class {
|
|
|
1072
1203
|
};
|
|
1073
1204
|
|
|
1074
1205
|
// src/ranking-history.ts
|
|
1075
|
-
var import_date_fns2 = require("date-fns");
|
|
1076
|
-
var dateFormat2 = "yyyyMMdd";
|
|
1077
1206
|
function formatRankingHistory(rankin) {
|
|
1078
1207
|
const { rtype, pt, rank } = rankin;
|
|
1079
1208
|
const [_date, _type] = rtype.split("-");
|
|
1080
|
-
const date = (
|
|
1209
|
+
const date = parseDate(_date);
|
|
1081
1210
|
const type = _type;
|
|
1082
1211
|
return { type, date, pt, rank };
|
|
1083
1212
|
}
|