修改椰奶更换代理为pixiv更换代理
This commit is contained in:
115
apps/pixiv.js
115
apps/pixiv.js
@@ -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}」`)
|
||||
}
|
||||
}
|
||||
|
||||
35
apps/set.js
35
apps/set.js
@@ -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)
|
||||
|
||||
@@ -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`,
|
||||
|
||||
Reference in New Issue
Block a user