| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- const API = require("../../lib/API.js")
- const db = require("../../plugin/DataBase/db.js")
- const axios = require("axios")
- const { BaseStdResponse } = require("../../BaseStdResponse.js")
- class GetBookImg extends API {
- constructor() {
- super()
- this.setPath("/QXS/GetBookImg")
- this.setMethod("GET")
- this.key = '5a01e72642f02bd0721a56a2bc1dd81a'
- }
- async getImg(isbn) {
- const endpoint = `https://api.tanshuapi.com/api/isbn_base/v1/index?key=${this.key}&isbn=${isbn}`
- const res = await axios.get(endpoint, {
- proxy: false
- })
- const data = res.data
- if (!data || data.code !== 1) {
- if(data?.msg === '查无记录')
- return { img: '', pubdate: '', summary: '' }
- throw new Error(data?.msg ?? "请稍后再试")
- }
- const { img, pubdate, summary } = data.data
- return { img, pubdate, summary }
- }
- async onRequest(req, res) {
- const { isbn } = req.query
- if (!isbn || isbn.length !== 13) {
- return res.json({
- ...BaseStdResponse.MISSING_PARAMETER,
- msg: "请提供正确的ISBN号"
- })
- }
- try {
- let sql = 'SELECT img, pubdate, summary FROM book_img WHERE isbn = ?'
- let rows = await db.query(sql, [isbn])
- let img, pubdate, summary
- if (!rows || rows.length === 0) {
- ({ img, pubdate, summary } = await this.getImg(isbn))
- const time = Date.now()
- sql = 'INSERT INTO book_img SET isbn = ?, img = ?, pubdate = ?, summary = ?, create_time = ?'
- await db.query(sql, [isbn, img ?? '', pubdate ?? '', summary ?? '', time])
- }
- else
- ({ img, pubdate, summary } = rows[0])
- res.json({
- ...BaseStdResponse.OK,
- data: { img, pubdate, summary }
- })
- } catch (error) {
- this.logger?.error(`${error.stack}`)
- return res.json({
- ...BaseStdResponse.ERR,
- msg: `${error.message ?? "请稍后再试"}`
- })
- }
- }
- }
- module.exports.GetBookImg = GetBookImg
|