diff --git a/src/components/Detail.vue b/src/components/Detail.vue index 6c08233..558dea6 100644 --- a/src/components/Detail.vue +++ b/src/components/Detail.vue @@ -181,11 +181,8 @@ export default { ids: this.info.id, site: this.detail.site, name: this.info.name, - type: this.info.type, - year: this.info.year, - note: this.info.note, - last: this.info.last - + detail: this.info, + rate: this.info.rate } star.add(docs).then(res => { this.$message.success('收藏成功') @@ -281,38 +278,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/components/Film.vue b/src/components/Film.vue index 0c8e728..3db3368 100644 --- a/src/components/Film.vue +++ b/src/components/Film.vue @@ -327,18 +327,17 @@ export default { if (db) { this.$message.info('已存在') } else { - const docs = { - key: site.key, - ids: e.id, - site: site, - name: e.name, - type: e.type, - year: e.year, - last: e.last, - note: e.note - } - star.add(docs).then(res => { - this.$message.success('收藏成功') + zy.detail(site.key, e.id).then(detailRes => { + const docs = { + key: site.key, + ids: e.id, + site: site, + name: e.name, + detail: detailRes + } + star.add(docs).then(res => { + this.$message.success('收藏成功') + }) }) } }, diff --git a/src/components/Play.vue b/src/components/Play.vue index f06d139..48d9d01 100644 --- a/src/components/Play.vue +++ b/src/components/Play.vue @@ -545,19 +545,18 @@ export default { } }) } else { - const docs = { - key: this.video.key, - ids: info.id, - name: info.name, - type: info.type, - year: info.year, - last: info.last, - note: info.note, - index: info.index - } - star.add(docs).then(res => { - this.$message.success('收藏成功') - this.isStar = true + zy.detail(this.video.key, info.id).then(detailRes => { + const docs = { + key: this.video.key, + ids: info.id, + name: info.name, + detail: detailRes, + index: info.index + } + star.add(docs).then(res => { + this.$message.success('收藏成功') + this.isStar = true + }) }) } }, diff --git a/src/components/Star.vue b/src/components/Star.vue index f75435b..dd5c1fd 100644 --- a/src/components/Star.vue +++ b/src/components/Star.vue @@ -2,12 +2,13 @@
+ 导出 导入 清空 同步所有收藏
-
+
+ label="源站"> - + + { + zy.detail(e.key, e.ids).then(detailRes => { var doc = { id: e.id, key: e.key, - ids: res.id, - site: res.site, - name: res.name, - type: res.type, - year: res.year, - note: res.note, - index: res.index, - last: res.last, - hasUpdate: res.hasUpdate + ids: e.ids, + site: e.site, + name: e.name, + detail: detailRes, + index: e.index } star.get(e.id).then(resStar => { - doc.hasUpdate = resStar.hasUpdate var msg = '' - if (e.last === res.last) { + if (e.detail.last === detailRes.last) { msg = `同步"${e.name}"成功, 未查询到更新。` this.$message.info(msg) } else { @@ -287,10 +278,14 @@ export default { } }) }, - getSiteName (key) { - var site = this.sites.find(e => e.key === key) - if (site) { - return site.name + getSiteName (row) { + if (row.site) { + return row.site.name + } else { + var site = this.sites.find(e => e.key === row.key) + if (site) { + return site.name + } } }, getHistoryNote (index) { @@ -352,12 +347,19 @@ export default { ids: ele.ids, site: ele.site === undefined ? ele.site = this.sites.find(x => x.key === ele.key) : ele.site, name: ele.name, - type: ele.type, - year: ele.year, - note: ele.note, + hasUpdate: ele.hasUpdate, index: ele.index, - last: ele.last, - hasUpdate: ele.hasUpdate + rate: ele.rate, + detail: ele.detail === undefined ? { + director: ele.director, + actor: ele.actor, + type: ele.type, + area: ele.area, + lang: ele.lang, + year: ele.year, + last: ele.last, + note: ele.note + } : ele.detail } starList.push(doc) } diff --git a/src/lib/dexie/dexie.js b/src/lib/dexie/dexie.js index 86d4140..c9c114f 100644 --- a/src/lib/dexie/dexie.js +++ b/src/lib/dexie/dexie.js @@ -8,7 +8,7 @@ db.version(4).stores({ iptvSearch: '++id, keywords', setting: 'id, theme, site, shortcut, view, externalPlayer, searchAllSites, excludeRootClasses, excludeR18Films, forwardTimeInSec', shortcut: 'name, key, desc', - star: '++id, [key+ids], site, name, type, year, note, index, last, hasUpdate', + star: '++id, [key+ids], site, name, detail, index, rate, hasUpdate', sites: '++id, key, name, api, download, isActive, group', history: '++id, [site+ids], name, type, year, index, time', mini: 'id, site, ids, name, index, time', diff --git a/src/lib/site/tools.js b/src/lib/site/tools.js index 432ce9a..e7fd6a0 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,49 @@ 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()) + } else { + resolve('暂无评分') + } + }).catch(err => { + reject(err) + }) + } else { + resolve('暂无评分') + } + }).catch(err => { + reject(err) + }) + }) } }