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.cjs
CHANGED
|
@@ -169,7 +169,10 @@ var NarouNovel = class {
|
|
|
169
169
|
* @see https://dev.syosetu.com/man/userapi/
|
|
170
170
|
*/
|
|
171
171
|
async executeUserSearch(params) {
|
|
172
|
-
return
|
|
172
|
+
return new NarouSearchResults(
|
|
173
|
+
await this.execute(params, "https://api.syosetu.com/userapi/api/"),
|
|
174
|
+
params
|
|
175
|
+
);
|
|
173
176
|
}
|
|
174
177
|
};
|
|
175
178
|
|
|
@@ -647,14 +650,30 @@ var SearchBuilderBase = class {
|
|
|
647
650
|
/**
|
|
648
651
|
* constructor
|
|
649
652
|
* @private
|
|
653
|
+
* @param params クエリパラメータ
|
|
654
|
+
* @param api NarouNovel インスタンス
|
|
650
655
|
*/
|
|
651
656
|
constructor(params = {}, api) {
|
|
652
657
|
this.params = params;
|
|
653
658
|
this.api = api;
|
|
654
659
|
}
|
|
660
|
+
/**
|
|
661
|
+
* 配列から重複を除去する
|
|
662
|
+
* @protected
|
|
663
|
+
* @static
|
|
664
|
+
* @param array 配列
|
|
665
|
+
* @returns 重複を除去した配列
|
|
666
|
+
*/
|
|
655
667
|
static distinct(array) {
|
|
656
668
|
return Array.from(new Set(array));
|
|
657
669
|
}
|
|
670
|
+
/**
|
|
671
|
+
* 配列をハイフン区切りの文字列に変換する
|
|
672
|
+
* @protected
|
|
673
|
+
* @static
|
|
674
|
+
* @param n 文字列または数値の配列、あるいは単一の文字列または数値
|
|
675
|
+
* @returns ハイフン区切りの文字列
|
|
676
|
+
*/
|
|
658
677
|
static array2string(n) {
|
|
659
678
|
if (Array.isArray(n)) {
|
|
660
679
|
return this.distinct(n).join("-");
|
|
@@ -663,44 +682,48 @@ var SearchBuilderBase = class {
|
|
|
663
682
|
}
|
|
664
683
|
}
|
|
665
684
|
/**
|
|
666
|
-
*
|
|
667
|
-
* @
|
|
685
|
+
* 取得件数を指定する (lim)
|
|
686
|
+
* @param num 取得件数 (1-500)
|
|
687
|
+
* @return {this}
|
|
668
688
|
*/
|
|
669
689
|
limit(num) {
|
|
670
690
|
this.set({ lim: num });
|
|
671
691
|
return this;
|
|
672
692
|
}
|
|
673
693
|
/**
|
|
674
|
-
*
|
|
675
|
-
* @
|
|
694
|
+
* 取得開始位置を指定する (st)
|
|
695
|
+
* @param num 取得開始位置 (1-)
|
|
696
|
+
* @return {this}
|
|
676
697
|
*/
|
|
677
698
|
start(num) {
|
|
678
699
|
this.set({ st: num });
|
|
679
700
|
return this;
|
|
680
701
|
}
|
|
681
702
|
/**
|
|
682
|
-
*
|
|
683
|
-
* @
|
|
703
|
+
* ページ番号と1ページあたりの件数で取得範囲を指定する
|
|
704
|
+
* @param no ページ番号 (0-)
|
|
705
|
+
* @param count 1ページあたりの件数 (デフォルト: 20)
|
|
706
|
+
* @return {this}
|
|
684
707
|
*/
|
|
685
708
|
page(no, count2 = 20) {
|
|
686
709
|
return this.limit(count2).start(no * count2);
|
|
687
710
|
}
|
|
688
711
|
/**
|
|
689
|
-
*
|
|
690
|
-
*
|
|
712
|
+
* 出力順序を指定する (order)
|
|
713
|
+
* 指定しない場合は新着順となります。
|
|
691
714
|
* @param {TOrder} order 出力順序
|
|
692
|
-
* @return {
|
|
715
|
+
* @return {this}
|
|
693
716
|
*/
|
|
694
717
|
order(order) {
|
|
695
718
|
this.set({ order });
|
|
696
719
|
return this;
|
|
697
720
|
}
|
|
698
721
|
/**
|
|
699
|
-
* gzip
|
|
722
|
+
* gzip圧縮レベルを指定する (gzip)
|
|
700
723
|
*
|
|
701
724
|
* 転送量上限を減らすためにも推奨
|
|
702
725
|
* @param {GzipLevel} level gzip圧縮レベル(1~5)
|
|
703
|
-
* @return {
|
|
726
|
+
* @return {this}
|
|
704
727
|
*/
|
|
705
728
|
gzip(level) {
|
|
706
729
|
this.set({ gzip: level });
|
|
@@ -708,8 +731,9 @@ var SearchBuilderBase = class {
|
|
|
708
731
|
}
|
|
709
732
|
/**
|
|
710
733
|
* クエリパラメータをセットする
|
|
711
|
-
* @
|
|
712
|
-
* @
|
|
734
|
+
* @protected
|
|
735
|
+
* @param obj セットするパラメータ
|
|
736
|
+
* @return {this}
|
|
713
737
|
*/
|
|
714
738
|
set(obj) {
|
|
715
739
|
this.params = { ...this.params, ...obj };
|
|
@@ -717,6 +741,9 @@ var SearchBuilderBase = class {
|
|
|
717
741
|
}
|
|
718
742
|
/**
|
|
719
743
|
* クエリパラメータを削除する
|
|
744
|
+
* @protected
|
|
745
|
+
* @param key 削除するパラメータのキー
|
|
746
|
+
* @returns {this}
|
|
720
747
|
*/
|
|
721
748
|
unset(key) {
|
|
722
749
|
delete this.params[key];
|
|
@@ -725,56 +752,65 @@ var SearchBuilderBase = class {
|
|
|
725
752
|
};
|
|
726
753
|
var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilderBase {
|
|
727
754
|
/**
|
|
728
|
-
*
|
|
729
|
-
*
|
|
755
|
+
* 検索語を指定します (word)。
|
|
756
|
+
* 半角または全角スペースで区切るとAND抽出になります。部分一致でHITします。
|
|
757
|
+
* @param word 検索語
|
|
758
|
+
* @return {this}
|
|
730
759
|
*/
|
|
731
760
|
word(word) {
|
|
732
761
|
this.set({ word });
|
|
733
762
|
return this;
|
|
734
763
|
}
|
|
735
764
|
/**
|
|
736
|
-
*
|
|
737
|
-
*
|
|
765
|
+
* 除外したい単語を指定します (notword)。
|
|
766
|
+
* スペースで区切ることにより除外する単語を増やせます。部分一致で除外されます。
|
|
767
|
+
* @param word 除外語
|
|
768
|
+
* @return {this}
|
|
738
769
|
*/
|
|
739
770
|
notWord(word) {
|
|
740
771
|
this.set({ notword: word });
|
|
741
772
|
return this;
|
|
742
773
|
}
|
|
743
774
|
/**
|
|
744
|
-
*
|
|
745
|
-
* @
|
|
775
|
+
* 検索対象を作品名に限定するかどうかを指定します (title)。
|
|
776
|
+
* @param bool trueの場合、作品名を検索対象とする (デフォルト: true)
|
|
777
|
+
* @return {this}
|
|
746
778
|
*/
|
|
747
779
|
byTitle(bool = true) {
|
|
748
780
|
this.set({ title: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
749
781
|
return this;
|
|
750
782
|
}
|
|
751
783
|
/**
|
|
752
|
-
*
|
|
753
|
-
* @
|
|
784
|
+
* 検索対象をあらすじに限定するかどうかを指定します (ex)。
|
|
785
|
+
* @param bool trueの場合、あらすじを検索対象とする (デフォルト: true)
|
|
786
|
+
* @return {this}
|
|
754
787
|
*/
|
|
755
788
|
byOutline(bool = true) {
|
|
756
789
|
this.set({ ex: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
757
790
|
return this;
|
|
758
791
|
}
|
|
759
792
|
/**
|
|
760
|
-
*
|
|
761
|
-
* @
|
|
793
|
+
* 検索対象をキーワードに限定するかどうかを指定します (keyword)。
|
|
794
|
+
* @param bool trueの場合、キーワードを検索対象とする (デフォルト: true)
|
|
795
|
+
* @return {this}
|
|
762
796
|
*/
|
|
763
797
|
byKeyword(bool = true) {
|
|
764
798
|
this.set({ keyword: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
765
799
|
return this;
|
|
766
800
|
}
|
|
767
801
|
/**
|
|
768
|
-
*
|
|
769
|
-
* @
|
|
802
|
+
* 検索対象を作者名に限定するかどうかを指定します (wname)。
|
|
803
|
+
* @param bool trueの場合、作者名を検索対象とする (デフォルト: true)
|
|
804
|
+
* @return {this}
|
|
770
805
|
*/
|
|
771
806
|
byAuthor(bool = true) {
|
|
772
807
|
this.set({ wname: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
773
808
|
return this;
|
|
774
809
|
}
|
|
775
810
|
/**
|
|
776
|
-
*
|
|
777
|
-
* @
|
|
811
|
+
* ボーイズラブ作品を抽出または除外します (isbl/notbl)。
|
|
812
|
+
* @param bool trueの場合、ボーイズラブ作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
813
|
+
* @return {this}
|
|
778
814
|
*/
|
|
779
815
|
isBL(bool = true) {
|
|
780
816
|
if (bool) {
|
|
@@ -785,8 +821,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
785
821
|
return this;
|
|
786
822
|
}
|
|
787
823
|
/**
|
|
788
|
-
*
|
|
789
|
-
* @
|
|
824
|
+
* ガールズラブ作品を抽出または除外します (isgl/notgl)。
|
|
825
|
+
* @param bool trueの場合、ガールズラブ作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
826
|
+
* @return {this}
|
|
790
827
|
*/
|
|
791
828
|
isGL(bool = true) {
|
|
792
829
|
if (bool) {
|
|
@@ -797,8 +834,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
797
834
|
return this;
|
|
798
835
|
}
|
|
799
836
|
/**
|
|
800
|
-
*
|
|
801
|
-
* @
|
|
837
|
+
* 残酷な描写あり作品を抽出または除外します (iszankoku/notzankoku)。
|
|
838
|
+
* @param bool trueの場合、残酷な描写あり作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
839
|
+
* @return {this}
|
|
802
840
|
*/
|
|
803
841
|
isZankoku(bool = true) {
|
|
804
842
|
if (bool) {
|
|
@@ -809,8 +847,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
809
847
|
return this;
|
|
810
848
|
}
|
|
811
849
|
/**
|
|
812
|
-
*
|
|
813
|
-
* @
|
|
850
|
+
* 異世界転生作品を抽出または除外します (istensei/nottensei)。
|
|
851
|
+
* @param bool trueの場合、異世界転生作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
852
|
+
* @return {this}
|
|
814
853
|
*/
|
|
815
854
|
isTensei(bool = true) {
|
|
816
855
|
if (bool) {
|
|
@@ -821,8 +860,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
821
860
|
return this;
|
|
822
861
|
}
|
|
823
862
|
/**
|
|
824
|
-
*
|
|
825
|
-
* @
|
|
863
|
+
* 異世界転移作品を抽出または除外します (istenni/nottenni)。
|
|
864
|
+
* @param bool trueの場合、異世界転移作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
865
|
+
* @return {this}
|
|
826
866
|
*/
|
|
827
867
|
isTenni(bool = true) {
|
|
828
868
|
if (bool) {
|
|
@@ -833,16 +873,18 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
833
873
|
return this;
|
|
834
874
|
}
|
|
835
875
|
/**
|
|
836
|
-
*
|
|
837
|
-
* @return {
|
|
876
|
+
* 異世界転生または異世界転移作品を抽出します (istt)。
|
|
877
|
+
* @return {this}
|
|
838
878
|
*/
|
|
839
879
|
isTT() {
|
|
840
880
|
this.set({ istt: BooleanNumber.True });
|
|
841
881
|
return this;
|
|
842
882
|
}
|
|
843
883
|
/**
|
|
844
|
-
*
|
|
845
|
-
*
|
|
884
|
+
* 抽出する作品の文字数を指定します (length)。
|
|
885
|
+
* 範囲指定する場合は、最小文字数と最大文字数をハイフン(-)記号で区切ってください。
|
|
886
|
+
* @param length 文字数、または[最小文字数, 最大文字数]
|
|
887
|
+
* @return {this}
|
|
846
888
|
*/
|
|
847
889
|
length(length) {
|
|
848
890
|
this.set({ length: _NovelSearchBuilderBase.array2string(length) });
|
|
@@ -859,59 +901,66 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
859
901
|
return this;
|
|
860
902
|
}
|
|
861
903
|
/**
|
|
862
|
-
*
|
|
863
|
-
* @
|
|
904
|
+
* 抽出する作品の挿絵数を指定します (sasie)。
|
|
905
|
+
* @param num 挿絵数、または[最小挿絵数, 最大挿絵数]
|
|
906
|
+
* @return {this}
|
|
864
907
|
*/
|
|
865
908
|
sasie(num) {
|
|
866
909
|
this.set({ sasie: _NovelSearchBuilderBase.array2string(num) });
|
|
867
910
|
return this;
|
|
868
911
|
}
|
|
869
912
|
/**
|
|
870
|
-
*
|
|
871
|
-
* @
|
|
913
|
+
* 抽出する作品の予想読了時間を分単位で指定します (time)。
|
|
914
|
+
* @param num 読了時間(分)、または[最小読了時間, 最大読了時間]
|
|
915
|
+
* @return {this}
|
|
872
916
|
*/
|
|
873
917
|
time(num) {
|
|
874
918
|
this.set({ time: _NovelSearchBuilderBase.array2string(num) });
|
|
875
919
|
return this;
|
|
876
920
|
}
|
|
877
921
|
/**
|
|
878
|
-
*
|
|
879
|
-
* @
|
|
922
|
+
* Nコードを指定して取得します (ncode)。
|
|
923
|
+
* @param ncodes Nコード、またはNコードの配列
|
|
924
|
+
* @return {this}
|
|
880
925
|
*/
|
|
881
926
|
ncode(ncodes) {
|
|
882
927
|
this.set({ ncode: _NovelSearchBuilderBase.array2string(ncodes) });
|
|
883
928
|
return this;
|
|
884
929
|
}
|
|
885
930
|
/**
|
|
886
|
-
*
|
|
887
|
-
* @
|
|
931
|
+
* 抽出する小説タイプを指定します (type)。
|
|
932
|
+
* @param type 小説タイプ (t: 短編, r: 連載中, er: 完結済連載小説, ter: 短編と完結済連載小説, re: 連載中と完結済連載小説)
|
|
933
|
+
* @return {this}
|
|
888
934
|
*/
|
|
889
935
|
type(type) {
|
|
890
936
|
this.set({ type });
|
|
891
937
|
return this;
|
|
892
938
|
}
|
|
893
939
|
/**
|
|
894
|
-
*
|
|
895
|
-
*
|
|
940
|
+
* 抽出する作品の文体を指定します (buntai)。
|
|
941
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
942
|
+
* @param buntai 文体コード、または文体コードの配列
|
|
943
|
+
* @return {this}
|
|
896
944
|
*/
|
|
897
945
|
buntai(buntai) {
|
|
898
946
|
this.set({ buntai: _NovelSearchBuilderBase.array2string(buntai) });
|
|
899
947
|
return this;
|
|
900
948
|
}
|
|
901
949
|
/**
|
|
902
|
-
*
|
|
903
|
-
* @
|
|
950
|
+
* 連載停止中作品に関する指定をします (stop)。
|
|
951
|
+
* @param bool trueの場合、長期連載停止中のみ取得する (デフォルト: true)。falseの場合、長期連載停止中を除外する。
|
|
952
|
+
* @return {this}
|
|
904
953
|
*/
|
|
905
954
|
isStop(bool = true) {
|
|
906
955
|
this.set({ stop: bool ? StopParam.Stopping : StopParam.NoStopping });
|
|
907
956
|
return this;
|
|
908
957
|
}
|
|
909
958
|
/**
|
|
910
|
-
*
|
|
911
|
-
* @return {
|
|
959
|
+
* ピックアップ作品のみを取得します (ispickup)。
|
|
960
|
+
* @return {this}
|
|
912
961
|
*/
|
|
913
|
-
isPickup(
|
|
914
|
-
this.set({ ispickup:
|
|
962
|
+
isPickup() {
|
|
963
|
+
this.set({ ispickup: BooleanNumber.True });
|
|
915
964
|
return this;
|
|
916
965
|
}
|
|
917
966
|
lastUpdate(x, y) {
|
|
@@ -952,48 +1001,59 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
952
1001
|
};
|
|
953
1002
|
var SearchBuilder = class _SearchBuilder extends NovelSearchBuilderBase {
|
|
954
1003
|
/**
|
|
955
|
-
*
|
|
956
|
-
*
|
|
1004
|
+
* 大ジャンルを指定して取得します (biggenre)。
|
|
1005
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
1006
|
+
* @param genre 大ジャンルコード、または大ジャンルコードの配列
|
|
1007
|
+
* @return {this}
|
|
957
1008
|
*/
|
|
958
1009
|
bigGenre(genre) {
|
|
959
1010
|
this.set({ biggenre: _SearchBuilder.array2string(genre) });
|
|
960
1011
|
return this;
|
|
961
1012
|
}
|
|
962
1013
|
/**
|
|
963
|
-
*
|
|
964
|
-
*
|
|
1014
|
+
* 除外したい大ジャンルを指定します (notbiggenre)。
|
|
1015
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
1016
|
+
* @param genre 除外する大ジャンルコード、または大ジャンルコードの配列
|
|
1017
|
+
* @return {this}
|
|
965
1018
|
*/
|
|
966
1019
|
notBigGenre(genre) {
|
|
967
1020
|
this.set({ notbiggenre: _SearchBuilder.array2string(genre) });
|
|
968
1021
|
return this;
|
|
969
1022
|
}
|
|
970
1023
|
/**
|
|
971
|
-
*
|
|
972
|
-
*
|
|
1024
|
+
* ジャンルを指定して取得します (genre)。
|
|
1025
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
1026
|
+
* @param genre ジャンルコード、またはジャンルコードの配列
|
|
1027
|
+
* @return {this}
|
|
973
1028
|
*/
|
|
974
1029
|
genre(genre) {
|
|
975
1030
|
this.set({ genre: _SearchBuilder.array2string(genre) });
|
|
976
1031
|
return this;
|
|
977
1032
|
}
|
|
978
1033
|
/**
|
|
979
|
-
*
|
|
980
|
-
*
|
|
1034
|
+
* 除外したいジャンルを指定します (notgenre)。
|
|
1035
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
1036
|
+
* @param genre 除外するジャンルコード、またはジャンルコードの配列
|
|
1037
|
+
* @return {this}
|
|
981
1038
|
*/
|
|
982
1039
|
notGenre(genre) {
|
|
983
1040
|
this.set({ notgenre: _SearchBuilder.array2string(genre) });
|
|
984
1041
|
return this;
|
|
985
1042
|
}
|
|
986
1043
|
/**
|
|
987
|
-
*
|
|
988
|
-
*
|
|
1044
|
+
* ユーザIDを指定して取得します (userid)。
|
|
1045
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
1046
|
+
* @param ids ユーザID、またはユーザIDの配列
|
|
1047
|
+
* @return {this}
|
|
989
1048
|
*/
|
|
990
1049
|
userId(ids) {
|
|
991
1050
|
this.set({ userid: _SearchBuilder.array2string(ids) });
|
|
992
1051
|
return this;
|
|
993
1052
|
}
|
|
994
1053
|
/**
|
|
995
|
-
*
|
|
996
|
-
* @
|
|
1054
|
+
* R15作品を抽出または除外します (isr15/notr15)。
|
|
1055
|
+
* @param bool trueの場合、R15作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
1056
|
+
* @return {this}
|
|
997
1057
|
*/
|
|
998
1058
|
isR15(bool = true) {
|
|
999
1059
|
if (bool) {
|
|
@@ -1004,37 +1064,82 @@ var SearchBuilder = class _SearchBuilder extends NovelSearchBuilderBase {
|
|
|
1004
1064
|
return this;
|
|
1005
1065
|
}
|
|
1006
1066
|
/**
|
|
1007
|
-
*
|
|
1008
|
-
*
|
|
1067
|
+
* 出力する項目を個別に指定します (of)。
|
|
1068
|
+
* 未指定時は全項目出力されます。転送量軽減のため、このパラメータの使用が推奨されます。
|
|
1069
|
+
* 複数項目を出力する場合はハイフン(-)記号で区切ってください。
|
|
1070
|
+
* @param fields 出力するフィールド名、またはフィールド名の配列
|
|
1071
|
+
* @return {SearchBuilder<SearchResultFields<TFields>, TOpt>} 型が更新されたビルダー
|
|
1009
1072
|
*/
|
|
1010
1073
|
fields(fields) {
|
|
1011
1074
|
this.set({ of: _SearchBuilder.array2string(fields) });
|
|
1012
1075
|
return this;
|
|
1013
1076
|
}
|
|
1077
|
+
/**
|
|
1078
|
+
* 出力オプション項目を指定します (opt)。
|
|
1079
|
+
* 複数項目を出力する場合はハイフン(-)記号で区切ってください。
|
|
1080
|
+
* @param option 出力するオプションフィールド名、またはオプションフィールド名の配列
|
|
1081
|
+
* @return {SearchBuilder<T, SearchResultOptionalFields<TFields>>} 型が更新されたビルダー
|
|
1082
|
+
*/
|
|
1014
1083
|
opt(option) {
|
|
1015
1084
|
this.set({ opt: _SearchBuilder.array2string(option) });
|
|
1016
1085
|
return this;
|
|
1017
1086
|
}
|
|
1018
1087
|
};
|
|
1019
1088
|
|
|
1089
|
+
// src/util/date.ts
|
|
1090
|
+
function parseDate(dateStr) {
|
|
1091
|
+
const year = parseInt(dateStr.substring(0, 4), 10);
|
|
1092
|
+
const month = parseInt(dateStr.substring(4, 6), 10) - 1;
|
|
1093
|
+
const day = parseInt(dateStr.substring(6, 8), 10);
|
|
1094
|
+
return new Date(year, month, day, 0, 0, 0, 0);
|
|
1095
|
+
}
|
|
1096
|
+
function formatDate(date) {
|
|
1097
|
+
const year = date.getFullYear();
|
|
1098
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
1099
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
1100
|
+
return `${year}${month}${day}`;
|
|
1101
|
+
}
|
|
1102
|
+
function addDays(date, days) {
|
|
1103
|
+
const result = new Date(date);
|
|
1104
|
+
result.setDate(result.getDate() + days);
|
|
1105
|
+
return result;
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1020
1108
|
// src/ranking.ts
|
|
1021
|
-
var import_date_fns = require("date-fns");
|
|
1022
|
-
var dateFormat = "yyyyMMdd";
|
|
1023
1109
|
var RankingBuilder = class {
|
|
1024
1110
|
/**
|
|
1025
1111
|
* constructor
|
|
1112
|
+
* @param params - 初期クエリパラメータ
|
|
1113
|
+
* @param api - API実行クラスのインスタンス
|
|
1026
1114
|
* @private
|
|
1027
1115
|
*/
|
|
1028
1116
|
constructor(params = {}, api) {
|
|
1029
1117
|
this.params = params;
|
|
1030
1118
|
this.api = api;
|
|
1031
|
-
this.date$ = (
|
|
1119
|
+
this.date$ = addDays(/* @__PURE__ */ new Date(), -1);
|
|
1032
1120
|
this.type$ = RankingType.Daily;
|
|
1033
1121
|
}
|
|
1122
|
+
/**
|
|
1123
|
+
* ランキング集計対象の日付を指定します。
|
|
1124
|
+
*
|
|
1125
|
+
* - 日間: 任意の日付
|
|
1126
|
+
* - 週間: 火曜日の日付
|
|
1127
|
+
* - 月間・四半期: 1日の日付
|
|
1128
|
+
*
|
|
1129
|
+
* @param date 集計対象の日付
|
|
1130
|
+
* @returns {RankingBuilder} this
|
|
1131
|
+
* @see https://dev.syosetu.com/man/rankapi/
|
|
1132
|
+
*/
|
|
1034
1133
|
date(date) {
|
|
1035
1134
|
this.date$ = date;
|
|
1036
1135
|
return this;
|
|
1037
1136
|
}
|
|
1137
|
+
/**
|
|
1138
|
+
* ランキング種別を指定します。
|
|
1139
|
+
* @param type ランキング種別
|
|
1140
|
+
* @returns {RankingBuilder} this
|
|
1141
|
+
* @see https://dev.syosetu.com/man/rankapi/
|
|
1142
|
+
*/
|
|
1038
1143
|
type(type) {
|
|
1039
1144
|
this.type$ = type;
|
|
1040
1145
|
return this;
|
|
@@ -1051,23 +1156,36 @@ var RankingBuilder = class {
|
|
|
1051
1156
|
return this;
|
|
1052
1157
|
}
|
|
1053
1158
|
/**
|
|
1054
|
-
*
|
|
1159
|
+
* クエリパラメータを内部的にセットします。
|
|
1160
|
+
* @param obj - セットするパラメータオブジェクト
|
|
1161
|
+
* @returns {RankingBuilder} this
|
|
1055
1162
|
* @private
|
|
1056
|
-
* @return {RankingBuilder} this
|
|
1057
1163
|
*/
|
|
1058
1164
|
set(obj) {
|
|
1059
1165
|
Object.assign(this.params, obj);
|
|
1060
1166
|
return this;
|
|
1061
1167
|
}
|
|
1062
1168
|
/**
|
|
1063
|
-
*
|
|
1064
|
-
*
|
|
1169
|
+
* 設定されたパラメータに基づき、なろう小説ランキングAPIへのリクエストを実行します。
|
|
1170
|
+
*
|
|
1171
|
+
* 返される結果には、Nコード、ポイント、順位が含まれます。
|
|
1172
|
+
* @returns {Promise<NarouRankingResult[]>} ランキング結果の配列
|
|
1173
|
+
* @see https://dev.syosetu.com/man/rankapi/#output
|
|
1065
1174
|
*/
|
|
1066
1175
|
execute() {
|
|
1067
|
-
const date = (
|
|
1176
|
+
const date = formatDate(this.date$);
|
|
1068
1177
|
this.set({ rtype: `${date}-${this.type$}` });
|
|
1069
1178
|
return this.api.executeRanking(this.params);
|
|
1070
1179
|
}
|
|
1180
|
+
/**
|
|
1181
|
+
* ランキングAPIを実行し、取得したNコードを元になろう小説APIで詳細情報を取得して結合します。
|
|
1182
|
+
*
|
|
1183
|
+
* @template TFields - 取得する小説情報のフィールド型
|
|
1184
|
+
* @template TOpt - オプショナルな取得フィールドの型
|
|
1185
|
+
* @param fields - 取得するフィールドの配列 (省略時はデフォルトフィールド)
|
|
1186
|
+
* @param opt - オプショナルな取得フィールド (`weekly` など)
|
|
1187
|
+
* @returns {Promise<RankingResult<SearchResultFields<TFields>>[]>} 詳細情報を含むランキング結果の配列
|
|
1188
|
+
*/
|
|
1071
1189
|
async executeWithFields(fields = [], opt) {
|
|
1072
1190
|
const ranking2 = await this.execute();
|
|
1073
1191
|
const fields$ = Array.isArray(fields) ? fields.length == 0 ? [] : [...fields, Fields.ncode] : [fields, Fields.ncode];
|
|
@@ -1089,12 +1207,10 @@ var RankingBuilder = class {
|
|
|
1089
1207
|
};
|
|
1090
1208
|
|
|
1091
1209
|
// src/ranking-history.ts
|
|
1092
|
-
var import_date_fns2 = require("date-fns");
|
|
1093
|
-
var dateFormat2 = "yyyyMMdd";
|
|
1094
1210
|
function formatRankingHistory(rankin) {
|
|
1095
1211
|
const { rtype, pt, rank } = rankin;
|
|
1096
1212
|
const [_date, _type] = rtype.split("-");
|
|
1097
|
-
const date = (
|
|
1213
|
+
const date = parseDate(_date);
|
|
1098
1214
|
const type = _type;
|
|
1099
1215
|
return { type, date, pt, rank };
|
|
1100
1216
|
}
|
|
@@ -1109,26 +1225,39 @@ var SearchBuilderR18 = class extends NovelSearchBuilderBase {
|
|
|
1109
1225
|
execute() {
|
|
1110
1226
|
return this.api.executeNovel18(this.params);
|
|
1111
1227
|
}
|
|
1228
|
+
/**
|
|
1229
|
+
* 抽出するR18サイトを指定します (nocgenre)。
|
|
1230
|
+
* @param sites R18サイトコード、またはR18サイトコードの配列 (1: ノクターンノベルズ, 2: ムーンライトノベルズ(男性向け), 3: ムーンライトノベルズ(BL), 4: ミッドナイトノベルズ)
|
|
1231
|
+
* @return {this}
|
|
1232
|
+
*/
|
|
1112
1233
|
r18Site(sites) {
|
|
1113
1234
|
this.set({ nocgenre: NovelSearchBuilderBase.array2string(sites) });
|
|
1114
1235
|
return this;
|
|
1115
1236
|
}
|
|
1116
1237
|
/**
|
|
1117
|
-
*
|
|
1118
|
-
* @
|
|
1238
|
+
* X-IDを指定して取得します (xid)。
|
|
1239
|
+
* @param ids X-ID、またはX-IDの配列
|
|
1240
|
+
* @return {this}
|
|
1119
1241
|
*/
|
|
1120
1242
|
xid(ids) {
|
|
1121
1243
|
this.set({ xid: NovelSearchBuilderBase.array2string(ids) });
|
|
1122
1244
|
return this;
|
|
1123
1245
|
}
|
|
1124
1246
|
/**
|
|
1125
|
-
*
|
|
1126
|
-
*
|
|
1247
|
+
* 出力する項目を個別に指定します (of)。
|
|
1248
|
+
* 未指定時は全項目出力されます。転送量軽減のため、このパラメータの使用が推奨されます。
|
|
1249
|
+
* @param fields 出力するR18フィールド名、またはR18フィールド名の配列
|
|
1250
|
+
* @return {SearchBuilderR18<SearchResultR18Fields<R18Fields>>} 型が更新されたビルダー
|
|
1127
1251
|
*/
|
|
1128
1252
|
fields(fields) {
|
|
1129
1253
|
this.set({ of: NovelSearchBuilderBase.array2string(fields) });
|
|
1130
1254
|
return this;
|
|
1131
1255
|
}
|
|
1256
|
+
/**
|
|
1257
|
+
* 出力オプション項目を指定します (opt)。
|
|
1258
|
+
* @param option 出力するオプションフィールド名、またはオプションフィールド名の配列
|
|
1259
|
+
* @return {SearchBuilderR18<T, SearchResultOptionalFields<TFields>>} 型が更新されたビルダー
|
|
1260
|
+
*/
|
|
1132
1261
|
opt(option) {
|
|
1133
1262
|
this.set({ opt: NovelSearchBuilderBase.array2string(option) });
|
|
1134
1263
|
return this;
|