narou 1.0.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-6RIDVTFQ.js → chunk-5UDKQCPJ.js} +12 -2
- 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-DBCAWGIX.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-TNDGN3EF.js → chunk-IPDEGCWU.js} +1 -1
- package/dist/chunk-IPDEGCWU.js.map +1 -0
- package/dist/{chunk-GAEL5UWA.js → chunk-LQLNWSWV.js} +4 -4
- package/dist/{chunk-GAEL5UWA.js.map → chunk-LQLNWSWV.js.map} +1 -1
- package/dist/{chunk-NP5NZV5Q.js → chunk-PLEM2AOH.js} +8 -5
- package/dist/chunk-PLEM2AOH.js.map +1 -0
- package/dist/chunk-RNHRR56W.js +25 -0
- package/dist/chunk-RNHRR56W.js.map +1 -0
- package/dist/{chunk-JMTNQTNC.js → chunk-VUZIISP2.js} +2 -3
- 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 +245 -94
- 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 +16 -16
- package/dist/index.browser.js.map +1 -1
- package/dist/index.cjs +256 -103
- package/dist/index.cjs.map +1 -1
- package/dist/index.common.cjs +241 -87
- 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 +11 -8
- package/dist/index.d.cts +15 -6
- package/dist/index.d.ts +15 -6
- package/dist/index.js +20 -20
- 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 +10 -5
- package/dist/narou-fetch.cjs.map +1 -1
- package/dist/narou-fetch.d.cts +4 -3
- package/dist/narou-fetch.d.ts +4 -3
- package/dist/narou-fetch.js +4 -4
- package/dist/narou-jsonp.cjs +5 -2
- 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-D_vbjc_I.d.cts → narou-search-results-C21hWrnL.d.cts} +30 -19
- package/dist/{narou-search-results-CvMcnYqe.d.ts → narou-search-results-DT0YdaBn.d.ts} +30 -19
- 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 +12 -1
- 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 +3 -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 +201 -78
- package/dist/ranking.cjs.map +1 -1
- package/dist/ranking.d.cts +70 -9
- package/dist/ranking.d.ts +70 -9
- package/dist/ranking.js +4 -3
- package/dist/search-builder-r18.cjs +133 -60
- 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 +150 -70
- 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 +1 -2
- 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 +47 -46
- package/pnpm-lock.yaml +3041 -0
- package/src/index.browser.ts +21 -5
- package/src/index.ts +11 -2
- package/src/narou-fetch.ts +5 -2
- package/src/narou-jsonp.ts +1 -1
- package/src/narou-search-results.ts +2 -1
- package/src/narou.ts +4 -1
- package/src/params.ts +34 -18
- 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 +203 -79
- 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-6RIDVTFQ.js.map +0 -1
- package/dist/chunk-JMTNQTNC.js.map +0 -1
- package/dist/chunk-NP5NZV5Q.js.map +0 -1
- package/dist/chunk-OJGRUQEQ.js +0 -372
- package/dist/chunk-OJGRUQEQ.js.map +0 -1
- package/dist/chunk-QQYQ4GQF.js +0 -83
- package/dist/chunk-QQYQ4GQF.js.map +0 -1
- package/dist/chunk-RITMMCZE.js.map +0 -1
- package/dist/chunk-TNDGN3EF.js.map +0 -1
- package/dist/chunk-XAUB42TO.js.map +0 -1
- package/dist/chunk-YJQXIVFD.js +0 -44
- package/dist/chunk-YJQXIVFD.js.map +0 -1
- package/dist/narou-CosGR0J9.d.cts +0 -298
- package/dist/narou-CutsOEgk.d.ts +0 -298
- /package/dist/{chunk-DBCAWGIX.js.map → chunk-DEQICAN3.js.map} +0 -0
package/dist/ranking.cjs
CHANGED
|
@@ -231,14 +231,30 @@ var SearchBuilderBase = class {
|
|
|
231
231
|
/**
|
|
232
232
|
* constructor
|
|
233
233
|
* @private
|
|
234
|
+
* @param params クエリパラメータ
|
|
235
|
+
* @param api NarouNovel インスタンス
|
|
234
236
|
*/
|
|
235
237
|
constructor(params = {}, api) {
|
|
236
238
|
this.params = params;
|
|
237
239
|
this.api = api;
|
|
238
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* 配列から重複を除去する
|
|
243
|
+
* @protected
|
|
244
|
+
* @static
|
|
245
|
+
* @param array 配列
|
|
246
|
+
* @returns 重複を除去した配列
|
|
247
|
+
*/
|
|
239
248
|
static distinct(array) {
|
|
240
249
|
return Array.from(new Set(array));
|
|
241
250
|
}
|
|
251
|
+
/**
|
|
252
|
+
* 配列をハイフン区切りの文字列に変換する
|
|
253
|
+
* @protected
|
|
254
|
+
* @static
|
|
255
|
+
* @param n 文字列または数値の配列、あるいは単一の文字列または数値
|
|
256
|
+
* @returns ハイフン区切りの文字列
|
|
257
|
+
*/
|
|
242
258
|
static array2string(n) {
|
|
243
259
|
if (Array.isArray(n)) {
|
|
244
260
|
return this.distinct(n).join("-");
|
|
@@ -247,44 +263,48 @@ var SearchBuilderBase = class {
|
|
|
247
263
|
}
|
|
248
264
|
}
|
|
249
265
|
/**
|
|
250
|
-
*
|
|
251
|
-
* @
|
|
266
|
+
* 取得件数を指定する (lim)
|
|
267
|
+
* @param num 取得件数 (1-500)
|
|
268
|
+
* @return {this}
|
|
252
269
|
*/
|
|
253
270
|
limit(num) {
|
|
254
271
|
this.set({ lim: num });
|
|
255
272
|
return this;
|
|
256
273
|
}
|
|
257
274
|
/**
|
|
258
|
-
*
|
|
259
|
-
* @
|
|
275
|
+
* 取得開始位置を指定する (st)
|
|
276
|
+
* @param num 取得開始位置 (1-)
|
|
277
|
+
* @return {this}
|
|
260
278
|
*/
|
|
261
279
|
start(num) {
|
|
262
280
|
this.set({ st: num });
|
|
263
281
|
return this;
|
|
264
282
|
}
|
|
265
283
|
/**
|
|
266
|
-
*
|
|
267
|
-
* @
|
|
284
|
+
* ページ番号と1ページあたりの件数で取得範囲を指定する
|
|
285
|
+
* @param no ページ番号 (0-)
|
|
286
|
+
* @param count 1ページあたりの件数 (デフォルト: 20)
|
|
287
|
+
* @return {this}
|
|
268
288
|
*/
|
|
269
289
|
page(no, count = 20) {
|
|
270
290
|
return this.limit(count).start(no * count);
|
|
271
291
|
}
|
|
272
292
|
/**
|
|
273
|
-
*
|
|
274
|
-
*
|
|
293
|
+
* 出力順序を指定する (order)
|
|
294
|
+
* 指定しない場合は新着順となります。
|
|
275
295
|
* @param {TOrder} order 出力順序
|
|
276
|
-
* @return {
|
|
296
|
+
* @return {this}
|
|
277
297
|
*/
|
|
278
298
|
order(order) {
|
|
279
299
|
this.set({ order });
|
|
280
300
|
return this;
|
|
281
301
|
}
|
|
282
302
|
/**
|
|
283
|
-
* gzip
|
|
303
|
+
* gzip圧縮レベルを指定する (gzip)
|
|
284
304
|
*
|
|
285
305
|
* 転送量上限を減らすためにも推奨
|
|
286
306
|
* @param {GzipLevel} level gzip圧縮レベル(1~5)
|
|
287
|
-
* @return {
|
|
307
|
+
* @return {this}
|
|
288
308
|
*/
|
|
289
309
|
gzip(level) {
|
|
290
310
|
this.set({ gzip: level });
|
|
@@ -292,8 +312,9 @@ var SearchBuilderBase = class {
|
|
|
292
312
|
}
|
|
293
313
|
/**
|
|
294
314
|
* クエリパラメータをセットする
|
|
295
|
-
* @
|
|
296
|
-
* @
|
|
315
|
+
* @protected
|
|
316
|
+
* @param obj セットするパラメータ
|
|
317
|
+
* @return {this}
|
|
297
318
|
*/
|
|
298
319
|
set(obj) {
|
|
299
320
|
this.params = { ...this.params, ...obj };
|
|
@@ -301,6 +322,9 @@ var SearchBuilderBase = class {
|
|
|
301
322
|
}
|
|
302
323
|
/**
|
|
303
324
|
* クエリパラメータを削除する
|
|
325
|
+
* @protected
|
|
326
|
+
* @param key 削除するパラメータのキー
|
|
327
|
+
* @returns {this}
|
|
304
328
|
*/
|
|
305
329
|
unset(key) {
|
|
306
330
|
delete this.params[key];
|
|
@@ -309,56 +333,65 @@ var SearchBuilderBase = class {
|
|
|
309
333
|
};
|
|
310
334
|
var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilderBase {
|
|
311
335
|
/**
|
|
312
|
-
*
|
|
313
|
-
*
|
|
336
|
+
* 検索語を指定します (word)。
|
|
337
|
+
* 半角または全角スペースで区切るとAND抽出になります。部分一致でHITします。
|
|
338
|
+
* @param word 検索語
|
|
339
|
+
* @return {this}
|
|
314
340
|
*/
|
|
315
341
|
word(word) {
|
|
316
342
|
this.set({ word });
|
|
317
343
|
return this;
|
|
318
344
|
}
|
|
319
345
|
/**
|
|
320
|
-
*
|
|
321
|
-
*
|
|
346
|
+
* 除外したい単語を指定します (notword)。
|
|
347
|
+
* スペースで区切ることにより除外する単語を増やせます。部分一致で除外されます。
|
|
348
|
+
* @param word 除外語
|
|
349
|
+
* @return {this}
|
|
322
350
|
*/
|
|
323
351
|
notWord(word) {
|
|
324
352
|
this.set({ notword: word });
|
|
325
353
|
return this;
|
|
326
354
|
}
|
|
327
355
|
/**
|
|
328
|
-
*
|
|
329
|
-
* @
|
|
356
|
+
* 検索対象を作品名に限定するかどうかを指定します (title)。
|
|
357
|
+
* @param bool trueの場合、作品名を検索対象とする (デフォルト: true)
|
|
358
|
+
* @return {this}
|
|
330
359
|
*/
|
|
331
360
|
byTitle(bool = true) {
|
|
332
361
|
this.set({ title: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
333
362
|
return this;
|
|
334
363
|
}
|
|
335
364
|
/**
|
|
336
|
-
*
|
|
337
|
-
* @
|
|
365
|
+
* 検索対象をあらすじに限定するかどうかを指定します (ex)。
|
|
366
|
+
* @param bool trueの場合、あらすじを検索対象とする (デフォルト: true)
|
|
367
|
+
* @return {this}
|
|
338
368
|
*/
|
|
339
369
|
byOutline(bool = true) {
|
|
340
370
|
this.set({ ex: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
341
371
|
return this;
|
|
342
372
|
}
|
|
343
373
|
/**
|
|
344
|
-
*
|
|
345
|
-
* @
|
|
374
|
+
* 検索対象をキーワードに限定するかどうかを指定します (keyword)。
|
|
375
|
+
* @param bool trueの場合、キーワードを検索対象とする (デフォルト: true)
|
|
376
|
+
* @return {this}
|
|
346
377
|
*/
|
|
347
378
|
byKeyword(bool = true) {
|
|
348
379
|
this.set({ keyword: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
349
380
|
return this;
|
|
350
381
|
}
|
|
351
382
|
/**
|
|
352
|
-
*
|
|
353
|
-
* @
|
|
383
|
+
* 検索対象を作者名に限定するかどうかを指定します (wname)。
|
|
384
|
+
* @param bool trueの場合、作者名を検索対象とする (デフォルト: true)
|
|
385
|
+
* @return {this}
|
|
354
386
|
*/
|
|
355
387
|
byAuthor(bool = true) {
|
|
356
388
|
this.set({ wname: bool ? BooleanNumber.True : BooleanNumber.False });
|
|
357
389
|
return this;
|
|
358
390
|
}
|
|
359
391
|
/**
|
|
360
|
-
*
|
|
361
|
-
* @
|
|
392
|
+
* ボーイズラブ作品を抽出または除外します (isbl/notbl)。
|
|
393
|
+
* @param bool trueの場合、ボーイズラブ作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
394
|
+
* @return {this}
|
|
362
395
|
*/
|
|
363
396
|
isBL(bool = true) {
|
|
364
397
|
if (bool) {
|
|
@@ -369,8 +402,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
369
402
|
return this;
|
|
370
403
|
}
|
|
371
404
|
/**
|
|
372
|
-
*
|
|
373
|
-
* @
|
|
405
|
+
* ガールズラブ作品を抽出または除外します (isgl/notgl)。
|
|
406
|
+
* @param bool trueの場合、ガールズラブ作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
407
|
+
* @return {this}
|
|
374
408
|
*/
|
|
375
409
|
isGL(bool = true) {
|
|
376
410
|
if (bool) {
|
|
@@ -381,8 +415,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
381
415
|
return this;
|
|
382
416
|
}
|
|
383
417
|
/**
|
|
384
|
-
*
|
|
385
|
-
* @
|
|
418
|
+
* 残酷な描写あり作品を抽出または除外します (iszankoku/notzankoku)。
|
|
419
|
+
* @param bool trueの場合、残酷な描写あり作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
420
|
+
* @return {this}
|
|
386
421
|
*/
|
|
387
422
|
isZankoku(bool = true) {
|
|
388
423
|
if (bool) {
|
|
@@ -393,8 +428,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
393
428
|
return this;
|
|
394
429
|
}
|
|
395
430
|
/**
|
|
396
|
-
*
|
|
397
|
-
* @
|
|
431
|
+
* 異世界転生作品を抽出または除外します (istensei/nottensei)。
|
|
432
|
+
* @param bool trueの場合、異世界転生作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
433
|
+
* @return {this}
|
|
398
434
|
*/
|
|
399
435
|
isTensei(bool = true) {
|
|
400
436
|
if (bool) {
|
|
@@ -405,8 +441,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
405
441
|
return this;
|
|
406
442
|
}
|
|
407
443
|
/**
|
|
408
|
-
*
|
|
409
|
-
* @
|
|
444
|
+
* 異世界転移作品を抽出または除外します (istenni/nottenni)。
|
|
445
|
+
* @param bool trueの場合、異世界転移作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
446
|
+
* @return {this}
|
|
410
447
|
*/
|
|
411
448
|
isTenni(bool = true) {
|
|
412
449
|
if (bool) {
|
|
@@ -417,16 +454,18 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
417
454
|
return this;
|
|
418
455
|
}
|
|
419
456
|
/**
|
|
420
|
-
*
|
|
421
|
-
* @return {
|
|
457
|
+
* 異世界転生または異世界転移作品を抽出します (istt)。
|
|
458
|
+
* @return {this}
|
|
422
459
|
*/
|
|
423
460
|
isTT() {
|
|
424
461
|
this.set({ istt: BooleanNumber.True });
|
|
425
462
|
return this;
|
|
426
463
|
}
|
|
427
464
|
/**
|
|
428
|
-
*
|
|
429
|
-
*
|
|
465
|
+
* 抽出する作品の文字数を指定します (length)。
|
|
466
|
+
* 範囲指定する場合は、最小文字数と最大文字数をハイフン(-)記号で区切ってください。
|
|
467
|
+
* @param length 文字数、または[最小文字数, 最大文字数]
|
|
468
|
+
* @return {this}
|
|
430
469
|
*/
|
|
431
470
|
length(length) {
|
|
432
471
|
this.set({ length: _NovelSearchBuilderBase.array2string(length) });
|
|
@@ -443,59 +482,66 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
443
482
|
return this;
|
|
444
483
|
}
|
|
445
484
|
/**
|
|
446
|
-
*
|
|
447
|
-
* @
|
|
485
|
+
* 抽出する作品の挿絵数を指定します (sasie)。
|
|
486
|
+
* @param num 挿絵数、または[最小挿絵数, 最大挿絵数]
|
|
487
|
+
* @return {this}
|
|
448
488
|
*/
|
|
449
489
|
sasie(num) {
|
|
450
490
|
this.set({ sasie: _NovelSearchBuilderBase.array2string(num) });
|
|
451
491
|
return this;
|
|
452
492
|
}
|
|
453
493
|
/**
|
|
454
|
-
*
|
|
455
|
-
* @
|
|
494
|
+
* 抽出する作品の予想読了時間を分単位で指定します (time)。
|
|
495
|
+
* @param num 読了時間(分)、または[最小読了時間, 最大読了時間]
|
|
496
|
+
* @return {this}
|
|
456
497
|
*/
|
|
457
498
|
time(num) {
|
|
458
499
|
this.set({ time: _NovelSearchBuilderBase.array2string(num) });
|
|
459
500
|
return this;
|
|
460
501
|
}
|
|
461
502
|
/**
|
|
462
|
-
*
|
|
463
|
-
* @
|
|
503
|
+
* Nコードを指定して取得します (ncode)。
|
|
504
|
+
* @param ncodes Nコード、またはNコードの配列
|
|
505
|
+
* @return {this}
|
|
464
506
|
*/
|
|
465
507
|
ncode(ncodes) {
|
|
466
508
|
this.set({ ncode: _NovelSearchBuilderBase.array2string(ncodes) });
|
|
467
509
|
return this;
|
|
468
510
|
}
|
|
469
511
|
/**
|
|
470
|
-
*
|
|
471
|
-
* @
|
|
512
|
+
* 抽出する小説タイプを指定します (type)。
|
|
513
|
+
* @param type 小説タイプ (t: 短編, r: 連載中, er: 完結済連載小説, ter: 短編と完結済連載小説, re: 連載中と完結済連載小説)
|
|
514
|
+
* @return {this}
|
|
472
515
|
*/
|
|
473
516
|
type(type) {
|
|
474
517
|
this.set({ type });
|
|
475
518
|
return this;
|
|
476
519
|
}
|
|
477
520
|
/**
|
|
478
|
-
*
|
|
479
|
-
*
|
|
521
|
+
* 抽出する作品の文体を指定します (buntai)。
|
|
522
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
523
|
+
* @param buntai 文体コード、または文体コードの配列
|
|
524
|
+
* @return {this}
|
|
480
525
|
*/
|
|
481
526
|
buntai(buntai) {
|
|
482
527
|
this.set({ buntai: _NovelSearchBuilderBase.array2string(buntai) });
|
|
483
528
|
return this;
|
|
484
529
|
}
|
|
485
530
|
/**
|
|
486
|
-
*
|
|
487
|
-
* @
|
|
531
|
+
* 連載停止中作品に関する指定をします (stop)。
|
|
532
|
+
* @param bool trueの場合、長期連載停止中のみ取得する (デフォルト: true)。falseの場合、長期連載停止中を除外する。
|
|
533
|
+
* @return {this}
|
|
488
534
|
*/
|
|
489
535
|
isStop(bool = true) {
|
|
490
536
|
this.set({ stop: bool ? StopParam.Stopping : StopParam.NoStopping });
|
|
491
537
|
return this;
|
|
492
538
|
}
|
|
493
539
|
/**
|
|
494
|
-
*
|
|
495
|
-
* @return {
|
|
540
|
+
* ピックアップ作品のみを取得します (ispickup)。
|
|
541
|
+
* @return {this}
|
|
496
542
|
*/
|
|
497
|
-
isPickup(
|
|
498
|
-
this.set({ ispickup:
|
|
543
|
+
isPickup() {
|
|
544
|
+
this.set({ ispickup: BooleanNumber.True });
|
|
499
545
|
return this;
|
|
500
546
|
}
|
|
501
547
|
lastUpdate(x, y) {
|
|
@@ -504,7 +550,7 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
504
550
|
date = x;
|
|
505
551
|
} else if (x instanceof Date && y instanceof Date) {
|
|
506
552
|
date = `${Math.floor(x.getTime() / 1e3)}-${Math.floor(
|
|
507
|
-
|
|
553
|
+
y.getTime() / 1e3
|
|
508
554
|
)}`;
|
|
509
555
|
} else {
|
|
510
556
|
date = `${x}-${y}`;
|
|
@@ -512,6 +558,20 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
512
558
|
this.set({ lastup: date });
|
|
513
559
|
return this;
|
|
514
560
|
}
|
|
561
|
+
lastNovelUpdate(x, y) {
|
|
562
|
+
let date;
|
|
563
|
+
if (typeof x == "string") {
|
|
564
|
+
date = x;
|
|
565
|
+
} else if (x instanceof Date && y instanceof Date) {
|
|
566
|
+
date = `${Math.floor(x.getTime() / 1e3)}-${Math.floor(
|
|
567
|
+
y.getTime() / 1e3
|
|
568
|
+
)}`;
|
|
569
|
+
} else {
|
|
570
|
+
date = `${x}-${y}`;
|
|
571
|
+
}
|
|
572
|
+
this.set({ lastupdate: date });
|
|
573
|
+
return this;
|
|
574
|
+
}
|
|
515
575
|
/**
|
|
516
576
|
* なろう小説APIへの検索リクエストを実行する
|
|
517
577
|
* @returns {Promise<NarouSearchResults>} 検索結果
|
|
@@ -522,48 +582,59 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
|
|
|
522
582
|
};
|
|
523
583
|
var SearchBuilder = class _SearchBuilder extends NovelSearchBuilderBase {
|
|
524
584
|
/**
|
|
525
|
-
*
|
|
526
|
-
*
|
|
585
|
+
* 大ジャンルを指定して取得します (biggenre)。
|
|
586
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
587
|
+
* @param genre 大ジャンルコード、または大ジャンルコードの配列
|
|
588
|
+
* @return {this}
|
|
527
589
|
*/
|
|
528
590
|
bigGenre(genre) {
|
|
529
591
|
this.set({ biggenre: _SearchBuilder.array2string(genre) });
|
|
530
592
|
return this;
|
|
531
593
|
}
|
|
532
594
|
/**
|
|
533
|
-
*
|
|
534
|
-
*
|
|
595
|
+
* 除外したい大ジャンルを指定します (notbiggenre)。
|
|
596
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
597
|
+
* @param genre 除外する大ジャンルコード、または大ジャンルコードの配列
|
|
598
|
+
* @return {this}
|
|
535
599
|
*/
|
|
536
600
|
notBigGenre(genre) {
|
|
537
601
|
this.set({ notbiggenre: _SearchBuilder.array2string(genre) });
|
|
538
602
|
return this;
|
|
539
603
|
}
|
|
540
604
|
/**
|
|
541
|
-
*
|
|
542
|
-
*
|
|
605
|
+
* ジャンルを指定して取得します (genre)。
|
|
606
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
607
|
+
* @param genre ジャンルコード、またはジャンルコードの配列
|
|
608
|
+
* @return {this}
|
|
543
609
|
*/
|
|
544
610
|
genre(genre) {
|
|
545
611
|
this.set({ genre: _SearchBuilder.array2string(genre) });
|
|
546
612
|
return this;
|
|
547
613
|
}
|
|
548
614
|
/**
|
|
549
|
-
*
|
|
550
|
-
*
|
|
615
|
+
* 除外したいジャンルを指定します (notgenre)。
|
|
616
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
617
|
+
* @param genre 除外するジャンルコード、またはジャンルコードの配列
|
|
618
|
+
* @return {this}
|
|
551
619
|
*/
|
|
552
620
|
notGenre(genre) {
|
|
553
621
|
this.set({ notgenre: _SearchBuilder.array2string(genre) });
|
|
554
622
|
return this;
|
|
555
623
|
}
|
|
556
624
|
/**
|
|
557
|
-
*
|
|
558
|
-
*
|
|
625
|
+
* ユーザIDを指定して取得します (userid)。
|
|
626
|
+
* 複数指定する場合はハイフン(-)で区切ってください。
|
|
627
|
+
* @param ids ユーザID、またはユーザIDの配列
|
|
628
|
+
* @return {this}
|
|
559
629
|
*/
|
|
560
630
|
userId(ids) {
|
|
561
631
|
this.set({ userid: _SearchBuilder.array2string(ids) });
|
|
562
632
|
return this;
|
|
563
633
|
}
|
|
564
634
|
/**
|
|
565
|
-
*
|
|
566
|
-
* @
|
|
635
|
+
* R15作品を抽出または除外します (isr15/notr15)。
|
|
636
|
+
* @param bool trueの場合、R15作品を抽出する (デフォルト: true)。falseの場合、除外する。
|
|
637
|
+
* @return {this}
|
|
567
638
|
*/
|
|
568
639
|
isR15(bool = true) {
|
|
569
640
|
if (bool) {
|
|
@@ -574,37 +645,76 @@ var SearchBuilder = class _SearchBuilder extends NovelSearchBuilderBase {
|
|
|
574
645
|
return this;
|
|
575
646
|
}
|
|
576
647
|
/**
|
|
577
|
-
*
|
|
578
|
-
*
|
|
648
|
+
* 出力する項目を個別に指定します (of)。
|
|
649
|
+
* 未指定時は全項目出力されます。転送量軽減のため、このパラメータの使用が推奨されます。
|
|
650
|
+
* 複数項目を出力する場合はハイフン(-)記号で区切ってください。
|
|
651
|
+
* @param fields 出力するフィールド名、またはフィールド名の配列
|
|
652
|
+
* @return {SearchBuilder<SearchResultFields<TFields>, TOpt>} 型が更新されたビルダー
|
|
579
653
|
*/
|
|
580
654
|
fields(fields) {
|
|
581
655
|
this.set({ of: _SearchBuilder.array2string(fields) });
|
|
582
656
|
return this;
|
|
583
657
|
}
|
|
658
|
+
/**
|
|
659
|
+
* 出力オプション項目を指定します (opt)。
|
|
660
|
+
* 複数項目を出力する場合はハイフン(-)記号で区切ってください。
|
|
661
|
+
* @param option 出力するオプションフィールド名、またはオプションフィールド名の配列
|
|
662
|
+
* @return {SearchBuilder<T, SearchResultOptionalFields<TFields>>} 型が更新されたビルダー
|
|
663
|
+
*/
|
|
584
664
|
opt(option) {
|
|
585
665
|
this.set({ opt: _SearchBuilder.array2string(option) });
|
|
586
666
|
return this;
|
|
587
667
|
}
|
|
588
668
|
};
|
|
589
669
|
|
|
670
|
+
// src/util/date.ts
|
|
671
|
+
function formatDate(date) {
|
|
672
|
+
const year = date.getFullYear();
|
|
673
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
674
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
675
|
+
return `${year}${month}${day}`;
|
|
676
|
+
}
|
|
677
|
+
function addDays(date, days) {
|
|
678
|
+
const result = new Date(date);
|
|
679
|
+
result.setDate(result.getDate() + days);
|
|
680
|
+
return result;
|
|
681
|
+
}
|
|
682
|
+
|
|
590
683
|
// src/ranking.ts
|
|
591
|
-
var import_date_fns = require("date-fns");
|
|
592
|
-
var dateFormat = "yyyyMMdd";
|
|
593
684
|
var RankingBuilder = class {
|
|
594
685
|
/**
|
|
595
686
|
* constructor
|
|
687
|
+
* @param params - 初期クエリパラメータ
|
|
688
|
+
* @param api - API実行クラスのインスタンス
|
|
596
689
|
* @private
|
|
597
690
|
*/
|
|
598
691
|
constructor(params = {}, api) {
|
|
599
692
|
this.params = params;
|
|
600
693
|
this.api = api;
|
|
601
|
-
this.date$ = (
|
|
694
|
+
this.date$ = addDays(/* @__PURE__ */ new Date(), -1);
|
|
602
695
|
this.type$ = RankingType.Daily;
|
|
603
696
|
}
|
|
697
|
+
/**
|
|
698
|
+
* ランキング集計対象の日付を指定します。
|
|
699
|
+
*
|
|
700
|
+
* - 日間: 任意の日付
|
|
701
|
+
* - 週間: 火曜日の日付
|
|
702
|
+
* - 月間・四半期: 1日の日付
|
|
703
|
+
*
|
|
704
|
+
* @param date 集計対象の日付
|
|
705
|
+
* @returns {RankingBuilder} this
|
|
706
|
+
* @see https://dev.syosetu.com/man/rankapi/
|
|
707
|
+
*/
|
|
604
708
|
date(date) {
|
|
605
709
|
this.date$ = date;
|
|
606
710
|
return this;
|
|
607
711
|
}
|
|
712
|
+
/**
|
|
713
|
+
* ランキング種別を指定します。
|
|
714
|
+
* @param type ランキング種別
|
|
715
|
+
* @returns {RankingBuilder} this
|
|
716
|
+
* @see https://dev.syosetu.com/man/rankapi/
|
|
717
|
+
*/
|
|
608
718
|
type(type) {
|
|
609
719
|
this.type$ = type;
|
|
610
720
|
return this;
|
|
@@ -621,23 +731,36 @@ var RankingBuilder = class {
|
|
|
621
731
|
return this;
|
|
622
732
|
}
|
|
623
733
|
/**
|
|
624
|
-
*
|
|
734
|
+
* クエリパラメータを内部的にセットします。
|
|
735
|
+
* @param obj - セットするパラメータオブジェクト
|
|
736
|
+
* @returns {RankingBuilder} this
|
|
625
737
|
* @private
|
|
626
|
-
* @return {RankingBuilder} this
|
|
627
738
|
*/
|
|
628
739
|
set(obj) {
|
|
629
740
|
Object.assign(this.params, obj);
|
|
630
741
|
return this;
|
|
631
742
|
}
|
|
632
743
|
/**
|
|
633
|
-
*
|
|
634
|
-
*
|
|
744
|
+
* 設定されたパラメータに基づき、なろう小説ランキングAPIへのリクエストを実行します。
|
|
745
|
+
*
|
|
746
|
+
* 返される結果には、Nコード、ポイント、順位が含まれます。
|
|
747
|
+
* @returns {Promise<NarouRankingResult[]>} ランキング結果の配列
|
|
748
|
+
* @see https://dev.syosetu.com/man/rankapi/#output
|
|
635
749
|
*/
|
|
636
750
|
execute() {
|
|
637
|
-
const date = (
|
|
751
|
+
const date = formatDate(this.date$);
|
|
638
752
|
this.set({ rtype: `${date}-${this.type$}` });
|
|
639
753
|
return this.api.executeRanking(this.params);
|
|
640
754
|
}
|
|
755
|
+
/**
|
|
756
|
+
* ランキングAPIを実行し、取得したNコードを元になろう小説APIで詳細情報を取得して結合します。
|
|
757
|
+
*
|
|
758
|
+
* @template TFields - 取得する小説情報のフィールド型
|
|
759
|
+
* @template TOpt - オプショナルな取得フィールドの型
|
|
760
|
+
* @param fields - 取得するフィールドの配列 (省略時はデフォルトフィールド)
|
|
761
|
+
* @param opt - オプショナルな取得フィールド (`weekly` など)
|
|
762
|
+
* @returns {Promise<RankingResult<SearchResultFields<TFields>>[]>} 詳細情報を含むランキング結果の配列
|
|
763
|
+
*/
|
|
641
764
|
async executeWithFields(fields = [], opt) {
|
|
642
765
|
const ranking = await this.execute();
|
|
643
766
|
const fields$ = Array.isArray(fields) ? fields.length == 0 ? [] : [...fields, Fields.ncode] : [fields, Fields.ncode];
|