From 89d6183841979f1dd239a33ae201cb47a1a3d1f7 Mon Sep 17 00:00:00 2001 From: haiyangcui Date: Sat, 26 Sep 2020 21:29:56 +0200 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=92=AD=E6=94=BE=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E9=AB=98=E6=B8=85=E8=A7=86=E9=A2=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Detail.vue | 142 +++++++++++++++++++++++++++++++++++--- 1 file changed, 131 insertions(+), 11 deletions(-) diff --git a/src/components/Detail.vue b/src/components/Detail.vue index b854bf0..c093b39 100644 --- a/src/components/Detail.vue +++ b/src/components/Detail.vue @@ -34,6 +34,15 @@ 下载 分享 豆瓣 + + 播放在线高清视频 + + + +
{{info.des}}
@@ -59,7 +68,10 @@ export default { return { loading: true, m3u8List: [], - info: {} + info: {}, + playOnline: false, + selectedOnlineSite: '哔嘀', + onlineSites: ['哔嘀', '1080影视'] } }, filters: { @@ -121,16 +133,36 @@ export default { } }, playEvent (n) { - history.find({ site: this.detail.key, ids: this.detail.info.id }).then(res => { - if (res) { - this.video = { key: res.site, info: { id: res.ids, name: res.name, index: n, site: this.detail.site } } - } else { - this.video = { key: this.detail.key, info: { id: this.detail.info.id, name: this.detail.info.name, index: n, site: this.detail.site } } - } - }) - - this.view = 'Play' - this.detail.show = false + if (!this.playOnline) { + history.find({ site: this.detail.key, ids: this.detail.info.id }).then(res => { + if (res) { + this.video = { key: res.site, info: { id: res.ids, name: res.name, index: n, site: this.detail.site } } + } else { + this.video = { key: this.detail.key, info: { id: this.detail.info.id, name: this.detail.info.name, index: n, site: this.detail.site } } + } + }) + this.view = 'Play' + this.detail.show = false + } else { + history.find({ site: this.detail.key, ids: this.detail.info.id }).then(res => { + if (res) { + res.index = n + history.update(res.id, res) + } else { + const doc = { + site: this.detail.key, + ids: this.detail.info.id, + name: this.detail.info.name, + type: this.detail.info.type, + year: this.detail.info.year, + index: n, + time: '' + } + history.add(doc) + } + }) + this.playVideoOnline(this.detail.info.name, n) + } }, starEvent () { star.find({ key: this.detail.key, ids: this.info.id }).then(res => { @@ -154,6 +186,94 @@ export default { this.$message.warning('收藏失败') }) }, + playVideoOnline (videoName, videoIndex) { + switch (this.selectedOnlineSite) { + case '哔嘀': + this.playVideoOnBde4(videoName, videoIndex) + break + case '1080影视': + this.playVideoOnK1080(videoName, videoIndex) + break + default: + this.$message.console.error(`不支持该网站:${this.selectedOnlineSite}`) + } + }, + playVideoOnBde4 (videoName, videoIndex) { + var url = `https://bde4.com/search/${videoName}` + const open = require('open') + const axios = require('axios') + const cheerio = require('cheerio') + axios.get(url).then(res => { + const $ = cheerio.load(res.data) + var e = $('div.search-list') + var firstResult = $(e).find('div>div>div>div>a').toArray() + // 获取第一个搜索结果的视频链接 + var detailPageLink = $(firstResult[0]).attr('href') + // 获取第一个搜索结果的title + var title = $(firstResult[0]).attr('title') + if (title === null || title === undefined || !title.includes(videoName)) { + // 如果第一个搜索结果不符合,打开搜索页面 + open(url) + } else { + var detailPageFullLink = 'https://bde4.com/' + detailPageLink + if (this.m3u8List.length === 1) { + open(detailPageFullLink) + } else { + // 解析详情页面 + axios.get(detailPageFullLink).then(res => { + const $ = cheerio.load(res.data) + var e = $('div.info1') + var videoList = $(e).find('a').toArray() + var indexVideoLink = $(videoList[videoIndex]).attr('href') + if (indexVideoLink.includes('.htm')) { + var videoFullLink = 'https://bde4.com' + indexVideoLink + open(videoFullLink) + } else { + open(detailPageFullLink) + } + }) + } + } + }) + }, + playVideoOnK1080 (videoName, videoIndex) { + var url = `https://k1080.net/vodsearch123/-------------.html?wd=${videoName}&submit=` + const open = require('open') + const axios = require('axios') + const cheerio = require('cheerio') + axios.get(url).then(res => { + const $ = cheerio.load(res.data) + var e = $('#searchList').html() + var firstResult = $(e).find('li>div>a').toArray() + // 获取第一个搜索结果的视频链接 + var detailPageLink = $(firstResult[0]).attr('href') + // 获取第一个搜索结果的title + var title = $(firstResult[0]).attr('title') + console.log(title) + if (title === null || title === undefined || !title.includes(videoName)) { + // 如果第一个搜索结果不符合,打开搜索页面 + open(url) + } else { + // 解析详情页面 + var detailPageFullLink = 'https://k1080.net' + detailPageLink + axios.get(detailPageFullLink).then(res2 => { + const $ = cheerio.load(res2.data) + // 获取playlist1 + var e = $('#playlist1') + // 获取所有视频链接 + var videoList = $(e).find('div>ul>li>a') + // 获取index视频链接 + var indexVideoLink = $(videoList[videoIndex]).attr('href') + if (indexVideoLink.includes('.htm')) { + var videoFullLink = 'https://k1080.net' + indexVideoLink + open(videoFullLink) + } else { + open(detailPageFullLink) + } + }) + } + }) + }, downloadEvent () { zy.download(this.detail.key, this.info.id).then(res => { if (res && res.dl && res.dl.dd) {