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.common.cjs
CHANGED
|
@@ -142,7 +142,10 @@ var NarouNovel = class {
|
|
|
142
142
|
* @see https://dev.syosetu.com/man/userapi/
|
|
143
143
|
*/
|
|
144
144
|
async executeUserSearch(params) {
|
|
145
|
-
return
|
|
145
|
+
return new NarouSearchResults(
|
|
146
|
+
await this.execute(params, "https://api.syosetu.com/userapi/api/"),
|
|
147
|
+
params
|
|
148
|
+
);
|
|
146
149
|
}
|
|
147
150
|
};
|
|
148
151
|
|
|
@@ -537,14 +540,30 @@ var SearchBuilderBase = class {
|
|
|
537
540
|
/**
|
|
538
541
|
* constructor
|
|
539
542
|
* @private
|
|
543
|
+
* @param params クエリパラメータ
|
|
544
|
+
* @param api NarouNovel インスタンス
|
|
540
545
|
*/
|
|
541
546
|
constructor(params = {}, api) {
|
|
542
547
|
this.params = params;
|
|
543
548
|
this.api = api;
|
|
544
549
|
}
|
|
550
|
+
/**
|
|
551
|
+
* 配列から重複を除去する
|
|
552
|
+
* @protected
|
|
553
|
+
* @static
|
|
554
|
+
* @param array 配列
|
|
555
|
+
* @returns 重複を除去した配列
|
|
556
|
+
*/
|
|
545
557
|
static distinct(array) {
|
|
546
558
|
return Array.from(new Set(array));
|
|
547
559
|
}
|
|
560
|
+
/**
|
|
561
|
+
* 配列をハイフン区切りの文字列に変換する
|
|
562
|
+
* @protected
|
|
563
|
+
* @static
|
|
564
|
+
* @param n 文字列または数値の配列、あるいは単一の文字列または数値
|
|
565
|
+
* @returns ハイフン区切りの文字列
|
|
566
|
+
*/
|
|
548
567
|
static array2string(n) {
|
|
549
568
|
if (Array.isArray(n)) {
|
|
550
569
|
return this.distinct(n).join("-");
|
|
@@ -553,44 +572,48 @@ var SearchBuilderBase = class {
|
|
|
553
572
|
}
|
|
554
573
|
}
|
|
555
574
|
/**
|
|
556
|
-
*
|
|
557
|
-
* @
|
|
575
|
+
* 取得件数を指定する (lim)
|
|
576
|
+
* @param num 取得件数 (1-500)
|
|
577
|
+
* @return {this}
|
|
558
578
|
*/
|
|
559
579
|
limit(num) {
|
|
560
580
|
this.set({ lim: num });
|
|
561
581
|
return this;
|
|
562
582
|
}
|
|
563
583
|
/**
|
|
564
|
-
*
|
|
565
|
-
* @
|
|
584
|
+
* 取得開始位置を指定する (st)
|
|
585
|
+
* @param num 取得開始位置 (1-)
|
|
586
|
+
* @return {this}
|
|
566
587
|
*/
|
|
567
588
|
start(num) {
|
|
568
589
|
this.set({ st: num });
|
|
569
590
|
return this;
|
|
570
591
|
}
|
|
571
592
|
/**
|
|
572
|
-
*
|
|
573
|
-
* @
|
|
593
|
+
* ページ番号と1ページあたりの件数で取得範囲を指定する
|
|
594
|
+
* @param no ページ番号 (0-)
|
|
595
|
+
* @param count 1ページあたりの件数 (デフォルト: 20)
|
|
596
|
+
* @return {this}
|
|
574
597
|
*/
|
|
575
598
|
page(no, count = 20) {
|
|
576
599
|
return this.limit(count).start(no * count);
|
|
577
600
|
}
|
|
578
601
|
/**
|
|
579
|
-
*
|
|
580
|
-
*
|
|
602
|
+
* 出力順序を指定する (order)
|
|
603
|
+
* 指定しない場合は新着順となります。
|
|
581
604
|
* @param {TOrder} order 出力順序
|
|
582
|
-
* @return {
|
|
605
|
+
* @return {this}
|
|
583
606
|
*/
|
|
584
607
|
order(order) {
|
|
585
608
|
this.set({ order });
|
|
586
609
|
return this;
|
|
587
610
|
}
|
|
588
611
|
/**
|
|
589
|
-
* gzip
|
|
612
|
+
* gzip圧縮レベルを指定する (gzip)
|
|
590
613
|
*
|
|
591
614
|
* 転送量上限を減らすためにも推奨
|
|
592
615
|
* @param {GzipLevel} level gzip圧縮レベル(1~5)
|
|
593
|
-
* @return {
|
|
616
|
+
* @return {this}
|
|
594
617
|
*/
|
|
595
618
|
gzip(level) {
|
|
596
619
|
this.set({ gzip: level });
|
|
@@ -598,8 +621,9 @@ var SearchBuilderBase = class {
|
|
|
598
621
|
}
|
|
599
622
|
/**
|
|
600
623
|
* クエリパラメータをセットする
|
|
601
|
-
* @
|
|
602
|
-
* @
|
|
624
|
+
* @protected
|
|
625
|
+
* @param obj セットするパラメータ
|
|
626
|
+
* @return {this}
|
|
603
627
|
*/
|
|
604
628
|
set(obj) {
|
|
605
629
|
this.params = { ...this.params, ...obj };
|
|
@@ -607,6 +631,9 @@ var SearchBuilderBase = class {
|
|
|
607
631
|
}
|
|
608
632
|
/**
|
|
609
633
|
* クエリパラメータを削除する
|
|
634
|
+
* @protected
|
|
635
|
+
* @param key 削除するパラメータのキー
|
|
636
|
+
* @returns {this}
|
|
610
637
|
*/
|
|
611
638
|
unset(key) {
|
|
612
639
|
delete this.params[key];
|
|
@@ -615,56 +642,65 @@ var SearchBuilderBase = class {
|
|
|
615
642
|
};
|
|
616
643
|
var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilderBase {
|
|
617
644
|
/**
|
|
618
|
-
*
|
|
619
|
-
*
|
|
645
|
+
* 検索語を指定します (word)。
|
|
646
|
+
* 半角または全角スペースで区切るとAND抽出になります。部分一致でHITします。
|
|
647
|
+
* @param word 検索語
|
|
648
|
+
* @return {this}
|
|
620
649
|
*/
|
|
621
650
|
word(word) {
|
|
622
651
|
this.set({ word });
|
|
623
652
|
return this;
|
|
624
653
|
}
|
|
625
654
|
/**
|
|
626
|
-
*
|
|
627
|
-
*
|
|
655
|
+
* 除外したい単語を指定します (notword)。
|
|
656
|
+
* スペースで区切ることにより除外する単語を増やせます。部分一致で除外されます。
|
|
657
|
+
* @param word 除外語
|
|
658
|
+
* @return {this}
|
|
628
659
|
*/
|
|
629
660
|
notWord(word) {
|
|
630
661
|
this.set({ notword: word });
|
|
631
662
|
return this;
|
|
632
663
|
}
|
|
633
664
|
/**
|
|
634
|
-
*
|
|
635
|
-
* @
|
|
665
|
+
* 検索対象を作品名に限定するかどうかを指定します (title)。
|
|
666
|
+
* @param bool trueの場合、作品名を検索対象とする (デフォルト: true)
|
|
667
|
+
* @return {this}
|
|
636
668
|
*/
|
|
637
669
|
byTitle(bool = true) {
|
|
638
670
|
this.set({ title: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
639
671
|
return this;
|
|
640
672
|
}
|
|
641
673
|
/**
|
|
642
|
-
*
|
|
643
|
-
* @
|
|
674
|
+
* 検索対象をあらすじに限定するかどうかを指定します (ex)。
|
|
675
|
+
* @param bool trueの場合、あらすじを検索対象とする (デフォルト: true)
|
|
676
|
+
* @return {this}
|
|
644
677
|
*/
|
|
645
678
|
byOutline(bool = true) {
|
|
646
679
|
this.set({ ex: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
647
680
|
return this;
|
|
648
681
|
}
|
|
649
682
|
/**
|
|
650
|
-
*
|
|
651
|
-
* @
|
|
683
|
+
* 検索対象をキーワードに限定するかどうかを指定します (keyword)。
|
|
684
|
+
* @param bool trueの場合、キーワードを検索対象とする (デフォルト: true)
|
|
685
|
+
* @return {this}
|
|
652
686
|
*/
|
|
653
687
|
byKeyword(bool = true) {
|
|
654
688
|
this.set({ keyword: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
655
689
|
return this;
|
|
656
690
|
}
|
|
657
691
|
/**
|
|
658
|
-
*
|
|
659
|
-
* @
|
|
692
|
+
* 検索対象を作者名に限定するかどうかを指定します (wname)。
|
|
693
|
+
* @param bool trueの場合、作者名を検索対象とする (デフォルト: true)
|
|
694
|
+
* @return {this}
|
|
660
695
|
*/
|
|
661
696
|
byAuthor(bool = true) {
|
|
662
697
|
this.set({ wname: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
663
698
|
return this;
|
|
664
699
|
}
|
|
665
700
|
/**
|
|
666
|
-
*
|
|
667
|
-
* @
|
|
701
|
+
* ボーイズラブ作品を抽出または除外します (isbl/notbl)。
|
|
702
|
+
* @param bool trueの場合、ボーイズラブ作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
703
|
+
* @return {this}
|
|
668
704
|
*/
|
|
669
705
|
isBL(bool = true) {
|
|
670
706
|
if (bool) {
|
|
@@ -675,8 +711,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
675
711
|
return this;
|
|
676
712
|
}
|
|
677
713
|
/**
|
|
678
|
-
*
|
|
679
|
-
* @
|
|
714
|
+
* ガールズラブ作品を抽出または除外します (isgl/notgl)。
|
|
715
|
+
* @param bool trueの場合、ガールズラブ作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
716
|
+
* @return {this}
|
|
680
717
|
*/
|
|
681
718
|
isGL(bool = true) {
|
|
682
719
|
if (bool) {
|
|
@@ -687,8 +724,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
687
724
|
return this;
|
|
688
725
|
}
|
|
689
726
|
/**
|
|
690
|
-
*
|
|
691
|
-
* @
|
|
727
|
+
* 残酷な描写あり作品を抽出または除外します (iszankoku/notzankoku)。
|
|
728
|
+
* @param bool trueの場合、残酷な描写あり作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
729
|
+
* @return {this}
|
|
692
730
|
*/
|
|
693
731
|
isZankoku(bool = true) {
|
|
694
732
|
if (bool) {
|
|
@@ -699,8 +737,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
699
737
|
return this;
|
|
700
738
|
}
|
|
701
739
|
/**
|
|
702
|
-
*
|
|
703
|
-
* @
|
|
740
|
+
* 異世界転生作品を抽出または除外します (istensei/nottensei)。
|
|
741
|
+
* @param bool trueの場合、異世界転生作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
742
|
+
* @return {this}
|
|
704
743
|
*/
|
|
705
744
|
isTensei(bool = true) {
|
|
706
745
|
if (bool) {
|
|
@@ -711,8 +750,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
711
750
|
return this;
|
|
712
751
|
}
|
|
713
752
|
/**
|
|
714
|
-
*
|
|
715
|
-
* @
|
|
753
|
+
* 異世界転移作品を抽出または除外します (istenni/nottenni)。
|
|
754
|
+
* @param bool trueの場合、異世界転移作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
755
|
+
* @return {this}
|
|
716
756
|
*/
|
|
717
757
|
isTenni(bool = true) {
|
|
718
758
|
if (bool) {
|
|
@@ -723,16 +763,18 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
723
763
|
return this;
|
|
724
764
|
}
|
|
725
765
|
/**
|
|
726
|
-
*
|
|
727
|
-
* @return {
|
|
766
|
+
* 異世界転生または異世界転移作品を抽出します (istt)。
|
|
767
|
+
* @return {this}
|
|
728
768
|
*/
|
|
729
769
|
isTT() {
|
|
730
770
|
this.set({ istt: BooleanNumber.True });
|
|
731
771
|
return this;
|
|
732
772
|
}
|
|
733
773
|
/**
|
|
734
|
-
*
|
|
735
|
-
*
|
|
774
|
+
* 抽出する作品の文字数を指定します (length)。
|
|
775
|
+
* 範囲指定する場合は、最小文字数と最大文字数をハイフン(-)記号で区切ってください。
|
|
776
|
+
* @param length 文字数、または[最小文字数, 最大文字数]
|
|
777
|
+
* @return {this}
|
|
736
778
|
*/
|
|
737
779
|
length(length) {
|
|
738
780
|
this.set({ length: _NovelSearchBuilderBase.array2string(length) });
|
|
@@ -749,59 +791,66 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
749
791
|
return this;
|
|
750
792
|
}
|
|
751
793
|
/**
|
|
752
|
-
*
|
|
753
|
-
* @
|
|
794
|
+
* 抽出する作品の挿絵数を指定します (sasie)。
|
|
795
|
+
* @param num 挿絵数、または[最小挿絵数, 最大挿絵数]
|
|
796
|
+
* @return {this}
|
|
754
797
|
*/
|
|
755
798
|
sasie(num) {
|
|
756
799
|
this.set({ sasie: _NovelSearchBuilderBase.array2string(num) });
|
|
757
800
|
return this;
|
|
758
801
|
}
|
|
759
802
|
/**
|
|
760
|
-
*
|
|
761
|
-
* @
|
|
803
|
+
* 抽出する作品の予想読了時間を分単位で指定します (time)。
|
|
804
|
+
* @param num 読了時間(分)、または[最小読了時間, 最大読了時間]
|
|
805
|
+
* @return {this}
|
|
762
806
|
*/
|
|
763
807
|
time(num) {
|
|
764
808
|
this.set({ time: _NovelSearchBuilderBase.array2string(num) });
|
|
765
809
|
return this;
|
|
766
810
|
}
|
|
767
811
|
/**
|
|
768
|
-
*
|
|
769
|
-
* @
|
|
812
|
+
* Nコードを指定して取得します (ncode)。
|
|
813
|
+
* @param ncodes Nコード、またはNコードの配列
|
|
814
|
+
* @return {this}
|
|
770
815
|
*/
|
|
771
816
|
ncode(ncodes) {
|
|
772
817
|
this.set({ ncode: _NovelSearchBuilderBase.array2string(ncodes) });
|
|
773
818
|
return this;
|
|
774
819
|
}
|
|
775
820
|
/**
|
|
776
|
-
*
|
|
777
|
-
* @
|
|
821
|
+
* 抽出する小説タイプを指定します (type)。
|
|
822
|
+
* @param type 小説タイプ (t: 短編, r: 連載中, er: 完結済連載小説, ter: 短編と完結済連載小説, re: 連載中と完結済連載小説)
|
|
823
|
+
* @return {this}
|
|
778
824
|
*/
|
|
779
825
|
type(type) {
|
|
780
826
|
this.set({ type });
|
|
781
827
|
return this;
|
|
782
828
|
}
|
|
783
829
|
/**
|
|
784
|
-
*
|
|
785
|
-
*
|
|
830
|
+
* 抽出する作品の文体を指定します (buntai)。
|
|
831
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
832
|
+
* @param buntai 文体コード、または文体コードの配列
|
|
833
|
+
* @return {this}
|
|
786
834
|
*/
|
|
787
835
|
buntai(buntai) {
|
|
788
836
|
this.set({ buntai: _NovelSearchBuilderBase.array2string(buntai) });
|
|
789
837
|
return this;
|
|
790
838
|
}
|
|
791
839
|
/**
|
|
792
|
-
*
|
|
793
|
-
* @
|
|
840
|
+
* 連載停止中作品に関する指定をします (stop)。
|
|
841
|
+
* @param bool trueの場合、長期連載停止中のみ取得する (デフォルト: true)。falseの場合、長期連載停止中を除外する。
|
|
842
|
+
* @return {this}
|
|
794
843
|
*/
|
|
795
844
|
isStop(bool = true) {
|
|
796
845
|
this.set({ stop: bool ? StopParam.Stopping : StopParam.NoStopping });
|
|
797
846
|
return this;
|
|
798
847
|
}
|
|
799
848
|
/**
|
|
800
|
-
*
|
|
801
|
-
* @return {
|
|
849
|
+
* ピックアップ作品のみを取得します (ispickup)。
|
|
850
|
+
* @return {this}
|
|
802
851
|
*/
|
|
803
|
-
isPickup(
|
|
804
|
-
this.set({ ispickup:
|
|
852
|
+
isPickup() {
|
|
853
|
+
this.set({ ispickup: BooleanNumber.True });
|
|
805
854
|
return this;
|
|
806
855
|
}
|
|
807
856
|
lastUpdate(x, y) {
|
|
@@ -842,48 +891,59 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
842
891
|
};
|
|
843
892
|
var SearchBuilder = class _SearchBuilder extends NovelSearchBuilderBase {
|
|
844
893
|
/**
|
|
845
|
-
*
|
|
846
|
-
*
|
|
894
|
+
* 大ジャンルを指定して取得します (biggenre)。
|
|
895
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
896
|
+
* @param genre 大ジャンルコード、または大ジャンルコードの配列
|
|
897
|
+
* @return {this}
|
|
847
898
|
*/
|
|
848
899
|
bigGenre(genre) {
|
|
849
900
|
this.set({ biggenre: _SearchBuilder.array2string(genre) });
|
|
850
901
|
return this;
|
|
851
902
|
}
|
|
852
903
|
/**
|
|
853
|
-
*
|
|
854
|
-
*
|
|
904
|
+
* 除外したい大ジャンルを指定します (notbiggenre)。
|
|
905
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
906
|
+
* @param genre 除外する大ジャンルコード、または大ジャンルコードの配列
|
|
907
|
+
* @return {this}
|
|
855
908
|
*/
|
|
856
909
|
notBigGenre(genre) {
|
|
857
910
|
this.set({ notbiggenre: _SearchBuilder.array2string(genre) });
|
|
858
911
|
return this;
|
|
859
912
|
}
|
|
860
913
|
/**
|
|
861
|
-
*
|
|
862
|
-
*
|
|
914
|
+
* ジャンルを指定して取得します (genre)。
|
|
915
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
916
|
+
* @param genre ジャンルコード、またはジャンルコードの配列
|
|
917
|
+
* @return {this}
|
|
863
918
|
*/
|
|
864
919
|
genre(genre) {
|
|
865
920
|
this.set({ genre: _SearchBuilder.array2string(genre) });
|
|
866
921
|
return this;
|
|
867
922
|
}
|
|
868
923
|
/**
|
|
869
|
-
*
|
|
870
|
-
*
|
|
924
|
+
* 除外したいジャンルを指定します (notgenre)。
|
|
925
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
926
|
+
* @param genre 除外するジャンルコード、またはジャンルコードの配列
|
|
927
|
+
* @return {this}
|
|
871
928
|
*/
|
|
872
929
|
notGenre(genre) {
|
|
873
930
|
this.set({ notgenre: _SearchBuilder.array2string(genre) });
|
|
874
931
|
return this;
|
|
875
932
|
}
|
|
876
933
|
/**
|
|
877
|
-
*
|
|
878
|
-
*
|
|
934
|
+
* ユーザIDを指定して取得します (userid)。
|
|
935
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
936
|
+
* @param ids ユーザID、またはユーザIDの配列
|
|
937
|
+
* @return {this}
|
|
879
938
|
*/
|
|
880
939
|
userId(ids) {
|
|
881
940
|
this.set({ userid: _SearchBuilder.array2string(ids) });
|
|
882
941
|
return this;
|
|
883
942
|
}
|
|
884
943
|
/**
|
|
885
|
-
*
|
|
886
|
-
* @
|
|
944
|
+
* R15作品を抽出または除外します (isr15/notr15)。
|
|
945
|
+
* @param bool trueの場合、R15作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
946
|
+
* @return {this}
|
|
887
947
|
*/
|
|
888
948
|
isR15(bool = true) {
|
|
889
949
|
if (bool) {
|
|
@@ -894,13 +954,22 @@ var SearchBuilder = class _SearchBuilder extends NovelSearchBuilderBase {
|
|
|
894
954
|
return this;
|
|
895
955
|
}
|
|
896
956
|
/**
|
|
897
|
-
*
|
|
898
|
-
*
|
|
957
|
+
* 出力する項目を個別に指定します (of)。
|
|
958
|
+
* 未指定時は全項目出力されます。転送量軽減のため、このパラメータの使用が推奨されます。
|
|
959
|
+
* 複数項目を出力する場合はハイフン(-)記号で区切ってください。
|
|
960
|
+
* @param fields 出力するフィールド名、またはフィールド名の配列
|
|
961
|
+
* @return {SearchBuilder<SearchResultFields<TFields>, TOpt>} 型が更新されたビルダー
|
|
899
962
|
*/
|
|
900
963
|
fields(fields) {
|
|
901
964
|
this.set({ of: _SearchBuilder.array2string(fields) });
|
|
902
965
|
return this;
|
|
903
966
|
}
|
|
967
|
+
/**
|
|
968
|
+
* 出力オプション項目を指定します (opt)。
|
|
969
|
+
* 複数項目を出力する場合はハイフン(-)記号で区切ってください。
|
|
970
|
+
* @param option 出力するオプションフィールド名、またはオプションフィールド名の配列
|
|
971
|
+
* @return {SearchBuilder<T, SearchResultOptionalFields<TFields>>} 型が更新されたビルダー
|
|
972
|
+
*/
|
|
904
973
|
opt(option) {
|
|
905
974
|
this.set({ opt: _SearchBuilder.array2string(option) });
|
|
906
975
|
return this;
|
|
@@ -917,50 +986,99 @@ var SearchBuilderR18 = class extends NovelSearchBuilderBase {
|
|
|
917
986
|
execute() {
|
|
918
987
|
return this.api.executeNovel18(this.params);
|
|
919
988
|
}
|
|
989
|
+
/**
|
|
990
|
+
* 抽出するR18サイトを指定します (nocgenre)。
|
|
991
|
+
* @param sites R18サイトコード、またはR18サイトコードの配列 (1: ノクターンノベルズ, 2: ムーンライトノベルズ(男性向け), 3: ムーンライトノベルズ(BL), 4: ミッドナイトノベルズ)
|
|
992
|
+
* @return {this}
|
|
993
|
+
*/
|
|
920
994
|
r18Site(sites) {
|
|
921
995
|
this.set({ nocgenre: NovelSearchBuilderBase.array2string(sites) });
|
|
922
996
|
return this;
|
|
923
997
|
}
|
|
924
998
|
/**
|
|
925
|
-
*
|
|
926
|
-
* @
|
|
999
|
+
* X-IDを指定して取得します (xid)。
|
|
1000
|
+
* @param ids X-ID、またはX-IDの配列
|
|
1001
|
+
* @return {this}
|
|
927
1002
|
*/
|
|
928
1003
|
xid(ids) {
|
|
929
1004
|
this.set({ xid: NovelSearchBuilderBase.array2string(ids) });
|
|
930
1005
|
return this;
|
|
931
1006
|
}
|
|
932
1007
|
/**
|
|
933
|
-
*
|
|
934
|
-
*
|
|
1008
|
+
* 出力する項目を個別に指定します (of)。
|
|
1009
|
+
* 未指定時は全項目出力されます。転送量軽減のため、このパラメータの使用が推奨されます。
|
|
1010
|
+
* @param fields 出力するR18フィールド名、またはR18フィールド名の配列
|
|
1011
|
+
* @return {SearchBuilderR18<SearchResultR18Fields<R18Fields>>} 型が更新されたビルダー
|
|
935
1012
|
*/
|
|
936
1013
|
fields(fields) {
|
|
937
1014
|
this.set({ of: NovelSearchBuilderBase.array2string(fields) });
|
|
938
1015
|
return this;
|
|
939
1016
|
}
|
|
1017
|
+
/**
|
|
1018
|
+
* 出力オプション項目を指定します (opt)。
|
|
1019
|
+
* @param option 出力するオプションフィールド名、またはオプションフィールド名の配列
|
|
1020
|
+
* @return {SearchBuilderR18<T, SearchResultOptionalFields<TFields>>} 型が更新されたビルダー
|
|
1021
|
+
*/
|
|
940
1022
|
opt(option) {
|
|
941
1023
|
this.set({ opt: NovelSearchBuilderBase.array2string(option) });
|
|
942
1024
|
return this;
|
|
943
1025
|
}
|
|
944
1026
|
};
|
|
945
1027
|
|
|
1028
|
+
// src/util/date.ts
|
|
1029
|
+
function parseDate(dateStr) {
|
|
1030
|
+
const year = parseInt(dateStr.substring(0, 4), 10);
|
|
1031
|
+
const month = parseInt(dateStr.substring(4, 6), 10) - 1;
|
|
1032
|
+
const day = parseInt(dateStr.substring(6, 8), 10);
|
|
1033
|
+
return new Date(year, month, day, 0, 0, 0, 0);
|
|
1034
|
+
}
|
|
1035
|
+
function formatDate(date) {
|
|
1036
|
+
const year = date.getFullYear();
|
|
1037
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
1038
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
1039
|
+
return `${year}${month}${day}`;
|
|
1040
|
+
}
|
|
1041
|
+
function addDays(date, days) {
|
|
1042
|
+
const result = new Date(date);
|
|
1043
|
+
result.setDate(result.getDate() + days);
|
|
1044
|
+
return result;
|
|
1045
|
+
}
|
|
1046
|
+
|
|
946
1047
|
// src/ranking.ts
|
|
947
|
-
var import_date_fns = require("date-fns");
|
|
948
|
-
var dateFormat = "yyyyMMdd";
|
|
949
1048
|
var RankingBuilder = class {
|
|
950
1049
|
/**
|
|
951
1050
|
* constructor
|
|
1051
|
+
* @param params - 初期クエリパラメータ
|
|
1052
|
+
* @param api - API実行クラスのインスタンス
|
|
952
1053
|
* @private
|
|
953
1054
|
*/
|
|
954
1055
|
constructor(params = {}, api) {
|
|
955
1056
|
this.params = params;
|
|
956
1057
|
this.api = api;
|
|
957
|
-
this.date$ = (
|
|
1058
|
+
this.date$ = addDays(/* @__PURE__ */ new Date(), -1);
|
|
958
1059
|
this.type$ = RankingType.Daily;
|
|
959
1060
|
}
|
|
1061
|
+
/**
|
|
1062
|
+
* ランキング集計対象の日付を指定します。
|
|
1063
|
+
*
|
|
1064
|
+
* - 日間: 任意の日付
|
|
1065
|
+
* - 週間: 火曜日の日付
|
|
1066
|
+
* - 月間・四半期: 1日の日付
|
|
1067
|
+
*
|
|
1068
|
+
* @param date 集計対象の日付
|
|
1069
|
+
* @returns {RankingBuilder} this
|
|
1070
|
+
* @see https://dev.syosetu.com/man/rankapi/
|
|
1071
|
+
*/
|
|
960
1072
|
date(date) {
|
|
961
1073
|
this.date$ = date;
|
|
962
1074
|
return this;
|
|
963
1075
|
}
|
|
1076
|
+
/**
|
|
1077
|
+
* ランキング種別を指定します。
|
|
1078
|
+
* @param type ランキング種別
|
|
1079
|
+
* @returns {RankingBuilder} this
|
|
1080
|
+
* @see https://dev.syosetu.com/man/rankapi/
|
|
1081
|
+
*/
|
|
964
1082
|
type(type) {
|
|
965
1083
|
this.type$ = type;
|
|
966
1084
|
return this;
|
|
@@ -977,23 +1095,36 @@ var RankingBuilder = class {
|
|
|
977
1095
|
return this;
|
|
978
1096
|
}
|
|
979
1097
|
/**
|
|
980
|
-
*
|
|
1098
|
+
* クエリパラメータを内部的にセットします。
|
|
1099
|
+
* @param obj - セットするパラメータオブジェクト
|
|
1100
|
+
* @returns {RankingBuilder} this
|
|
981
1101
|
* @private
|
|
982
|
-
* @return {RankingBuilder} this
|
|
983
1102
|
*/
|
|
984
1103
|
set(obj) {
|
|
985
1104
|
Object.assign(this.params, obj);
|
|
986
1105
|
return this;
|
|
987
1106
|
}
|
|
988
1107
|
/**
|
|
989
|
-
*
|
|
990
|
-
*
|
|
1108
|
+
* 設定されたパラメータに基づき、なろう小説ランキングAPIへのリクエストを実行します。
|
|
1109
|
+
*
|
|
1110
|
+
* 返される結果には、Nコード、ポイント、順位が含まれます。
|
|
1111
|
+
* @returns {Promise<NarouRankingResult[]>} ランキング結果の配列
|
|
1112
|
+
* @see https://dev.syosetu.com/man/rankapi/#output
|
|
991
1113
|
*/
|
|
992
1114
|
execute() {
|
|
993
|
-
const date = (
|
|
1115
|
+
const date = formatDate(this.date$);
|
|
994
1116
|
this.set({ rtype: `${date}-${this.type$}` });
|
|
995
1117
|
return this.api.executeRanking(this.params);
|
|
996
1118
|
}
|
|
1119
|
+
/**
|
|
1120
|
+
* ランキングAPIを実行し、取得したNコードを元になろう小説APIで詳細情報を取得して結合します。
|
|
1121
|
+
*
|
|
1122
|
+
* @template TFields - 取得する小説情報のフィールド型
|
|
1123
|
+
* @template TOpt - オプショナルな取得フィールドの型
|
|
1124
|
+
* @param fields - 取得するフィールドの配列 (省略時はデフォルトフィールド)
|
|
1125
|
+
* @param opt - オプショナルな取得フィールド (`weekly` など)
|
|
1126
|
+
* @returns {Promise<RankingResult<SearchResultFields<TFields>>[]>} 詳細情報を含むランキング結果の配列
|
|
1127
|
+
*/
|
|
997
1128
|
async executeWithFields(fields = [], opt) {
|
|
998
1129
|
const ranking = await this.execute();
|
|
999
1130
|
const fields$ = Array.isArray(fields) ? fields.length == 0 ? [] : [...fields, Fields.ncode] : [fields, Fields.ncode];
|
|
@@ -1015,12 +1146,10 @@ var RankingBuilder = class {
|
|
|
1015
1146
|
};
|
|
1016
1147
|
|
|
1017
1148
|
// src/ranking-history.ts
|
|
1018
|
-
var import_date_fns2 = require("date-fns");
|
|
1019
|
-
var dateFormat2 = "yyyyMMdd";
|
|
1020
1149
|
function formatRankingHistory(rankin) {
|
|
1021
1150
|
const { rtype, pt, rank } = rankin;
|
|
1022
1151
|
const [_date, _type] = rtype.split("-");
|
|
1023
|
-
const date = (
|
|
1152
|
+
const date = parseDate(_date);
|
|
1024
1153
|
const type = _type;
|
|
1025
1154
|
return { type, date, pt, rank };
|
|
1026
1155
|
}
|