Compare commits

..

24 Commits

Author SHA1 Message Date
Hunlongyu
acfa742b4f 👮‍♂️ v2.3.5 👨‍🚀 2020-08-06 10:15:34 +08:00
Hunlongyu
a79c48cba0 👨‍🚒👩‍🚒 v2.3.4 👨‍🚀👩‍🚀 2020-08-06 10:13:51 +08:00
Hunlongyu
904ef5ccea modify css 2020-08-06 09:58:39 +08:00
Hunlongyu
3db281c87f Merge pull request #168 from cuiocean/master
添加"备注"列到收藏试图
2020-08-06 09:57:29 +08:00
haiyangcui
076e6e99e4 当有更新时,刷新list列表 2020-08-05 17:06:17 +02:00
haiyangcui
32f6ac0310 添加"备注"列到收藏试图 2020-08-05 16:39:46 +02:00
haiyangcui
b8706ea432 添加播放视频点击事件到历史记录里的片名 2020-08-05 16:27:11 +02:00
haiyangcui
509d6c7900 添加"备注"列到收藏试图 2020-08-05 16:25:45 +02:00
Hunlongyu
51454d828c 🐱💻 v2.3.3 🐱🐉 2020-08-05 11:37:37 +08:00
Hunlongyu
59449886f5 🐱👤 新增一键同步所有收藏, 优化样式 🐱‍🏍 2020-08-05 11:35:39 +08:00
Hunlongyu
601e9895cc Merge pull request #166 from cuiocean/master
添加"同步所有收藏"按钮
2020-08-05 11:03:21 +08:00
haiyangcui
1ba8b46990 Fix typo in the function name 2020-08-04 19:06:17 +02:00
haiyangcui
7ed34caa56 Add UpdateAll button 2020-08-04 17:53:07 +02:00
Hunlongyu
fc40521420 🐱💻🐱🐉 发版 2.2.0 🐱👓🐱🚀 2020-08-04 10:17:19 +08:00
Hunlongyu
cfdd836e01 showHistory change to history 2020-08-04 10:14:11 +08:00
Hunlongyu
083e00ddbf Merge pull request #163 from cuiocean/master
添加“历史记录”到侧边栏
2020-08-04 10:10:07 +08:00
Hunlongyu
c41c7c4857 ✌ 修改为字符串 👌 2020-08-04 10:09:22 +08:00
Hunlongyu
4bde51dc38 Merge branch 'master' of https://github.com/Hunlongyu/ZY-Player 2020-08-04 10:03:38 +08:00
Hunlongyu
38c7540145 删除 console 2020-08-04 10:03:33 +08:00
Hunlongyu
a44579d4a1 Merge pull request #160 from hectorqin/master
修复m3u8链接获取问题,修复跨域问题
2020-08-04 10:00:10 +08:00
Hunlongyu
7f2d6f12c0 删除备注, 以及console 2020-08-04 09:51:48 +08:00
haiyangcui
daf1c4ddb6 Add ShowHistory to Aside 2020-08-03 21:13:50 +02:00
hectorqin
c1372c5589 新增复制调试信息功能和上次播放提示 2020-08-02 11:57:36 +08:00
hectorqin
c623533271 修复m3u8链接获取问题,修复跨域问题 2020-08-01 22:04:14 +08:00
17 changed files with 375 additions and 93 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "zy",
"version": "2.1.0",
"version": "2.3.5",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",

View File

@@ -6,6 +6,7 @@
<Film v-show="view === 'Film'" />
<Play v-show="view === 'Play'" />
<Star v-show="view === 'Star'" />
<History v-show="view === 'History'" />
<Setting v-show="view === 'Setting'" />
</div>
<transition name="slide">

View File

