From 9fd8c60dd53216645e7e1c3fab0e18fe654b700f Mon Sep 17 00:00:00 2001 From: haiyangcui Date: Wed, 28 Oct 2020 23:29:39 +0100 Subject: [PATCH] =?UTF-8?q?"=E8=8E=B7=E5=8F=96=E8=B1=86=E7=93=A3=E8=AF=84?= =?UTF-8?q?=E5=88=86"=E5=8A=9F=E8=83=BD=E5=88=B0tools.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Detail.vue | 33 ++---------------------------- src/lib/site/tools.js | 43 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 31 deletions(-) diff --git a/src/components/Detail.vue b/src/components/Detail.vue index cfbde8f..adfcd57 100644 --- a/src/components/Detail.vue +++ b/src/components/Detail.vue @@ -277,38 +277,9 @@ export default { }) }, getDoubanRate () { - const axios = require('axios') - const cheerio = require('cheerio') const name = this.detail.info.name.trim() - // 豆瓣搜索链接 - var doubanSearchLink = 'https://www.douban.com/search?q=' + name - axios.get(doubanSearchLink).then(res => { - const $ = cheerio.load(res.data) - // 比较第一和第二给豆瓣搜索结果, 看名字是否相符 - var link = '' - var nameInDouban = $($('div.result')[0]).find('div>div>h3>a').first() - if (name.replace(/\s/g, '') === nameInDouban.text().replace(/\s/g, '')) { - link = nameInDouban.attr('href') - } else { - nameInDouban = $($('div.result')[1]).find('div>div>h3>a').first() - if (name.replace(/\s/g, '') === nameInDouban.text().replace(/\s/g, '')) { - link = nameInDouban.attr('href') - } - } - // 如果找到链接,就打开该链接获取评分 - if (link) { - axios.get(link).then(response => { - const parsedHtml = cheerio.load(response.data) - var rating = parsedHtml('body').find('#interest_sectl').first().find('strong').first() - if (rating.text()) { - this.info.rate = rating.text() - } else { - this.info.rate = '暂无评分' - } - }) - } else { - this.info.rate = '暂无评分' - } + zy.doubanRate(name).then(res => { + this.info.rate = res }) }, getDetailInfo () { diff --git a/src/lib/site/tools.js b/src/lib/site/tools.js index 432ce9a..96a75ff 100644 --- a/src/lib/site/tools.js +++ b/src/lib/site/tools.js @@ -1,6 +1,8 @@ import { sites } from '../dexie' import axios from 'axios' import parser from 'fast-xml-parser' +import cheerio from 'cheerio' + const zy = { xmlConfig: { // XML 转 JSON 配置 trimValues: true, @@ -210,6 +212,47 @@ const zy = { } catch (e) { return false } + }, + /** + * 获取豆瓣评分 + * @param {*} name 视频名称 + * @returns 豆瓣评分 + */ + doubanRate (name) { + return new Promise((resolve, reject) => { + // 豆瓣搜索链接 + var doubanSearchLink = 'https://www.douban.com/search?q=' + name + axios.get(doubanSearchLink).then(res => { + const $ = cheerio.load(res.data) + // 比较第一和第二给豆瓣搜索结果, 看名字是否相符 + var link = '' + var nameInDouban = $($('div.result')[0]).find('div>div>h3>a').first() + if (name.replace(/\s/g, '') === nameInDouban.text().replace(/\s/g, '')) { + link = nameInDouban.attr('href') + } else { + nameInDouban = $($('div.result')[1]).find('div>div>h3>a').first() + if (name.replace(/\s/g, '') === nameInDouban.text().replace(/\s/g, '')) { + link = nameInDouban.attr('href') + } + } + // 如果找到链接,就打开该链接获取评分 + if (link) { + axios.get(link).then(response => { + const parsedHtml = cheerio.load(response.data) + var rating = parsedHtml('body').find('#interest_sectl').first().find('strong').first() + if (rating.text()) { + resolve(rating.text()) + } + }).catch(err => { + reject(err) + }) + } else { + resolve('暂无评分') + } + }).catch(err => { + reject(err) + }) + }) } }