From 7343f1824a5c0c3485f0339a6a788d866923df9f Mon Sep 17 00:00:00 2001 From: haiyangcui Date: Tue, 3 Nov 2020 14:50:49 +0100 Subject: [PATCH] =?UTF-8?q?=E9=9B=86=E4=B8=AD=E8=B1=86=E7=93=A3=E8=AF=84?= =?UTF-8?q?=E5=88=86=E5=92=8C=E8=B1=86=E7=93=A3=E9=93=BE=E6=8E=A5=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=8A=9F=E8=83=BD=E5=88=B0tools=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Detail.vue | 20 ++------------------ src/lib/site/tools.js | 35 +++++++++++++++++++++++++++-------- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/src/components/Detail.vue b/src/components/Detail.vue index e115ff8..93e684c 100644 --- a/src/components/Detail.vue +++ b/src/components/Detail.vue @@ -256,25 +256,9 @@ export default { } }, doubanLinkEvent () { - const open = require('open') - const axios = require('axios') - const cheerio = require('cheerio') const name = this.detail.info.name.trim() - // 豆瓣搜索链接 - var doubanSearchLink = 'https://www.douban.com/search?q=' + name - var link = doubanSearchLink - axios.get(doubanSearchLink).then(res => { - const $ = cheerio.load(res.data) - // 比较第一和第二豆瓣搜索结果, 如果名字相符, 就打开该链接,否则打开搜索页面 - 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') - } - } + zy.doubanLink(name).then(link => { + const open = require('open') open(link) }) }, diff --git a/src/lib/site/tools.js b/src/lib/site/tools.js index 993c7d4..36c6ab3 100644 --- a/src/lib/site/tools.js +++ b/src/lib/site/tools.js @@ -214,11 +214,11 @@ const zy = { } }, /** - * 获取豆瓣评分 + * 获取豆瓣页面链接 * @param {*} name 视频名称 - * @returns 豆瓣评分 + * @returns 豆瓣页面链接,如果没有搜到该视频,返回搜索页面链接 */ - doubanRate (name) { + doubanLink (name) { return new Promise((resolve, reject) => { // 豆瓣搜索链接 var nameToSearch = name.replace(/\s/g, '') @@ -229,17 +229,38 @@ const zy = { var link = '' var linkInDouban = $($('div.result')[0]).find('div>div>h3>a').first() var nameInDouban = linkInDouban.text().replace(/\s/g, '') - if (nameToSearch.includes(nameInDouban) || nameInDouban.includes(nameToSearch)) { + if (nameToSearch === nameInDouban) { link = linkInDouban.attr('href') } else { linkInDouban = $($('div.result')[1]).find('div>div>h3>a').first() nameInDouban = linkInDouban.text().replace(/\s/g, '') - if (nameToSearch.includes(nameInDouban) || nameInDouban.includes(nameToSearch)) { + if (nameToSearch === nameInDouban) { link = linkInDouban.attr('href') } } - // 如果找到链接,就打开该链接获取评分 if (link) { + resolve(link) + } else { + // 如果没找到符合的链接,返回搜索页面 + resolve(doubanSearchLink) + } + }).catch(err => { + reject(err) + }) + }) + }, + /** + * 获取豆瓣评分 + * @param {*} name 视频名称 + * @returns 豆瓣评分 + */ + doubanRate (name) { + return new Promise((resolve, reject) => { + var nameToSearch = name.replace(/\s/g, '') + this.doubanLink(nameToSearch).then(link => { + if (link.includes('https://www.douban.com/search')) { + resolve('暂无评分') + } else { axios.get(link).then(response => { const parsedHtml = cheerio.load(response.data) var rating = parsedHtml('body').find('#interest_sectl').first().find('strong').first() @@ -251,8 +272,6 @@ const zy = { }).catch(err => { reject(err) }) - } else { - resolve('暂无评分') } }).catch(err => { reject(err)