diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e98683..a6ff14a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,11 @@ # 1.0.3 * 增加`#看看日|周|月|男性向|女性向榜`Pixiv榜单 * 增加`#pid搜图`以Pixiv插画Id搜图 -* 增加`tag搜图`以tag关键词搜图 +* 增加`#tag搜图`以tag关键词搜图 * 增加`#coser` * 增加`#waifu` * 增加`#查看热门tag` +* 增加`#uid搜图`用画师的**uid**或**画师名**进行搜索 # 1.0.2 diff --git a/apps/pixiv.js b/apps/pixiv.js index 9b13309..8e607fc 100644 --- a/apps/pixiv.js +++ b/apps/pixiv.js @@ -20,6 +20,7 @@ let type = { let listreg = new RegExp(`^#?看看(${Object.keys(type).join("|")})榜\\s?(第(\\d+)页)?$`) let tagreg = new RegExp('^#?tag搜图(.*)$', "i") let pidreg = new RegExp('^#?pid搜图(\\d+)$', "i") +let uidreg = new RegExp('^#?uid搜图(.*)$', "i") export class example extends plugin { constructor() { @@ -43,7 +44,11 @@ export class example extends plugin { { reg: '^#?查看热门(t|T)(a|A)(g|G)$', fnc: 'trend_tags' - } + }, + { + reg: uidreg, + fnc: 'saucenaoUid' + }, ] }) } @@ -93,7 +98,7 @@ export class example extends plugin { let date = moment().subtract(day, "days").format("YYYY-MM-DD") - let page = regRet[3] ? regRet[3] : "1" + let page = regRet[3] || "1" let res = await new Pixiv(e).Rank(page, date, mode) @@ -146,5 +151,31 @@ export class example extends plugin { Cfg.getCDsendMsg(e, res, false) } + /**以uid搜图**/ + async saucenaoUid(e) { + if (!e.isMaster) { + if (!Config.Notice.sese) return + } + let regRet = uidreg.exec(e.msg) + + let key = regRet[1] + + let pagereg = new RegExp("第(\\d+)页") + + let page = pagereg.exec(e.msg) + + if (page) { + key = key.replace(page[0], "") + page = page[1] + } else { + page = "1" + } + + let res = await new Pixiv(e).public(key, page) + + if (!res) return + + Cfg.getCDsendMsg(e, res, false) + } } diff --git a/model/Pixiv.js b/model/Pixiv.js index 15bee34..4f994cd 100644 --- a/model/Pixiv.js +++ b/model/Pixiv.js @@ -13,14 +13,12 @@ export default class Pixiv { */ async Worker(ids) { let api = `https://api.imki.moe/api/pixiv/illust?id=${ids}` - let res = await fetch(api).then(res => res.json()).catch(err => console.log(err)) + let res = await this.getfetch(api) - if (!res) { - this.e.reply("接口失效辣!!!") - return false - }; + if (!res) return false if (res.error) { this.e.reply("口字很拉跨,请稍后重试>_<") + this.e.reply(`先用直链解决一下:https://pixiv.re/${ids}.jpg`) return false; } res = res.illust @@ -64,11 +62,8 @@ export default class Pixiv { "week_rookie_manga": "漫画新秀周榜", } let api = `https://api.bbmang.me/ranks?page=${page}&date=${date}&mode=${mode}&pageSize=30` - let res = await fetch(api).then(res => res.json()).catch(err => console.log(err)) - if (!res) { - this.e.reply("接口失效辣!!!") - return false - }; + let res = await this.getfetch(api) + if (!res) return false if (!res.data) { this.e.reply("可能没有榜单哦~") return false @@ -105,11 +100,8 @@ export default class Pixiv { */ async searchTags(tag, page = "1") { let api = `https://www.vilipix.com/api/v1/picture/public?limit=30&tags=${tag}&sort=new&offset=${(page - 1) * 30}` - let res = await fetch(api).then(res => res.json()).catch(err => console.log(err)) - if (!res) { - this.e.reply("接口失效辣!!!") - return false - }; + let res = await this.getfetch(api) + if (!res) return false if (res.data.count == 0) { this.e.reply("呜呜呜,人家没有找到相关的插画>_<") return false; @@ -118,7 +110,7 @@ export default class Pixiv { let pageall = Math.ceil(res.data.count / 30) if (page > pageall) { - this.e.reply(["你他喵的觉得这河里吗!!!", segment.face(215)]) + this.e.reply("啊啊啊,淫家给不了你那么多辣~~") return false } @@ -147,12 +139,9 @@ export default class Pixiv { async gettrend_tags() { let api = "https://api.imki.moe/api/pixiv/tags" - let res = await fetch(api).then(res => res.json()).catch(err => console.log(err)) + let res = await this.getfetch(api) - if (!res) { - this.e.reply("口子太拉,多半是寄了>_<") - return false - } + if (!res) return false if (!res.trend_tags) { this.e.reply("呜呜呜,没有获取到数据>_<") return false @@ -174,4 +163,67 @@ export default class Pixiv { return list } + + + /** + * @description: 用户uid搜图 + * @param {String} uid 用户uid + * @param {String} page 页数 + * @return {Array} + */ + async public(keyword, page = "1") { + let userapi = `https://www.vilipix.com/api/v1/search/user?type=author&keyword=${keyword}&limit=30&offset=0` + let user = await this.getfetch(userapi) + if (!user) return false + if (user.data.count == 0) { + this.e.reply("呜呜呜,人家没有找到这个淫>_<") + return false; + } + let { user_id: uid, nick_name, avatar, desc } = user.data.rows[0] + let api = `https://www.vilipix.com/api/v1/picture/public?sort=new&type=0&author_user_id=${uid}&limit=30&offset=${(page - 1) * 30}` + let res = await this.getfetch(api) + if (!res) return false + if (res.data.count == 0) { + this.e.reply("Σ(っ °Д °;)っ这个淫居然没有插画") + return false; + } + let pageall = Math.ceil(res.data.count / 30) + if (page > pageall) { + this.e.reply("这个淫已经没有涩图给你辣~~") + return false + } + let list = [ + [ + segment.image(avatar), + `\nuid:${uid}\n`, + `画师:${nick_name}\n`, + `介绍:${lodash.truncate(desc)}` + ], + `共找到${res.data.count}张插画`, + `当前为第${page}页,共${pageall}页` + ] + for (let i of res.data.rows) { + let { picture_id, title, regular_url, tags } = i + list.push([ + `标题:${title}\n`, + `插画ID:${picture_id}\n`, + `Tag:${lodash.truncate(tags)}\n`, + segment.image(regular_url) + ]) + } + return list + } + + /** + * @description: 请求api + * @param {String} url 链接 + * @return {Object} + */ + async getfetch(url) { + return await fetch(url).then(res => res.json()).catch(err => { + this.e.reply("接口失效辣!!!") + console.log(err) + return false; + }) + } } \ No newline at end of file