添加user搜索

This commit is contained in:
yeyang
2023-02-01 03:40:10 +08:00
parent 8e7d056b67
commit 2ffd48f9bf
2 changed files with 62 additions and 50 deletions

View File

@@ -22,7 +22,7 @@ export class example extends plugin {
rule: [
{
reg: pidReg,
fnc: 'saucenaoPid'
fnc: 'searchPid'
},
{
reg: rankingrReg,
@@ -30,7 +30,7 @@ export class example extends plugin {
},
{
reg: tagReg,
fnc: 'saucenaoTags'
fnc: 'searchTags'
},
{
reg: '^#?(查看|获取)?热门(t|T)(a|A)(g|G)$',
@@ -38,7 +38,7 @@ export class example extends plugin {
},
{
reg: uidReg,
fnc: 'saucenaoUid'
fnc: 'searchUid'
},
{
reg: randomImgReg,
@@ -51,13 +51,17 @@ export class example extends plugin {
{
reg: '^#?(P|p)ximg(pro)?$',
fnc: 'pximg'
},
{
reg: '^#?user搜索.*$',
fnc: 'searchUser'
}
]
})
}
// pid搜图
async saucenaoPid (e) {
async searchPid (e) {
let { sese, sesepro } = Config.getGroup(e.group_id)
if (!sese && !sesepro && !e.isMaster) return e.reply(SWITCH_ERROR)
@@ -97,7 +101,7 @@ export class example extends plugin {
}
/** 关键词搜图 */
async saucenaoTags (e) {
async searchTags (e) {
let regRet = tagReg.exec(e.msg)
let { sese, sesepro } = Config.getGroup(e.group_id)
@@ -146,7 +150,7 @@ export class example extends plugin {
}
/** 以uid搜图**/
async saucenaoUid (e) {
async searchUid (e) {
let { sese, sesepro } = Config.getGroup(e.group_id)
if (!sese && !sesepro && !e.isMaster) return e.reply(SWITCH_ERROR)
@@ -168,7 +172,7 @@ export class example extends plugin {
}
page = common.translateChinaNum(page)
let res = await Pixiv.public(key, page, !setu.getR18(e.group_id))
let res = await Pixiv.userIllust(key, page, !setu.getR18(e.group_id))
if (res?.error) return e.reply(res.error)
@@ -221,4 +225,19 @@ export class example extends plugin {
if (res?.error) return e.reply(res.error)
ispro ? common.getRecallsendMsg(e, [res]) : common.recallsendMsg(e, res)
}
/** 搜索用户 */
async searchUser (e) {
let { sese, sesepro } = Config.getGroup(e.group_id)
if (!sese && !sesepro && !e.isMaster) return e.reply(SWITCH_ERROR)
e.reply(Pixiv.startMsg)
let regRet = e.msg.match(new RegExp(`^#?user搜索(.*?)(第(${numReg})页)?$`))
console.log(regRet)
let msg = await Pixiv.searchUser(regRet[1], regRet[3], !setu.getR18(e.group_id))
console.log(msg)
if (msg.error) return e.reply(msg.error)
common.getRecallsendMsg(e, msg)
}
}

View File

@@ -256,19 +256,8 @@ export default new class Pixiv {
* @return {*}
*/
async searchTagspro (tag, page = 1, isfilter = true) {
let autocomplete = await fetch(`${this.domain}/search_autocomplete?word=${tag}`).then(res => res.json()).catch(err => console.log(err))
let translated_tag = ''
autocomplete.tags?.some(item => {
if (tag === item.translated_name) {
logger.mark(`[椰奶Pixiv][searchTagspro]替换关键词 ${logger.yellow(tag)}${logger.green(item.name)}`)
translated_tag = item.name
return true
}
return false
})
let api = `${this.domain}/search?word=${translated_tag || tag}&page=${page}&order=popular_desc`
let api = `${this.domain}/search?word=${tag}&page=${page}&order=popular_desc`
let res = await fetch(api).then(res => res.json()).catch(err => console.log(err))
console.log(res)
if (!res) return { error: API_ERROR }
if (res.error) return { error: res.error.message }
if (lodash.isEmpty(res.illusts)) return { error: '宝~没有数据了哦(๑>︶<)و' }
@@ -328,39 +317,23 @@ export default new class Pixiv {
}
/**
* @description: 用户uid搜图
* @description: 搜索用户插画
* @param {Number|String} keyword 用户uid或名称
* @param {Number|String} page 页数
* @param {Boolean} isfilter 是否过滤敏感内容
* @return {Array}
*/
async public (keyword, page = 1, isfilter = true) {
async userIllust (keyword, page = 1, isfilter = true) {
// 关键词搜索
if (!/^\d+$/.test(keyword)) {
let wordapi = `https://www.vilipix.com/api/v1/search/user?type=author&keyword=${keyword}&limit=1&offset=0`
let wordapi = `${this.domain}/search_user?word=${keyword}`
let wordlist = await fetch(wordapi).then(res => res.json()).catch(err => console.log(err))
if (!wordlist) return { error: API_ERROR }
if (lodash.isEmpty(wordlist.data?.rows)) return { error: '呜呜呜人家没有找到这个淫d(ŐдŐ๑)' }
if (lodash.isEmpty(wordlist.user_previews)) return { error: '呜呜呜人家没有找到这个淫d(ŐдŐ๑)' }
keyword = wordlist.data.rows[0].user.id
keyword = wordlist.user_previews[0].user.id
}
// let userapi = `https://api.obfs.dev/api/pixiv/member?id=${keyword}`
// let user = await fetch(userapi).then(res => res.json()).catch(err => console.log(err))
// if (!user) return { error: API_ERROR }
// if (user.error) return { error: user.error.message };
// let { id, name, comment, profile_image_urls } = user.user
// let { total_follow_users, total_illust_bookmarks_public, total_illusts } = user.profile
// let list = [[
// segment.image(profile_image_urls.medium.replace("i.pximg.net", proxy)),
// `\nuid${id}\n`,
// `画师:${name}\n`,
// `作品:${total_illusts}\n`,
// `关注:${total_follow_users}\n`,
// `收藏:${total_illust_bookmarks_public}\n`,
// `介绍:${lodash.truncate(comment)}`
// ]]
// 作品
let api = `${this.domain}/member_illust?id=${keyword}&page=${page}`
let res = await fetch(api).then(res => res.json()).catch(err => console.log(err))
@@ -369,10 +342,6 @@ export default new class Pixiv {
// 没有作品直接返回信息
if (lodash.isEmpty(res.illusts)) return { error: page >= 2 ? '这一页没有作品辣(>人<;)' : 'Σ(っ °Д °;)っ这个淫居然没有作品' }
// let illustsall = Math.ceil(total_illusts / 30)
// if (page > illustsall) return { error: "这个淫已经没有涩图给你辣(oo川)" }
let illusts = []
let filter = 0
let NowNum = res.illusts.length
@@ -393,11 +362,6 @@ export default new class Pixiv {
}
if (lodash.isEmpty(illusts)) return { error: '该页全为涩涩内容已全部过滤(#/。\#)' }
let { id: uid, name, profile_image_urls } = res.user
// list.push(`当前为第${page}页,共${illustsall}页\n本页共${NowNum}张,${filter ? `过滤${filter}张,` : ""}总共${total_illusts}张`)
// if (page < illustsall) {
// list.push(`可使用 "#uid搜图${keyword}第${page - 0 + 1}页" 翻页`)
// }
// list.push(...illusts)
let url = profile_image_urls.medium.replace('i.pximg.net', this.proxy)
return [
[
@@ -410,6 +374,35 @@ export default new class Pixiv {
]
}
async searchUser (word, page = 1, isfilter = true) {
let api = `${this.domain}/search_user?word=${word}&page=${page}&size=10`
let user = await fetch(api).then(res => res.json()).catch(err => console.log(err))
if (!user) return { error: API_ERROR }
if (user.error) return { error: user.error.message }
if (lodash.isEmpty(user.user_previews)) return { error: '呜呜呜人家没有找到这个淫d(ŐдŐ๑)' }
let msg = await Promise.all(user.user_previews.map(async (item, index) => {
let { id, name, profile_image_urls } = item.user
profile_image_urls = profile_image_urls.medium.replace('i.pximg.net', this.proxy)
let ret = [
`${index + 1}`,
await this.proxyFetchImg(profile_image_urls, { headers: this.headers }),
`\nid: ${id}\n`,
`name: ${name}\n`,
'作品:\n'
]
for (let i of item.illusts) {
let { image_urls, x_restrict } = this.format(i)
if (!isfilter && x_restrict) continue
ret.push(await this.proxyFetchImg(image_urls.square_medium), { headers: this.headers })
}
return ret
}))
if (msg.length == 30)msg.unshift(`可尝试使用 "#user搜索${word}${page + 1}页" 翻页`)
msg.unshift(`当前为第${page}页,已${!isfilter ? '开启' : '关闭'}过滤`)
return msg
}
/**
* @description: 随机图片
* @return {Array}