@@ -85,9 +85,25 @@
flex-direction: column;
height: 100%;
font-size: 15px;
.tHeader{
display: flex;
align-items: center;
justify-content: flex-end;
height: 50px;
min-height: 50px;
width: 100%;
border-bottom: 1px solid;
.btn{
user-select: none;
margin-right: 15px;
cursor: pointer;
font-size: 14px;
}
}
.tBody{
flex: 1;
border-bottom: 1px solid;
overflow: auto;
ul{
list-style: none;
padding: 0;

View File

@@ -34,6 +34,14 @@
}
.zy-table{
color: var(--d-fc-2);
.tHeader{
border-bottom-color: var(--d-c-3);
.btn{
&:hover{
color: var(--d-fc-3)
}
}
}
.tBody{
border-bottom-color: var(--d-c-3);
ul{
@@ -169,6 +177,11 @@
box-shadow: var(--d-bsc);
.title{
color: var(--d-fc-1);
.right {
svg {
fill: var(--d-fc-1);
}
}
}
.box{
.more{
@@ -192,6 +205,10 @@
fill: var(--d-c-3);
}
}
&.last-tip {
color: var(--d-fc-1);
font-size: 14px;
}
}
}
}
@@ -221,6 +238,9 @@
background-color: var(--d-c-2);
color: var(--d-fc-3);
}
&:hover{
background-color: var(--d-c-3);
}
}
}
.list-history{
@@ -316,4 +336,8 @@
background-color: var(--d-bgc-1);
}
}
.history{
background-color: var(--d-bgc-1);
box-shadow: var(--d-bsc);
}
}

View File

@@ -34,6 +34,14 @@
}
.zy-table{
color: var(--g-fc-2);
.tHeader{
border-bottom-color: var(--g-c-3);
.btn{
&:hover{
color: var(--g-fc-3)
}
}
}
.tBody{
border-bottom-color: var(--g-c-3);
ul{
@@ -169,6 +177,11 @@
box-shadow: var(--g-bsc);
.title{
color: var(--g-fc-1);
.right {
svg {
fill: var(--g-fc-1);
}
}
}
.box{
.more{
@@ -192,6 +205,10 @@
fill: var(--g-c-3);
}
}
&.last-tip {
color: var(--g-fc-1);
font-size: 14px;
}
}
}
}
@@ -221,6 +238,9 @@
background-color: var(--g-c-2);
color: var(--g-fc-3);
}
&:hover{
background-color: var(--d-c-3);
}
}
}
.list-history{
@@ -316,4 +336,8 @@
background-color: var(--g-bgc-1);
}
}
.history{
background-color: var(--g-bgc-1);
box-shadow: var(--g-bsc);
}
}

View File

@@ -34,6 +34,14 @@
}
.zy-table{
color: var(--l-fc-2);
.tHeader{
border-bottom-color: var(--l-c-3);
.btn{
&:hover{
color: var(--l-fc-3)
}
}
}
.tBody{
border-bottom-color: var(--l-c-3);
ul{
@@ -169,6 +177,11 @@
box-shadow: var(--l-bsc);
.title{
color: var(--l-fc-1);
.right {
svg {
fill: var(--l-fc-1);
}
}
}
.box{
.more{
@@ -192,6 +205,10 @@
fill: var(--l-c-3);
}
}
&.last-tip {
color: var(--l-fc-1);
font-size: 14px;
}
}
}
}
@@ -221,6 +238,9 @@
background-color: var(--l-c-2);
color: var(--l-fc-3);
}
&:hover{
background-color: var(--d-c-3);
}
}
}
.list-history{
@@ -316,4 +336,8 @@
background-color: var(--l-bgc-1);
}
}
.history{
background-color: var(--l-bgc-1);
box-shadow: var(--l-bsc);
}
}

View File

