From 392f0fd3268785f2d765d07a5852e1b310412ffe Mon Sep 17 00:00:00 2001 From: haiyangcui Date: Thu, 24 Dec 2020 13:04:01 +0100 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E8=B1=86=E7=93=A3=E6=90=9C?= =?UTF-8?q?=E7=B4=A2,=E5=8C=B9=E9=85=8D=E5=90=8D=E5=AD=97=E5=92=8C?= =?UTF-8?q?=E5=B9=B4=E4=BB=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Detail.vue | 12 +++++++----- src/lib/site/tools.js | 25 ++++++++++++------------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/components/Detail.vue b/src/components/Detail.vue index d42be99..3525a03 100644 --- a/src/components/Detail.vue +++ b/src/components/Detail.vue @@ -241,19 +241,21 @@ export default { this.share = { show: true, key: this.detail.key, - info: this.detail.info + info: this.info } }, doubanLinkEvent () { - const name = this.detail.info.name.trim() - zy.doubanLink(name).then(link => { + const name = this.info.name.trim() + const year = this.info.year + zy.doubanLink(name, year).then(link => { const open = require('open') open(link) }) }, getDoubanRate () { - const name = this.detail.info.name.trim() - zy.doubanRate(name).then(res => { + const name = this.info.name.trim() + const year = this.info.year + zy.doubanRate(name, year).then(res => { this.info.rate = res }) }, diff --git a/src/lib/site/tools.js b/src/lib/site/tools.js index 6bb5d4b..3c89a5c 100644 --- a/src/lib/site/tools.js +++ b/src/lib/site/tools.js @@ -325,28 +325,26 @@ const zy = { /** * 获取豆瓣页面链接 * @param {*} name 视频名称 + * @param {*} year 视频年份 * @returns 豆瓣页面链接,如果没有搜到该视频,返回搜索页面链接 */ - doubanLink (name) { + doubanLink (name, year) { return new Promise((resolve, reject) => { // 豆瓣搜索链接 var nameToSearch = name.replace(/\s/g, '') var doubanSearchLink = 'https://www.douban.com/search?q=' + nameToSearch axios.get(doubanSearchLink).then(res => { const $ = cheerio.load(res.data) - // 比较第一和第二给豆瓣搜索结果, 看名字是否相符 + // 查询所有搜索结果, 看名字和年代是否相符 var link = '' - var linkInDouban = $($('div.result')[0]).find('div>div>h3>a').first() - var nameInDouban = linkInDouban.text().replace(/\s/g, '') - 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 === nameInDouban) { + $('div.result').each(function () { + var linkInDouban = $(this).find('div>div>h3>a').first() + var nameInDouban = linkInDouban.text().replace(/\s/g, '') + var subjectCast = $(this).find('span.subject-cast').text() + if (nameToSearch === nameInDouban && subjectCast && subjectCast.includes(year)) { link = linkInDouban.attr('href') } - } + }) if (link) { resolve(link) } else { @@ -361,12 +359,13 @@ const zy = { /** * 获取豆瓣评分 * @param {*} name 视频名称 + * @param {*} year 视频年份 * @returns 豆瓣评分 */ - doubanRate (name) { + doubanRate (name, year) { return new Promise((resolve, reject) => { var nameToSearch = name.replace(/\s/g, '') - this.doubanLink(nameToSearch).then(link => { + this.doubanLink(nameToSearch, year).then(link => { if (link.includes('https://www.douban.com/search')) { resolve('暂无评分') } else {