This repository has been archived by the owner on Feb 23, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
115 lines (100 loc) · 3.18 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
const {
searchOnFuraffinity,
searchOnE621,
searchOnE926,
searchOnBooru
} = require("./api/spider")
const { findInMyReadingManga, getComic } = require("./api/comic")
const { canIUse } = require("./api/status")
class Furazy {
constructor() {}
/**
* @description 异步的图片搜索。
* @param {String} name 搜索关键词,多个请用空格区分。如 eevee。
* @param {Int} type 目标网站类型,0: e621,1: FA,2: e926,3: furry.booru.org。默认为 0。
* @param {Int} page 页码,默认为 1。
* @param {Int} limit 每页限制数量,默认为 24。(注意:FA 的 limit 只可为 24,48 或 72,furry.booru.org 不能限制 limit。)
* @return {Array} 包含图片地址,缩略图地址,作者,作者主页的数组,[ {title, preview, image, author, author_url } ]。
*/
async searchImage(name = "", type = 0, page = 1, limit = 10) {
const options = {
name,
type,
page,
limit
}
let res = []
switch (type) {
case 0: {
res = await searchOnE621(options)
break
}
case 1: {
res = await searchOnFuraffinity(options)
break
}
case 2: {
res = await searchOnE926(options)
break
}
case 3: {
res = await searchOnBooru(options)
break
}
default: {
return []
}
}
return res
}
/**
* @description 从 MyReadingManga 搜索漫画,不支持设置每页显示数量。
* @param {String} name 搜索关键词,多个请用空格区分。如 shota。
* @param {Int} sort 0: 热度,1: 随机,2: 从旧到新,3: 从新到旧。
* @param {Int} page 页码,默认为 1。
* @param {String} keywords 自定义搜索参数,勿添加 "&",如 wpsolr_fq[0]=genre_str:Furry。
* @return {Array} 包含同人志信息的数组,[ { title, source, image, tags } ]。
*/
async searchComic(name = "", sort = 0, page = 1, keywords = "") {
const sortOptions = [
"sort_by_random",
"sort_by_relevancy_desc",
"sort_by_date_asc",
"sort_by_date_desc"
]
const options = {
name,
sort: sortOptions[sort],
page,
keywords
}
let res = await findInMyReadingManga(options)
return res
}
/**
* @description 获取 MyReadingManga 的某一本漫画。
* @param {String} comicUrl 漫画地址。
* @return {Array} 同人志漫画图片地址的数组,[ { url1, url2, ... } ]。
*/
async getComic(comicUrl = "") {
let res = await getComic(comicUrl)
return res
}
/**
* @description 网络连接检查,判断目标网站状态码是否为 200。
* @param {Array} sites 欲检查的网站简称,为空则检测全部。可包含: e621, e926, furaffinity, myreadingmanga, booru。
* @return {Object} 检测结果对象,如 { e621: 200 }。
*/
async canIUse(sites = []) {
let sitesOptions = sites
if (
!sitesOptions ||
(sitesOptions instanceof Array && sitesOptions.length == 0)
) {
sitesOptions = ["e621", "e926", "myreadingmanga", "furaffinity", "booru"]
}
let res = await canIUse(sitesOptions)
return res
}
}
module.exports = Furazy