增加一个查询问题的接口
This commit is contained in:
parent
73f0b7639a
commit
4bf41b2460
@ -22,6 +22,7 @@
|
||||
"alipay-sdk": "^3.1.4",
|
||||
"axios": "^0.21.1",
|
||||
"bson": "^4.0.4",
|
||||
"cheerio": "^1.0.0-rc.6",
|
||||
"debug": "^4.3.1",
|
||||
"dotenv": "^8.2.0",
|
||||
"fast-rbac": "^1.3.0",
|
||||
@ -32,10 +33,12 @@
|
||||
"fastify-helmet": "^5.0.3",
|
||||
"fastify-jwt": "^2.2.0",
|
||||
"fastify-plugin": "^3.0.0",
|
||||
"iconv-lite": "^0.6.2",
|
||||
"mime-types": "^2.1.27",
|
||||
"mongoose": "5.10.3",
|
||||
"mongoose-findorcreate": "^3.0.0",
|
||||
"qrcode": "^1.4.4",
|
||||
"querystring": "^0.2.1",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"svg-captcha": "^1.4.0",
|
||||
"tracer": "^1.0.3",
|
||||
|
11
src/admin/controllers/help.controller.ts
Normal file
11
src/admin/controllers/help.controller.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import BaseController from '../../common/base.controller'
|
||||
import { router } from '../../decorators/router'
|
||||
import { queryKey } from '../../services/Sheup'
|
||||
|
||||
class HelpController extends BaseController{
|
||||
@router('get /queryhelp')
|
||||
async queryHelp(req, res) {
|
||||
let { str } = req.params
|
||||
return await queryKey(str)
|
||||
}
|
||||
}
|
@ -78,18 +78,34 @@ class ShopClass extends BaseModule {
|
||||
@noJson()
|
||||
@prop({default: true})
|
||||
public show: boolean
|
||||
|
||||
/**
|
||||
* 店铺logo
|
||||
* @type {string}
|
||||
*/
|
||||
@prop()
|
||||
public logo: string
|
||||
|
||||
/**
|
||||
* 店铺的行业分类
|
||||
* @type {string}
|
||||
*/
|
||||
@prop()
|
||||
public category: string
|
||||
/**
|
||||
* 扩展信息, 现在存储当前店铺在腾讯地图上的解析出来的id
|
||||
* @type {string}
|
||||
*/
|
||||
@prop()
|
||||
public extData: string
|
||||
|
||||
/**
|
||||
* 店铺当前选择的游戏
|
||||
* @type {GameInfo}
|
||||
*/
|
||||
@prop()
|
||||
public gameInfo?: GameInfo
|
||||
|
||||
@prop()
|
||||
public qtypes: string[]
|
||||
|
||||
|
||||
public static parseQueryParam(params) {
|
||||
let {key, timeBegin, timeEnd} = params
|
||||
|
78
src/services/Sheup.ts
Normal file
78
src/services/Sheup.ts
Normal file
@ -0,0 +1,78 @@
|
||||
import axios from 'axios'
|
||||
const iconv = require('iconv-lite')
|
||||
const cheerio = require('cheerio')
|
||||
|
||||
export async function queryKey(str: string) {
|
||||
let url = 'https://m.sheup.net/m/info_tiku_2.php'
|
||||
let gbkBuffer = iconv.encode(str,'gb2312');
|
||||
let tempStr = ''
|
||||
for (let i = 0;i<gbkBuffer.length;i++){
|
||||
tempStr += '%' + gbkBuffer[i].toString(16);
|
||||
}
|
||||
let searchData = `search_key=${tempStr.toUpperCase()}`
|
||||
let reqConfig = {
|
||||
method: 'post',
|
||||
url,
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
'Referer': 'https://m.sheup.net/m/info_tiku_3.php?id=18674&s=1238609075',
|
||||
'Cookie': 'UM_distinctid=17906df2e9cadb-017c04b723193d-11114659-1fa400-17906df2e9d22f; CNZZDATA1254461403=1890486453-1619315531-%7C1619315531'
|
||||
},
|
||||
responseType: 'arraybuffer',
|
||||
data: searchData
|
||||
}
|
||||
// @ts-ignore
|
||||
const res = await axios(reqConfig)
|
||||
let html = iconv.decode(res.data, "gb2312");
|
||||
const $ = cheerio.load(html, { decodeEntities: false })
|
||||
const $list = $('.li_b')
|
||||
let results = []
|
||||
for (let s of $list) {
|
||||
// console.log($(s).find('a').text())
|
||||
// console.log($(s).find('a').attr('href'))
|
||||
const subUrl = $(s).find('a').attr('href')
|
||||
results.push(await getDetail(subUrl))
|
||||
}
|
||||
return results
|
||||
}
|
||||
|
||||
export async function getDetail(suburl: string) {
|
||||
const url = `https://m.sheup.net/m/${suburl}`
|
||||
let reqConfig = {
|
||||
method: 'get',
|
||||
url,
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
'Referer': 'https://m.sheup.net/m/info_tiku_3.php?id=18674&s=1238609075',
|
||||
'Cookie': 'UM_distinctid=17906df2e9cadb-017c04b723193d-11114659-1fa400-17906df2e9d22f; CNZZDATA1254461403=1890486453-1619315531-%7C1619315531'
|
||||
},
|
||||
responseType: 'arraybuffer',
|
||||
}
|
||||
// @ts-ignore
|
||||
const res = await axios(reqConfig)
|
||||
let html = iconv.decode(res.data, "gb2312");
|
||||
const $ = cheerio.load(html, { decodeEntities: false })
|
||||
let result: any = {}
|
||||
const title = $('.ab1_title').text()
|
||||
result.title = title.trimStart().trimEnd()
|
||||
const sp = $('.ab1_rank2l').find('p')
|
||||
result.qs = []
|
||||
if (sp.length > 1) {
|
||||
let desc = $(sp[1]).text().trim().replace('分类:', '').replace('难易度:', '|').split('|')
|
||||
result.cate = desc[0]
|
||||
result.level = desc[1]
|
||||
}
|
||||
for (let i = 2; i < sp.length; i++) {
|
||||
let a = $(sp[i]).text().trimStart().trimEnd().replace(/选项.+?:/g, '')
|
||||
if (a) {
|
||||
result.qs.push(a)
|
||||
}
|
||||
}
|
||||
let ap = $('.tiku_answer').find('p')
|
||||
if (ap.length > 1) {
|
||||
result.answer = $(ap[1]).text().replace(/选项.+?:/g, '').replace('、', '')
|
||||
} else {
|
||||
result.answer = $(ap[0]).text()
|
||||
}
|
||||
return result
|
||||
}
|
122
yarn.lock
122
yarn.lock
@ -309,6 +309,11 @@ bluebird@3.5.1:
|
||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
|
||||
integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==
|
||||
|
||||
boolbase@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
|
||||
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.11"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||
@ -423,6 +428,29 @@ chalk@^2.0.0, chalk@^2.3.0:
|
||||
escape-string-regexp "^1.0.5"
|
||||
supports-color "^5.3.0"
|
||||
|
||||
cheerio-select@^1.3.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.4.0.tgz#3a16f21e37a2ef0f211d6d1aa4eff054bb22cdc9"
|
||||
integrity sha512-sobR3Yqz27L553Qa7cK6rtJlMDbiKPdNywtR95Sj/YgfpLfy0u6CGJuaBKe5YE/vTc23SCRKxWSdlon/w6I/Ew==
|
||||
dependencies:
|
||||
css-select "^4.1.2"
|
||||
css-what "^5.0.0"
|
||||
domelementtype "^2.2.0"
|
||||
domhandler "^4.2.0"
|
||||
domutils "^2.6.0"
|
||||
|
||||
cheerio@^1.0.0-rc.6:
|
||||
version "1.0.0-rc.6"
|
||||
resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.6.tgz#a5ae81ab483aeefa1280c325543c601145506240"
|
||||
integrity sha512-hjx1XE1M/D5pAtMgvWwE21QClmAEeGHOIDfycgmndisdNgI6PE1cGRQkMGBcsbUbmEQyWu5PJLUcAOjtQS8DWw==
|
||||
dependencies:
|
||||
cheerio-select "^1.3.0"
|
||||
dom-serializer "^1.3.1"
|
||||
domhandler "^4.1.0"
|
||||
htmlparser2 "^6.1.0"
|
||||
parse5 "^6.0.1"
|
||||
parse5-htmlparser2-tree-adapter "^6.0.1"
|
||||
|
||||
cliui@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
|
||||
@ -496,6 +524,22 @@ crypto-js@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.0.0.tgz#2904ab2677a9d042856a2ea2ef80de92e4a36dcc"
|
||||
integrity sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==
|
||||
|
||||
css-select@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.2.tgz#8b52b6714ed3a80d8221ec971c543f3b12653286"
|
||||
integrity sha512-nu5ye2Hg/4ISq4XqdLY2bEatAcLIdt3OYGFc9Tm9n7VSlFBcfRv0gBNksHRgSdUDQGtN3XrZ94ztW+NfzkFSUw==
|
||||
dependencies:
|
||||
boolbase "^1.0.0"
|
||||
css-what "^5.0.0"
|
||||
domhandler "^4.2.0"
|
||||
domutils "^2.6.0"
|
||||
nth-check "^2.0.0"
|
||||
|
||||
css-what@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.0.tgz#f0bf4f8bac07582722346ab243f6a35b512cfc47"
|
||||
integrity sha512-qxyKHQvgKwzwDWC/rGbT821eJalfupxYW2qbSJSAtdSTimsr/MlaGONoNLllaUPZWf8QnbcKM/kPVYUQuEKAFA==
|
||||
|
||||
dashdash@^1.12.0:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
|
||||
@ -616,6 +660,36 @@ dijkstrajs@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.1.tgz#d3cd81221e3ea40742cfcde556d4e99e98ddc71b"
|
||||
integrity sha1-082BIh4+pAdCz83lVtTpnpjdxxs=
|
||||
|
||||
dom-serializer@^1.0.1, dom-serializer@^1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.1.tgz#d845a1565d7c041a95e5dab62184ab41e3a519be"
|
||||
integrity sha512-Pv2ZluG5ife96udGgEDovOOOA5UELkltfJpnIExPrAk1LTvecolUGn6lIaoLh86d83GiB86CjzciMd9BuRB71Q==
|
||||
dependencies:
|
||||
domelementtype "^2.0.1"
|
||||
domhandler "^4.0.0"
|
||||
entities "^2.0.0"
|
||||
|
||||
domelementtype@^2.0.1, domelementtype@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
|
||||
integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
|
||||
|
||||
domhandler@^4.0.0, domhandler@^4.1.0, domhandler@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059"
|
||||
integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==
|
||||
dependencies:
|
||||
domelementtype "^2.2.0"
|
||||
|
||||
domutils@^2.5.2, domutils@^2.6.0:
|
||||
version "2.6.0"
|
||||
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.6.0.tgz#2e15c04185d43fb16ae7057cb76433c6edb938b7"
|
||||
integrity sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==
|
||||
dependencies:
|
||||
dom-serializer "^1.0.1"
|
||||
domelementtype "^2.2.0"
|
||||
domhandler "^4.2.0"
|
||||
|
||||
dotenv@*, dotenv@^8.2.0:
|
||||
version "8.2.0"
|
||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
|
||||
@ -653,6 +727,11 @@ end-of-stream@^1.1.0:
|
||||
dependencies:
|
||||
once "^1.4.0"
|
||||
|
||||
entities@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
|
||||
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
|
||||
|
||||
escape-html@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
|
||||
@ -1048,6 +1127,16 @@ helmet@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/helmet/-/helmet-4.5.0.tgz#da5a75d30cbd9f60628e9463a85dc7725806c2ea"
|
||||
integrity sha512-GfxdTaKarneWOpxmiVb/1YsY+fIwDOxVUGrvNEM1MC8W6Z2PREfkXiWF4XHQdvkyXwUTHuY4DRwB0uH/Q6BVyQ==
|
||||
|
||||
htmlparser2@^6.1.0:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
|
||||
integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
|
||||
dependencies:
|
||||
domelementtype "^2.0.1"
|
||||
domhandler "^4.0.0"
|
||||
domutils "^2.5.2"
|
||||
entities "^2.0.0"
|
||||
|
||||
http-errors@1.7.3:
|
||||
version "1.7.3"
|
||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
|
||||
@ -1110,6 +1199,13 @@ iconv-lite@0.4.24, iconv-lite@^0.4.15, iconv-lite@~0.4.11:
|
||||
dependencies:
|
||||
safer-buffer ">= 2.1.2 < 3"
|
||||
|
||||
iconv-lite@^0.6.2:
|
||||
version "0.6.2"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01"
|
||||
integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==
|
||||
dependencies:
|
||||
safer-buffer ">= 2.1.2 < 3.0.0"
|
||||
|
||||
ieee754@^1.1.13:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
|
||||
@ -1533,6 +1629,13 @@ netmask@^2.0.1:
|
||||
resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7"
|
||||
integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==
|
||||
|
||||
nth-check@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125"
|
||||
integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==
|
||||
dependencies:
|
||||
boolbase "^1.0.0"
|
||||
|
||||
oauth-sign@~0.9.0:
|
||||
version "0.9.0"
|
||||
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
|
||||
@ -1632,6 +1735,18 @@ pac-resolver@^4.1.0:
|
||||
ip "^1.1.5"
|
||||
netmask "^2.0.1"
|
||||
|
||||
parse5-htmlparser2-tree-adapter@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6"
|
||||
integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==
|
||||
dependencies:
|
||||
parse5 "^6.0.1"
|
||||
|
||||
parse5@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
|
||||
integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
|
||||
|
||||
path-exists@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
|
||||
@ -1758,6 +1873,11 @@ qs@~6.5.2:
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
|
||||
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
|
||||
|
||||
querystring@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd"
|
||||
integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==
|
||||
|
||||
queue-microtask@^1.1.2:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
|
||||
@ -1919,7 +2039,7 @@ safe-regex2@^2.0.0:
|
||||
dependencies:
|
||||
ret "~0.2.0"
|
||||
|
||||
"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
|
||||
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
Loading…
x
Reference in New Issue
Block a user