@@ -34,6 +34,14 @@
}
.zy-table{
color: var(--p-fc-2);
.tHeader{
border-bottom-color: var(--p-c-3);
.btn{
&:hover{
color: var(--p-fc-3)
}
}
}
.tBody{
border-bottom-color: var(--p-c-3);
ul{
@@ -169,6 +177,11 @@
box-shadow: var(--p-bsc);
.title{
color: var(--p-fc-1);
.right {
svg {
fill: var(--p-fc-1);
}
}
}
.box{
.more{
@@ -192,6 +205,10 @@
fill: var(--p-c-3);
}
}
&.last-tip {
color: var(--p-fc-1);
font-size: 14px;
}
}
}
}
@@ -221,6 +238,9 @@
background-color: var(--p-c-2);
color: var(--p-fc-3);
}
&:hover{
background-color: var(--d-c-3);
}
}
}
.list-history{
@@ -316,4 +336,8 @@
background-color: var(--p-bgc-1);
}
}
.history{
background-color: var(--p-bgc-1);
box-shadow: var(--p-bsc);
}
}

View File

@@ -6,6 +6,9 @@ import { createProtocol } from 'vue-cli-plugin-electron-builder/lib'
import installExtension, { VUEJS_DEVTOOLS } from 'electron-devtools-installer'
const isDevelopment = process.env.NODE_ENV !== 'production'
// 允许跨域
app.commandLine.appendSwitch('disable-features', 'OutOfBlinkCors')
let win
let mini

View File

@@ -26,6 +26,13 @@
<path d="M12,21 L10.55,19.7051771 C5.4,15.1242507 2,12.1029973 2,8.39509537 C2,5.37384196 4.42,3 7.5,3 C9.24,3 10.91,3.79455041 12,5.05013624 C13.09,3.79455041 14.76,3 16.5,3 C19.58,3 22,5.37384196 22,8.39509537 C22,12.1029973 18.6,15.1242507 13.45,19.7149864 L12,21 Z"></path>
</svg>
</span>
<span :class="[view === 'History' ? 'active ': ''] + 'zy-svg'" @click="changeView('History')">
<svg role="img" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-labelledby="timeIconTitle">
<title id="timeIconTitle">历史记录</title>
<circle cx="12" cy="12" r="10"></circle>
<polyline points="12 5 12 12 16 16"></polyline>
</svg>
</span>
<span :class="[view === 'Setting' ? 'active ': ''] + 'zy-svg'" @click="changeView('Setting')">
<svg role="img" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-labelledby="settingsIconTitle">
<title id="settingsIconTitle">setting</title>

View File

