GetBookImg.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. const API = require("../../lib/API.js")
  2. const db = require("../../plugin/DataBase/db.js")
  3. const axios = require("axios")
  4. const { BaseStdResponse } = require("../../BaseStdResponse.js")
  5. class GetBookImg extends API {
  6. constructor() {
  7. super()
  8. this.setPath("/QXS/GetBookImg")
  9. this.setMethod("GET")
  10. this.key = '5a01e72642f02bd0721a56a2bc1dd81a'
  11. }
  12. async getImg(isbn) {
  13. const endpoint = `https://api.tanshuapi.com/api/isbn_base/v1/index?key=${this.key}&isbn=${isbn}`
  14. const res = await axios.get(endpoint, {
  15. proxy: false
  16. })
  17. const data = res.data
  18. if (!data || data.code !== 1) {
  19. if(data?.msg === '查无记录')
  20. return { img: '', pubdate: '', summary: '' }
  21. throw new Error(data?.msg ?? "请稍后再试")
  22. }
  23. const { img, pubdate, summary } = data.data
  24. return { img, pubdate, summary }
  25. }
  26. async onRequest(req, res) {
  27. const { isbn } = req.query
  28. if (!isbn || isbn.length !== 13) {
  29. return res.json({
  30. ...BaseStdResponse.MISSING_PARAMETER,
  31. msg: "请提供正确的ISBN号"
  32. })
  33. }
  34. try {
  35. let sql = 'SELECT img, pubdate, summary FROM book_img WHERE isbn = ?'
  36. let rows = await db.query(sql, [isbn])
  37. let img, pubdate, summary
  38. if (!rows || rows.length === 0) {
  39. ({ img, pubdate, summary } = await this.getImg(isbn))
  40. const time = Date.now()
  41. sql = 'INSERT INTO book_img SET isbn = ?, img = ?, pubdate = ?, summary = ?, create_time = ?'
  42. await db.query(sql, [isbn, img ?? '', pubdate ?? '', summary ?? '', time])
  43. }
  44. else
  45. ({ img, pubdate, summary } = rows[0])
  46. res.json({
  47. ...BaseStdResponse.OK,
  48. data: { img, pubdate, summary }
  49. })
  50. } catch (error) {
  51. this.logger?.error(`${error.stack}`)
  52. return res.json({
  53. ...BaseStdResponse.ERR,
  54. msg: `${error.message ?? "请稍后再试"}`
  55. })
  56. }
  57. }
  58. }
  59. module.exports.GetBookImg = GetBookImg