修改椰奶更换代理为pixiv更换代理

This commit is contained in:
yeyang
2023-02-01 14:15:14 +08:00
parent d3d3984302
commit 030c024cf6
3 changed files with 88 additions and 107 deletions

View File

@@ -5,13 +5,15 @@ import { Pixiv, common, setu } from '../model/index.js'
// 文案
const SWITCH_ERROR = '主人没有开放这个功能哦(*/ω\*)'
// 汉字数字匹配正则
let numReg = '[一壹二两三四五六七八九十百千万亿\\d]+'
const numReg = '[一壹二两三四五六七八九十百千万亿\\d]+'
// 正则
let rankingrReg = new RegExp(`^#?看看((\\d{4}-\\d{1,2}-\\d{1,2})的)?(${Object.keys(Pixiv.ranktype).join('|')})(r18)?榜\\s?(第(${numReg})页)?$`, 'i')
let tagReg = /^#?tag(pro)?搜图(.*)$/i
let pidReg = /^#?pid搜图\s?(\d+)$/i
let uidReg = /^#?uid搜图(.*)$/i
let randomImgReg = new RegExp(`^#?(${numReg})?张(好(康|看)(的|哒)|hkd|涩图)$|#有内鬼$`)
const pidReg = /^#?pid搜图\s?(\d+)$/i
const rankingrReg = new RegExp(`^#?看看((\\d{4}-\\d{1,2}-\\d{1,2})的)?(${Object.keys(Pixiv.ranktype).join('|')})(r18)?榜\\s?(第(${numReg})页)?$`, 'i')
const tagReg = new RegExp(`^#?tag(pro)?搜图(.*?)(第(${numReg})页)?$`, 'i')
const uidReg = new RegExp(`^#?uid搜图(.*?)(第(${numReg})页)?$`, 'i')
const searchUser = new RegExp(`^#?user搜索(.*?)(第(${numReg})页)?$`, 'i')
const randomImgReg = new RegExp(`^#?来(${numReg})?张(好(康|看)(的|哒)|hkd|涩图)$|#有内鬼$`)
export class example extends plugin {
constructor () {
@@ -32,29 +34,34 @@ export class example extends plugin {
reg: tagReg,
fnc: 'searchTags'
},
{
reg: '^#?(查看|获取)?热门(t|T)(a|A)(g|G)$',
fnc: 'trendTags'
},
{
reg: uidReg,
fnc: 'searchUid'
},
{
reg: searchUser,
fnc: 'searchUser'
},
{
reg: randomImgReg,
fnc: 'randomImg'
},
{
reg: '^#?(查看|获取)?热门(t|T)(a|A)(g|G)$',
fnc: 'trendTags'
},
{
reg: '^#?看?看?相关作品(\\d+)$',
fnc: 'relatedWorks'
fnc: 'related'
},
{
reg: '^#?(P|p)ximg(pro)?$',
fnc: 'pximg'
},
{
reg: '^#?user搜索.*$',
fnc: 'searchUser'
reg: '^#(p站|pixiv)((查看|更换)代理.*|(开启|关闭)直连)$',
fnc: 'setProxy',
permission: 'master'
}
]
})
@@ -69,7 +76,7 @@ export class example extends plugin {
let regRet = pidReg.exec(e.msg)
let res = await Pixiv.Worker(regRet[1], !e.isMaster && !setu.getR18(e.group_id))
let res = await Pixiv.illust(regRet[1], !e.isMaster && !setu.getR18(e.group_id))
if (res?.error) return e.reply(res.error)
@@ -90,7 +97,7 @@ export class example extends plugin {
e.reply(Pixiv.startMsg)
let page = common.translateChinaNum(regRet[6] || 1)
let page = common.translateChinaNum(regRet[6])
let res = await Pixiv.Rank(page, regRet[2], regRet[3], regRet[4])
if (res?.error) return e.reply(res.error)
@@ -105,44 +112,25 @@ export class example extends plugin {
let regRet = tagReg.exec(e.msg)
let { sese, sesepro } = Config.getGroup(e.group_id)
if (((!sese && !sesepro) || (!sesepro && regRet[1])) && !e.isMaster) {
return e.reply('主人没有开放这个功能哦(*/ω\*)')
}
if (((!sese && !sesepro) || (!sesepro && regRet[1])) && !e.isMaster) return e.reply(SWITCH_ERROR)
e.reply(Pixiv.startMsg)
let tag = regRet[2]
let pagereg = new RegExp(`第(${numReg})页`)
let page = pagereg.exec(e.msg)
if (page) {
tag = tag.replace(page[0], '')
page = common.translateChinaNum(page[1])
} else {
page = '1'
}
let res = null
if (regRet[1]) {
res = await Pixiv.searchTagspro(tag, page, !setu.getR18(e.group_id))
} else {
res = await Pixiv.searchTags(tag, page)
}
let page = common.translateChinaNum(regRet[4])
let res = await Pixiv[`searchTags${regRet[1] ? 'pro' : ''}`](regRet[2], page, !setu.getR18(e.group_id))
if (res?.error) return e.reply(res.error)
common.getRecallsendMsg(e, res)
return true
common.getRecallsendMsg(e, res)
}
/** 获取热门tag */
async trendTags (e) {
async PopularTags (e) {
let { sese, sesepro } = Config.getGroup(e.group_id)
if (!sese && !sesepro && !e.isMaster) return e.reply(SWITCH_ERROR)
e.reply(Pixiv.startMsg)
let res = await Pixiv.gettrend_tags()
let res = await Pixiv.PopularTags()
if (res?.error) return e.reply(res.error)
@@ -157,22 +145,9 @@ export class example extends plugin {
e.reply(Pixiv.startMsg)
let regRet = uidReg.exec(e.msg)
let page = common.translateChinaNum(regRet[3])
let key = regRet[1]
let pagereg = new RegExp(`第(${numReg})页`)
let page = pagereg.exec(e.msg)
if (page) {
key = key.replace(page[0], '')
page = page[1]
} else {
page = '1'
}
page = common.translateChinaNum(page)
let res = await Pixiv.userIllust(key, page, !setu.getR18(e.group_id))
let res = await Pixiv.userIllust(regRet[1], page, !setu.getR18(e.group_id))
if (res?.error) return e.reply(res.error)
@@ -194,7 +169,7 @@ export class example extends plugin {
num = 1
}
num = common.translateChinaNum(num)
let res = await Pixiv.getrandomimg(num)
let res = await Pixiv.randomImg(num)
if (res?.error) return e.reply(res.error)
@@ -202,14 +177,14 @@ export class example extends plugin {
}
// 相关作品
async relatedWorks (e) {
async related (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(/\d+/)
let res = await Pixiv.getrelated_works(regRet[0], !setu.getR18(e.group_id))
let res = await Pixiv.related(regRet[0], !setu.getR18(e.group_id))
if (res?.error) return e.reply(res.error)
common.getRecallsendMsg(e, res)
}
@@ -221,7 +196,7 @@ export class example extends plugin {
let { sese, sesepro } = Config.getGroup(e.group_id)
if (((!sese && !sesepro) || (!sesepro && ispro)) && !e.isMaster) return e.reply(SWITCH_ERROR)
let res = await Pixiv.getPximg(ispro)
let res = await Pixiv.pximg(ispro)
if (res?.error) return e.reply(res.error)
ispro ? common.getRecallsendMsg(e, [res]) : common.recallsendMsg(e, res)
}
@@ -232,11 +207,31 @@ export class example extends plugin {
if (!sese && !sesepro && !e.isMaster) return e.reply(SWITCH_ERROR)
e.reply(Pixiv.startMsg)
let regRet = e.msg.match(new RegExp(`^#?user搜索(.*?)(第(${numReg})页)?$`))
let regRet = e.msg.match(searchUser)
let page = common.translateChinaNum(regRet[3])
let msg = await Pixiv.searchUser(regRet[1], page, !setu.getR18(e.group_id))
if (msg.error) return e.reply(msg.error)
common.getRecallsendMsg(e, msg)
}
// 更换代理
async setProxy (e) {
let proxydef = [
'i.pixiv.re',
'proxy.pixivel.moe',
'px2.rainchan.win',
'sex.nyan.xyz'
]
if (/查看/.test(e.msg)) return e.reply(await redis.get('yenai:proxy'))
let proxy = e.msg.replace(/#|(p站|pixiv)更换代理/g, '').trim()
if (/直连/.test(e.msg)) {
proxy = /开启/.test(e.msg) ? 'i.pximg.net' : proxydef[0]
}
if (/^[1234]$/.test(proxy)) proxy = proxydef[proxy - 1]
if (!/([\w\d]+\.){2}[\w\d]+/.test(proxy)) return e.reply('请检查代理地址是否正确')
logger.mark(`${e.logFnc}切换为${proxy}`)
Pixiv.proxy = proxy
e.reply(`✅ 已经切换代理为「${proxy}`)
}
}

View File

@@ -2,7 +2,7 @@ import plugin from '../../../lib/plugins/plugin.js'
import fs from 'fs'
import lodash from 'lodash'
import { Config } from '../components/index.js'
import { setu, puppeteer, Pixiv } from '../model/index.js'
import { setu, puppeteer } from '../model/index.js'
const configs = {
好友消息: 'privateMessage',
群消息: 'groupMessage',
@@ -61,16 +61,6 @@ export class NewConfig extends plugin {
fnc: 'SetAll',
permission: 'master'
},
{
reg: '^#椰奶(查看|更换)代理.*$',
fnc: 'proxy',
permission: 'master'
},
{
reg: '^#(开启|关闭)(p站|pixiv)直连$',
fnc: 'proxy',
permission: 'master'
},
{
reg: '^#(增加|减少|查看)头衔屏蔽词.*$',
fnc: 'NoTitle',
@@ -205,29 +195,6 @@ export class NewConfig extends plugin {
})
}
// 更换代理
async proxy (e) {
let proxykey = 'yenai:proxy'
let proxydef = [
'i.pixiv.re',
'proxy.pixivel.moe',
'px2.rainchan.win',
'sex.nyan.xyz'
]
if (/查看/.test(e.msg)) return e.reply(await redis.get(proxykey))
let proxy = e.msg.replace(/#|椰奶更换代理/g, '').trim()
if (/直连/.test(e.msg)) {
proxy = /开启/.test(e.msg) ? 'i.pximg.net' : proxydef[0]
}
if (/^[1234]$/.test(proxy)) proxy = proxydef[proxy - 1]
if (!/([\w\d]+\.){2}[\w\d]+/.test(proxy)) return e.reply('请检查代理地址是否正确')
logger.mark(`${e.logFnc}切换为${proxy}`)
await redis.set(proxykey, proxy)
.then(() => e.reply(`✅ 已经切换代理为「${proxy}`))
.catch(err => console.log(err))
Pixiv.init()
}
// 查看涩涩设置
async View_Settings (e) {
let set = setu.getSeSeConfig(e)

View File

@@ -8,8 +8,7 @@ const API_ERROR = '❎ 出错辣,请稍后重试'
export default new class Pixiv {
constructor () {
this.proxy = 'i.pixiv.re'
this.headers = {}
this._proxy = 'i.pixiv.re'
this.ranktype = {
: {
type: 'day',
@@ -80,28 +79,41 @@ export default new class Pixiv {
}
async init () {
this.proxy = await redis.get('yenai:proxy')
this._proxy = await redis.get('yenai:proxy')
if (!this.proxy) {
await redis.set('yenai:proxy', 'i.pixiv.re')
this.proxy = 'i.pixiv.re'
this._proxy = 'i.pixiv.re'
}
}
get headers () {
if (this.proxy == 'i.pximg.net') {
this.headers = {
return {
Host: 'i.pximg.net',
Referer: 'https://www.pixiv.net/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.46'
}
} else {
delete this.headers
return undefined
}
}
get proxy () {
console.log('proxy' + this._proxy)
return this._proxy
}
set proxy (value) {
redis.set('yenai:proxy', value)
this._proxy = value
}
/**
* @description: 获取插画信息
* @param {String} ids 插画ID
* @return {Object}
*/
async Worker (ids, filter = false) {
async illust (ids, filter = false) {
let api = `${this.domain}/illust?id=${ids}`
let res = await fetch(api).then(res => res.json()).catch(err => console.log(err))
if (!res) return { error: API_ERROR }
@@ -136,7 +148,7 @@ export default new class Pixiv {
}
return { error: linkmsg }
}
console.log(this.headers)
let img = await Promise.all(url.map(async item => await this.proxyFetchImg(item, { headers: this.headers })))
return { msg, img }
}
@@ -299,7 +311,7 @@ export default new class Pixiv {
* @description: 获取热门tag
* @return {Array}
*/
async gettrend_tags () {
async PopularTags () {
let api = `${this.domain}/tags`
let res = await fetch(api).then(res => res.json()).catch(err => console.log(err))
@@ -380,6 +392,13 @@ export default new class Pixiv {
]
}
/**
* @description:搜索用户
* @param {String} word 用户name
* @param {Number} page 页数
* @param {Boolean} isfilter 是否过滤敏感内容
* @return {Array} 可直接发送的消息数组
*/
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))
@@ -413,7 +432,7 @@ export default new class Pixiv {
* @description: 随机图片
* @return {Array}
*/
async getrandomimg (num) {
async randomImg (num) {
let api = `https://www.vilipix.com/api/v1/picture/public?limit=${num}&offset=${lodash.random(1500)}&sort=hot&type=0`
let res = await fetch(api).then(res => res.json()).catch(err => console.log(err))
if (!res) return { error: API_ERROR }
@@ -438,7 +457,7 @@ export default new class Pixiv {
* @param {String} pid
* @return {*}
*/
async getrelated_works (pid, isfilter = true) {
async related (pid, isfilter = true) {
let api = `${this.domain}/related?id=${pid}`
let res = await fetch(api).then(res => res.json()).catch(err => console.log(err))
if (!res) return { error: API_ERROR }
@@ -472,7 +491,7 @@ export default new class Pixiv {
}
/** p站单图 */
async getPximg (type) {
async pximg (type) {
let url = 'https://ovooa.com/API/Pximg/'
if (type) {
url = 'https://xiaobapi.top/api/xb/api/setu.php'
@@ -480,7 +499,7 @@ export default new class Pixiv {
let res = await fetch(url).then(res => res.json()).catch(err => console.log(err))
if (!res) return { error: API_ERROR }
let { pid, uid, title, author, tags, urls, r18 } = res.data[0] || res.data
urls = urls.original.replace('i.der.ink', this.proxy)
urls = urls.original.replace(/i.der.ink|i.pixiv.re/, this.proxy)
let msg = [
`Pid: ${pid}\n`,
`Uid: ${uid}\n`,