@@ -141,7 +141,8 @@ export default {
name: this.info.name,
type: this.info.type,
year: this.info.year,
last: this.info.last
last: this.info.last,
note: this.info.note
}
star.add(docs).then(res => {
this.$message.success('收藏成功')

View File

@@ -303,7 +303,8 @@ export default {
name: e.name,
type: e.type,
year: e.year,
last: e.last
last: e.last,
note: e.note
}
star.add(docs).then(res => {
this.$message.success('收藏成功')

178
src/components/History.vue Normal file
View File

@@ -0,0 +1,178 @@
<template>
<div class="history">
<div class="body zy-scroll">
<div class="zy-table">
<div class="tHeader">
<span class="btn" @click="clearAllHistory">清空</span>
</div>
<div class="tBody zy-scroll">
<ul>
<li v-show="this.history.length === 0">无数据</li>
<li v-for="(i, j) in history" :key="j" @click="historyItemEvent(i)">
<span class="name" @click.stop="playEvent(i)">{{i.name}}</span>
<span class="site">{{i.site}}</span>
<span class="index">{{i.index+1}}</span>
<span class="operate" style="width: 220px">
<span class="btn" @click.stop="playEvent(i)">播放</span>
<span class="btn" @click.stop="downloadEvent(i)">下载</span>
<span class="btn" @click.stop="removeHistoryItem(i)">删除</span>
</span>
</li>
</ul>
</div>
</div>
</div>
</div>
</template>
<script>
import { mapMutations } from 'vuex'
import { history } from '../lib/dexie'
import zy from '../lib/site/tools'
const { clipboard } = require('electron')
export default {
name: 'history',
data () {
return {
history: history
}
},
computed: {
view: {
get () {
return this.$store.getters.getView
},
set (val) {
this.SET_VIEW(val)
}
},
video: {
get () {
return this.$store.getters.getVideo
},
set (val) {
this.SET_VIDEO(val)
}
},
detail: {
get () {
return this.$store.getters.getDetail
},
set (val) {
this.SET_DETAIL(val)
}
},
share: {
get () {
return this.$store.getters.getShare
},
set (val) {
this.SET_SHARE(val)
}
}
},
watch: {
view () {
this.getAllhistory()
}
},
methods: {
...mapMutations(['SET_VIEW', 'SET_DETAIL', 'SET_VIDEO', 'SET_SHARE']),
detailEvent (e) {
this.detail = {
show: true,
key: e.site,
info: {
id: e.ids,
name: e.name
}
}
},
playEvent (e) {
history.find({ site: e.site, ids: e.ids }).then(res => {
if (res) {
this.video = { key: res.site, info: { id: res.ids, name: res.name, index: res.index } }
} else {
this.video = { key: e.site, info: { id: e.ids, name: e.name, index: 0 } }
}
})
this.view = 'Play'
},
downloadEvent (e) {
zy.download(e.site, e.ids).then(res => {
if (res) {
const text = res.dl.dd._t
if (text) {
const list = text.split('#')
let downloadUrl = ''
for (const i of list) {
const url = encodeURI(i.split('$')[1])
downloadUrl += (url + '\n')
}
clipboard.writeText(downloadUrl)
this.$message.success('『MP4』格式的链接已复制, 快去下载吧!')
} else {
this.$message.warning('没有查询到下载链接.')
}
} else {
const list = [...this.m3u8List]
let downloadUrl = ''
for (const i of list) {
const url = encodeURI(i.split('$')[1])
downloadUrl += (url + '\n')
}
clipboard.writeText(downloadUrl)
this.$message.success('『M3U8』格式的链接已复制, 快去下载吧!')
}
})
},
clearAllHistory () {
history.clear().then(res => {
this.history = []
})
},
getAllhistory () {
history.all().then(res => {
this.history = res.reverse()
})
},
historyItemEvent (e) {
this.video = {
key: e.site,
info: {
id: e.ids,
name: e.name,
type: e.type,
year: e.year,
index: e.index,
time: e.time
}
}
},
removeHistoryItem (e) {
history.remove(e.id).then(res => {
this.getAllhistory()
}).catch(err => {
this.$message.warning('删除历史记录失败, 错误信息: ' + err)
})
}
},
created () {
this.getAllhistory()
}
}
</script>
<style lang="scss" scoped>
.history{
position: relative;
height: calc(100% - 40px);
width: 100%;
display: flex;
justify-content: center;
align-items: center;
border-radius: 5px;
.body{
width: 100%;
height: 100%;
}
}
</style>

View File

@@ -3,6 +3,11 @@
<div class="box">
<div class="title">
<span v-if="this.right.list.length > 1"> {{(video.info.index + 1)}} </span>{{name}}
<span v-if="video.key" class="right" @click="issueEvent" title="复制调试信息">
<svg t="1596338860607" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3127" width="24" height="24">
<path d="M503.803829 63.578014c-247.050676 0-447.328072 200.277396-447.328072 447.327048 0 247.054769 200.277396 447.333188 447.328072 447.333188 247.054769 0 447.332165-200.278419 447.332165-447.333188C951.13497 263.85541 750.858598 63.578014 503.803829 63.578014L503.803829 63.578014zM503.803829 894.313336c-211.749682 0-383.408273-171.659615-383.408273-383.408273 0-211.749682 171.659615-383.40725 383.408273-383.40725 211.753775 0 383.412366 171.658591 383.412366 383.40725C887.216195 722.653721 715.557604 894.313336 503.803829 894.313336L503.803829 894.313336zM447.745069 255.897158l127.914298 0L575.659367 383.576095 447.745069 383.576095 447.745069 255.897158 447.745069 255.897158zM447.745069 425.470251l127.914298 0 0 342.058516L447.745069 767.528767 447.745069 425.470251 447.745069 425.470251zM447.745069 425.470251" p-id="3128"></path>
</svg>
</span>
</div>
<div class="player">
<div id="xgplayer"></div>
@@ -70,6 +75,7 @@
<rect x="17" y="6" width="1" height="1"></rect>
</svg>
</span>
<span class="last-tip" v-if="!video.key && right.history.length > 0" @click="historyItemEvent(right.history[0])">上次播放到{{right.history[0].site}}{{right.history[0].name}} {{right.history[0].index+1}}</span>
</div>
</div>
<transition name="slideX">
@@ -85,12 +91,12 @@
</div>
<div class="list-body zy-scroll" :style="{overflowY:scroll? 'auto' : 'hidden',paddingRight: scroll ? '0': '5px' }" @mouseenter="scroll = true" @mouseleave="scroll = false">
<ul v-show="right.type === 'list'" class="list-item">
<li v-show="right.history.length > 1" @click="exportM3u8">导出</li>
<li v-show="right.list.length > 0" @click="exportM3u8">导出</li>
<li v-show="right.list.length === 0">无数据</li>
<li @click="listItemEvent(j)" :class="video.info.index === j ? 'active' : ''" v-for="(i, j) in right.list" :key="j">{{i | ftName(j)}}</li>
</ul>
<ul v-show="right.type === 'history'" class="list-history">
<li v-show="right.history.length > 1" @click="clearAllHistory">清空</li>
<li v-show="right.history.length > 0" @click="clearAllHistory">清空</li>
<li v-show="right.history.length === 0">无数据</li>
<li @click="historyItemEvent(m)" :class="video.info.id === m.ids ? 'active' : ''" v-for="(m, n) in right.history" :key="n"><span class="title" :title="'【' + m.site + '】' + m.name + ' 第' + (m.index+1) + '集'">【{{m.site}}】{{m.name}} 第{{m.index+1}}集</span><span @click.stop="removeHistoryItem(m)" class="detail-delete">删除</span></li>
</ul>
@@ -106,7 +112,7 @@ import zy from '../lib/site/tools'
import Player from 'xgplayer'
import Hls from 'xgplayer-hls.js'
import mt from 'mousetrap'
const { remote, ipcRenderer } = require('electron')
const { remote, ipcRenderer, clipboard } = require('electron')
const VIDEO_DETAIL_CACHE = {}
@@ -132,7 +138,6 @@ const addPlayerBtn = function (event, svg, attrs) {
const addPlayerView = function (event, tpl, attrs) {
const player = this
console.log(player)
const util = Player.util
const rootEl = player.root
const viewConfig = player.config[event]
@@ -321,57 +326,6 @@ export default {
this.xg.off('ended')
})
})
// const id = this.video.info.id
// zy.detail(this.video.key, id).then(res => {
// this.name = res.name
// const dd = res.dl.dd
// const type = Object.prototype.toString.call(dd)
// let m3u8Txt = []
// if (type === '[object Array]') {
// for (const i of dd) {
// if (i._t.indexOf('m3u8') >= 0) {
// m3u8Txt = i._t.split('#')
// }
// }
// } else {
// m3u8Txt = dd._t.split('#')
// }
// this.right.list = m3u8Txt
// const m3u8Arr = []
// for (const i of m3u8Txt) {
// const j = i.split('$')
// if (j.length > 1) {
// for (let m = 0; m < j.length; m++) {
// if (j[m].indexOf('m3u8') >= 0) {
// m3u8Arr.push(j[m])
// }
// }
// } else {
// m3u8Arr.push(j[0])
// }
// }
// this.xg.src = m3u8Arr[index]
// this.showNext = m3u8Arr.length > 1
// if (time !== 0) {
// this.xg.play()
// this.xg.once('playing', () => {
// this.xg.currentTime = time
// })
// } else {
// this.xg.play()
// }
// this.videoPlaying()
// this.xg.once('ended', () => {
// if (m3u8Arr.length > 1 && (m3u8Arr.length - 1 > index)) {
// this.video.info.time = 0
// this.video.info.index++
// }
// this.xg.off('ended')
// })
// })
},
fetchM3u8List () {
return new Promise((resolve) => {
@@ -401,8 +355,9 @@ export default {
const j = i.split('$')
if (j.length > 1) {
for (let m = 0; m < j.length; m++) {
if (j[m].indexOf('m3u8') >= 0) {
if (j[m].indexOf('.m3u8') >= 0 && j[m].startsWith('http')) {
m3u8Arr.push(j[m])
break
}
}
} else {
@@ -497,9 +452,7 @@ export default {
this.right.show = true
this.right.type = 'history'
}
history.all().then(res => {
this.right.history = res.reverse()
})
this.getAllhistory()
},
getAllhistory () {
history.all().then(res => {
@@ -521,7 +474,8 @@ export default {
name: info.name,
type: info.type,
year: info.year,
last: info.last
last: info.last,
note: info.note
}
star.add(docs).then(res => {
this.$message.success('收藏成功')
@@ -571,6 +525,18 @@ export default {
info: this.video.info
}
},
issueEvent () {
const info = {
video: this.video,
list: this.right.list,
m3u8List: VIDEO_DETAIL_CACHE[this.video.key + '@' + this.video.info.id] || [],
playerError: this.xg.error || '',
playerState: this.xg.readyState || '',
networkState: this.xg.networkState || ''
}
clipboard.writeText(JSON.stringify(info, null, 4))
this.$message.success('视频信息复制成功')
},
checkStar () {
star.find({ site: this.video.key, ids: this.video.info.id }).then(res => {
if (res) {
@@ -595,8 +561,9 @@ export default {
let link, name
if (j.length > 1) {
for (let m = 0; m < j.length; m++) {
if (j[m].indexOf('m3u8') >= 0) {
if (j[m].indexOf('.m3u8') >= 0 && j[m].startsWith('http')) {
link = j[m]
break
}
}
name = j[0]
@@ -609,25 +576,19 @@ export default {
link: link
})
}
console.log(m3u8Arr)
let m3u8Content = `#EXTM3U
`
let m3u8Content = '#EXTM3U'
for (const item of m3u8Arr) {
m3u8Content += `#EXTINF:-1, ${item.name}
${item.link}
`
m3u8Content += `#EXTINF:-1, ${item.name}\n${item.link}`
}
const blob = new Blob([m3u8Content], { type: 'application/vnd.apple.mpegurl' })
const downloadElement = document.createElement('a') // 创建下载的链接
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob)
downloadElement.href = href
downloadElement.download = `${this.name}.m3u8` // 下载后的文件名
downloadElement.download = `${this.name}.m3u8`
document.body.appendChild(downloadElement)
downloadElement.click() // 下载
document.body.removeChild(downloadElement) // 下载完成 移除 a
window.URL.revokeObjectURL(href) // 释放blob对象
downloadElement.click()
document.body.removeChild(downloadElement)
window.URL.revokeObjectURL(href)
},
clearAllHistory () {
history.clear().then(res => {
@@ -869,6 +830,7 @@ ${item.link}
}
},
refreshHistory () {
this.getAllhistory()
let ul = document.querySelector('xg-btn-showhistory ul')
if (!ul) {
ul = document.createElement('ul')
@@ -945,7 +907,6 @@ ${item.link}
this.mtEvent()
},
mounted () {
console.log(this)
Player.install('playPrev', function () {
addPlayerBtn.bind(this, 'playPrev', '<svg t="1595866093990" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3657" style="width: 20px;height: 20px;margin-top: 11px;margin-left: 9px;" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M98.583851 3.180124h190.807453a31.801242 31.801242 0 0 1 31.801243 31.801242v387.021118L902.201242 10.176398l11.130435-7.632299A31.801242 31.801242 0 0 1 957.217391 31.801242v960.397516a31.801242 31.801242 0 0 1-43.885714 29.257143l-11.130435-7.632299L321.192547 601.997516V989.018634a31.801242 31.801242 0 0 1-31.801243 31.801242H98.583851a31.801242 31.801242 0 0 1-31.801242-31.801242v-954.037268a31.801242 31.801242 0 0 1 31.801242-31.801242z" p-id="3658" fill="#ffffff"></path></svg>', { title: '上一集' })()
})
@@ -971,10 +932,6 @@ ${item.link}
this.xg = new Hls(this.config)
ipcRenderer.on('miniClosed', () => {
// this.xg.destroy()
// this.xg = new Hls(this.config)
// this.bindEvent()
// 同步进度
history.find({ site: this.video.key, ids: this.video.info.id }).then(res => {
if (res) {
if (this.video.info.index !== res.index) {
@@ -1145,6 +1102,13 @@ ${item.link}
height: 40px;
line-height: 40px;
padding: 0 10px;
.right {
float: right;
svg {
margin-top: 8px;
cursor: pointer;
}
}
}
.player{
width: 100%;

View File

@@ -104,7 +104,7 @@
</div>
<div class="clearDB">
<span @click="clearDBEvent" class="clearBtn">软件重置</span>
<span class="clearTips">如非必要, 切勿点击. 会清空用户数据, 恢复默认设置. 点击即软件重置, 并关闭软件.</span>
<span class="clearTips">果新安装用户, 无法显示资源, 请点击软件重置. 非必要, 切勿点击. 会清空用户数据, 恢复默认设置. 点击即软件重置, 并关闭软件.</span>
</div>
<div class="Tips">
<span>所有资源来自网上, 该软件不参与任何制作, 上传, 储存等内容, 禁止传播违法资源. 该软件仅供学习参考, 请于安装后24小时内删除.</span>

View File

@@ -1,14 +1,18 @@
<template>
<div class="star">
<div class="body zy-scroll">
<div class="body">
<div class="zy-table">
<div class="tBody">
<div class="tHeader">
<span class="btn" @click="updateAllEvent(list)">同步所有收藏</span>
</div>
<div class="tBody zy-scroll">
<ul>
<li v-for="(i, j) in list" :key="j" @click="detailEvent(i)">
<span class="name">{{i.name}}</span>
<span class="type">{{i.type}}</span>
<span class="time">{{i.year}}</span>
<span class="from">{{i.site}}</span>
<span class="note">{{i.note}}</span>
<span class="operate" style="width: 220px">
<span class="btn" @click.stop="playEvent(i)">播放</span>
<span class="btn" @click.stop="deleteEvent(i)">删除</span>
@@ -116,7 +120,8 @@ export default {
updateEvent (e) {
zy.detail(e.site, e.ids).then(res => {
if (e.last === res.last) {
this.$message.info('同步成功, 未查询到更新。')
var msg = `同步"${e.name}"成功, 未查询到更新。`
this.$message.info(msg)
} else {
const doc = {
id: e.id,
@@ -125,14 +130,23 @@ export default {
name: res.name,
site: e.site,
type: res.type,
year: res.year
year: res.year,
note: res.note
}
star.update(e.id, doc).then(res => {
this.$message.success('同步成功, 检查到更新.')
var msg = `同步"${e.name}"成功, 检查到更新`
this.$message.success(msg)
})
this.getStarList()
}
}).catch(err => {
this.$message.warning('同步失败, 请重试', err)
var msg = `同步"${e.name}"失败, 请重试。`
this.$message.warning(msg, err)
})
},
updateAllEvent (list) {
list.forEach(e => {
this.updateEvent(e)
})
},
downloadEvent (e) {
@@ -186,7 +200,6 @@ export default {
.body{
width: 100%;
height: 100%;
overflow: auto;
}
}
</style>

View File

@@ -7,6 +7,7 @@ import Star from './Star'
import Setting from './Setting'
import Detail from './Detail'
import Share from './Share'
import History from './History'
export default {
registerComponents () {
@@ -18,5 +19,6 @@ export default {
Vue.component('Setting', Setting)
Vue.component('Detail', Detail)
Vue.component('Share', Share)
Vue.component('History', History)
}
}

View File

@@ -22,15 +22,15 @@
<span class="progress" v-show="progress > 0">播放进度: {{progress}}%</span>
</div>
<div class="right">
<span class="top" @click="frameClickEvent('top')" title="置顶">
<svg t="1595919317571" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1188" style="width:12px;height:16px"><path d="M43.072 974.72l380.864-301.952 151.936 161.6c0 0 63.424 17.28 67.328-30.72l-3.904-163.584 225.088-259.648 98.048-5.696c0 0 76.928-15.488 21.184-82.752l-275.072-276.928c0 0-74.944-9.6-69.248 59.584l0 75.008L383.552 367.104 225.856 376.64c0 0-57.728 19.2-36.608 69.248l148.16 146.176L43.072 974.72 43.072 974.72z" p-id="1189" :fill="isAlwaysOnTop ? '#555555' : '#ffffff'"></path></svg>
</span>
<span class="min" @click="frameClickEvent('min')" title="最小化">
<svg t="1595917239849" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1155" style="width:10px;height:16px"><path d="M0 479.936C0 444.64 28.448 416 64.064 416L959.936 416C995.328 416 1024 444.736 1024 479.936L1024 544.064C1024 579.392 995.552 608 959.936 608L64.064 608C28.672 608 0 579.264 0 544.064L0 479.936Z" p-id="1156" fill="#ffffff"></path></svg>
</span>
<span class="close" @click="frameClickEvent('close')" title="关闭">
<svg t="1595917372551" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1685" style="width:10px;height:16px"><path d="M511.968 376.224 796.096 92.096C833.536 54.624 894.4 54.624 931.84 92.096 969.312 129.568 969.312 190.4 931.84 227.872L647.744 512 931.84 796.096C969.312 833.568 969.312 894.4 931.84 931.872 894.4 969.344 833.536 969.344 796.096 931.872L511.968 647.744 227.84 931.872C190.4 969.344 129.536 969.344 92.096 931.872 54.624 894.4 54.624 833.568 92.096 796.096L376.224 512 92.096 227.872C54.624 190.4 54.624 129.568 92.096 92.096 129.536 54.624 190.4 54.624 227.84 92.096L511.968 376.224Z" p-id="1686" fill="#ffffff"></path></svg>
</span>
<span class="top" @click="frameClickEvent('top')" title="置顶">
<svg t="1595919317571" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1188" style="width:12px;height:16px"><path d="M43.072 974.72l380.864-301.952 151.936 161.6c0 0 63.424 17.28 67.328-30.72l-3.904-163.584 225.088-259.648 98.048-5.696c0 0 76.928-15.488 21.184-82.752l-275.072-276.928c0 0-74.944-9.6-69.248 59.584l0 75.008L383.552 367.104 225.856 376.64c0 0-57.728 19.2-36.608 69.248l148.16 146.176L43.072 974.72 43.072 974.72z" p-id="1189" :fill="isAlwaysOnTop ? '#555555' : '#ffffff'"></path></svg>
</span>
</div>
</div>
<div class="bottom">