mirror of
https://github.com/cuiocean/ZY-Player.git
synced 2026-02-14 07:55:27 +08:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
84e2f456f8 | ||
|
|
3e345bf57b | ||
|
|
d70da3dc3e | ||
|
|
8f6a8fef07 | ||
|
|
bda6e32b04 |
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -31,7 +31,9 @@ jobs:
|
||||
with:
|
||||
files: |
|
||||
dist_electron/*.exe
|
||||
dist_electron/win-unpacked/*.exe
|
||||
dist_electron/*.dmg
|
||||
dist_electron/*.snap
|
||||
dist_electron/*.yml
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "zyplayer",
|
||||
"version": "0.9.13",
|
||||
"version": "0.9.18",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
|
||||
BIN
src/assets/image/green.png
Normal file
BIN
src/assets/image/green.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 61 KiB |
@@ -34,9 +34,28 @@
|
||||
--d-bsc-2: 0 -4px 23px 0 #38dd7733;
|
||||
--d-bsc-hover: 0 14px 26px -12px #38dd7733, 0 4px 23px 0 #38dd7722, 0 8px 10px -5px #38dd7711;
|
||||
--d-bsc-scroll: inset 0 0 5px #38dd7705;
|
||||
|
||||
// green
|
||||
--g-c-0: #EAEF9D;
|
||||
--g-c-1: #EAEF9D11;
|
||||
--g-c-2: #EAEF9D22;
|
||||
--g-c-3: #EAEF9D33;
|
||||
--g-c-5: #EAEF9D55;
|
||||
--g-c-8: #EAEF9D88;
|
||||
--g-c-9: #EAEF9D99;
|
||||
--g-fc-1: #80B155;
|
||||
--g-fc-2: #C1D95CAA;
|
||||
--g-fc-3: #C1D95C;
|
||||
--g-bgc-1: #336A29;
|
||||
--g-bgc-2: #498428;
|
||||
--g-bsc: 0 3px 1px -2px #C1D95C33, 0 2px 2px 0 #C1D95C22, 0 1px 5px 0 #C1D95C11;
|
||||
--g-bsc-2: 0 -4px 23px 0 #C1D95C33;
|
||||
--g-bsc-hover: 0 14px 26px -12px #C1D95C33, 0 4px 23px 0 #C1D95C22, 0 8px 10px -5px #C1D95C11;
|
||||
--g-bsc-scroll: inset 0 0 5px #C1D95C05;
|
||||
}
|
||||
|
||||
@import './theme/light.scss';
|
||||
@import './theme/dark.scss';
|
||||
@import './theme/green.scss';
|
||||
|
||||
@import './style.scss';
|
||||
|
||||
349
src/assets/scss/theme/green.scss
Normal file
349
src/assets/scss/theme/green.scss
Normal file
@@ -0,0 +1,349 @@
|
||||
.theme-green{
|
||||
background-color: var(--g-bgc-1);
|
||||
.xgplayer-skin-default video{
|
||||
background-color: var(--g-bgc-2);
|
||||
}
|
||||
.el-pagination{
|
||||
background-color: var(--g-bgc-1);
|
||||
color: var(--g-fc-1);
|
||||
.el-pagination__total, .el-pagination__jump, .el-input__inner{
|
||||
color: var(--g-fc-1);
|
||||
background-color: var(--g-bgc-1);
|
||||
}
|
||||
.el-input__inner{
|
||||
border-color: var(--g-c-3);
|
||||
}
|
||||
.el-pager{
|
||||
.number{
|
||||
background-color: var(--g-bgc-1);
|
||||
}
|
||||
.number:hover{
|
||||
color: var(--g-c-8);
|
||||
}
|
||||
.active{
|
||||
color: var(--g-c-9);
|
||||
}
|
||||
}
|
||||
.more, .btn-next, .btn-prev{
|
||||
background-color: var(--g-bgc-1);
|
||||
&:hover{
|
||||
color: var(--g-c-8);
|
||||
}
|
||||
}
|
||||
}
|
||||
.zy-select{
|
||||
color: var(--g-fc-1);
|
||||
background-color: var(--g-bgc-1);
|
||||
box-shadow: var(--g-bsc);
|
||||
&:hover{
|
||||
box-shadow: var(--g-bsc-hover);
|
||||
}
|
||||
.vs-options{
|
||||
background-color: var(--g-bgc-1);
|
||||
box-shadow: var(--g-bsc);
|
||||
ul{
|
||||
li{
|
||||
&:hover{
|
||||
background-color: var(--g-c-1);
|
||||
}
|
||||
&.active{
|
||||
background-color: var(--g-c-3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.zy-table{
|
||||
color: var(--g-fc-2);
|
||||
.tHead{
|
||||
background-color: var(--g-bgc-1);
|
||||
border-bottom-color: var(--g-c-3);
|
||||
}
|
||||
.tBody{
|
||||
border-bottom-color: var(--g-c-3);
|
||||
ul{
|
||||
li{
|
||||
border-bottom-color: var(--g-c-2);
|
||||
&:hover{
|
||||
animation: d-tableHoverAni 0.2s ease both;
|
||||
@keyframes d-tableHoverAni {
|
||||
to{
|
||||
box-shadow: var(--g-bsc-hover);
|
||||
}
|
||||
}
|
||||
}
|
||||
span{
|
||||
&.btn:hover{
|
||||
color: var(--g-fc-3)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.tFooter{
|
||||
.tFooter-span{
|
||||
color: var(--g-fc-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
.zy-scroll{
|
||||
&:hover{
|
||||
&::-webkit-scrollbar-thumb {
|
||||
box-shadow: var(--g-bsc-scroll);
|
||||
background: var(--g-c-3);
|
||||
}
|
||||
&::-webkit-scrollbar-track {
|
||||
box-shadow: var(--g-bsc-scroll);
|
||||
background: var(--bgc);
|
||||
}
|
||||
}
|
||||
}
|
||||
.zy-loading{
|
||||
.loader{
|
||||
color: var(--g-c-3);
|
||||
}
|
||||
}
|
||||
.zy-body{
|
||||
background-color: var(--g-bgc-2);
|
||||
}
|
||||
.aside{
|
||||
.zy-svg{
|
||||
svg{
|
||||
stroke: var(--g-c-0);
|
||||
}
|
||||
&:hover{
|
||||
background-color: var(--g-c-2);
|
||||
}
|
||||
&.active{
|
||||
svg{
|
||||
stroke: var(--g-c-0);
|
||||
stroke-width: 2;
|
||||
fill: var(--g-c-2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.frame{
|
||||
span{
|
||||
&.min{
|
||||
background-color: #ffbe2a;
|
||||
}
|
||||
&.close{
|
||||
background-color: #ff5f56;
|
||||
}
|
||||
}
|
||||
}
|
||||
.detail{
|
||||
color: var(--g-fc-1);
|
||||
background-color:var(--g-bgc-1);
|
||||
box-shadow: var(--g-bsc-2);
|
||||
.detail-content{
|
||||
.detail-close{
|
||||
svg{
|
||||
stroke-width: 1;
|
||||
stroke: var(--g-c-8);
|
||||
&:hover{
|
||||
stroke-width: 2px;
|
||||
stroke: var(--g-c-9);
|
||||
}
|
||||
}
|
||||
}
|
||||
.detail-body{
|
||||
.info, .desc, .m3u8_urls, .mp4_urls{
|
||||
border-color: var(--g-c-2);
|
||||
}
|
||||
.m3u8_urls, .mp4_urls{
|
||||
.box{
|
||||
span{
|
||||
border-color: var(--g-c-5);
|
||||
&:hover{
|
||||
color: var(--g-fc-2);
|
||||
background-color: var(--g-c-1);
|
||||
border-color: var(--g-c-8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.film{
|
||||
.top{
|
||||
.search{
|
||||
background-color: var(--g-bgc-1);
|
||||
box-shadow: var(--g-bsc);
|
||||
&:hover{
|
||||
box-shadow: var(--g-bsc-hover);
|
||||
}
|
||||
svg{
|
||||
stroke: var(--g-c-0);
|
||||
stroke-width: 1;
|
||||
fill: none;
|
||||
}
|
||||
.search-box{
|
||||
background-color: var(--g-bgc-1);
|
||||
}
|
||||
&.active{
|
||||
box-shadow: var(--g-bsc-hover);
|
||||
svg{
|
||||
stroke-width: 1.5;
|
||||
fill: var(--g-c-2);
|
||||
}
|
||||
}
|
||||
input{
|
||||
color: var(--g-fc-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
.middle{
|
||||
background-color: var(--g-bgc-1);
|
||||
box-shadow: var(--g-bsc);
|
||||
}
|
||||
}
|
||||
.play{
|
||||
background-color: var(--g-bgc-1);
|
||||
box-shadow: var(--g-bsc);
|
||||
.title{
|
||||
color: var(--g-fc-1);
|
||||
}
|
||||
.box{
|
||||
.more{
|
||||
span{
|
||||
svg{
|
||||
stroke: var(--g-c-5);
|
||||
stroke-width: 1;
|
||||
fill: none;
|
||||
}
|
||||
&:hover{
|
||||
svg{
|
||||
stroke: var(--g-c-8);
|
||||
stroke-width: 1.5;
|
||||
fill: var(--g-c-2);
|
||||
}
|
||||
}
|
||||
&.active{
|
||||
svg{
|
||||
stroke: var(--g-c-9);
|
||||
stroke-width: 2;
|
||||
fill: var(--g-c-3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.list{
|
||||
border: 1px solid var(--g-c-3);
|
||||
background-color: var(--g-bgc-2);
|
||||
.list-top{
|
||||
color: var(--g-fc-2);
|
||||
.list-top-close{
|
||||
svg{
|
||||
stroke: var(--g-c-5);
|
||||
stroke-width: 1;
|
||||
fill: none;
|
||||
&:hover{
|
||||
stroke: var(--g-c-8);
|
||||
stroke-width: 1.5;
|
||||
fill: var(--g-c-2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.list-body{
|
||||
.list-item{
|
||||
li{
|
||||
color: var(--g-fc-1);
|
||||
&.active{
|
||||
background-color: var(--g-c-2);
|
||||
color: var(--g-fc-3);
|
||||
}
|
||||
}
|
||||
}
|
||||
.list-history{
|
||||
li{
|
||||
.title{
|
||||
color: var(--g-fc-1);
|
||||
}
|
||||
&.active{
|
||||
background-color: var(--g-c-2);
|
||||
.title{
|
||||
color: var(--g-fc-3);
|
||||
}
|
||||
}
|
||||
&:hover{
|
||||
background-color: var(--g-c-3);
|
||||
.detail-delete{
|
||||
display: inline-block;
|
||||
color: var(--g-fc-2);
|
||||
}
|
||||
}
|
||||
.detail-delete{
|
||||
&:hover{
|
||||
background-color: var(--g-c-2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.play-mask{
|
||||
background-color: var(--g-bgc-1);
|
||||
color: var(--g-fc-1);
|
||||
}
|
||||
}
|
||||
.star{
|
||||
background-color: var(--g-bgc-1);
|
||||
box-shadow: var(--g-bsc);
|
||||
}
|
||||
.setting{
|
||||
background-color: var(--g-bgc-1);
|
||||
box-shadow: var(--g-bsc);
|
||||
.info{
|
||||
a{
|
||||
color: var(--g-fc-1);
|
||||
&:hover{
|
||||
color: var(--g-fc-2);
|
||||
}
|
||||
}
|
||||
}
|
||||
.theme{
|
||||
.title{
|
||||
color: var(--g-fc-1);
|
||||
}
|
||||
.theme-item{
|
||||
box-shadow: var(--g-bsc);
|
||||
&:hover{
|
||||
box-shadow: var(--g-bsc-hover);
|
||||
.theme-name{
|
||||
color: var(--g-fc-2)
|
||||
}
|
||||
}
|
||||
.theme-name{
|
||||
color: var(--g-fc-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
.qrcode{
|
||||
.title{
|
||||
color: var(--g-fc-1);
|
||||
}
|
||||
.qrcode-item{
|
||||
box-shadow: var(--g-bsc);
|
||||
}
|
||||
}
|
||||
}
|
||||
.share{
|
||||
background-color: var(--g-bgc-1);
|
||||
color: var(--g-fc-1);
|
||||
border: 1px solid var(--g-c-8);
|
||||
.right{
|
||||
color: var(--g-fc-1);
|
||||
.tops{
|
||||
color: var(--g-fc-2);
|
||||
}
|
||||
}
|
||||
.share-mask{
|
||||
background-color: var(--g-bgc-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@ function createWindow () {
|
||||
height: 720,
|
||||
frame: false,
|
||||
resizable: false,
|
||||
transparent: false,
|
||||
transparent: true,
|
||||
webPreferences: {
|
||||
webSecurity: false,
|
||||
nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<!-- tags -->
|
||||
<div class="zy-select" @mouseleave="show.tags = false" v-if="site.tags.length > 0">
|
||||
<div class="zy-select" @mouseleave="show.tags = false" v-if="site.tags.length > 0 && keywords.length <= 0">
|
||||
<div class="vs-placeholder" @click="show.tags = true">{{site.tags[tag].title}}</div>
|
||||
<div class="vs-options" v-show="show.tags">
|
||||
<ul>
|
||||
@@ -20,7 +20,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<!-- type -->
|
||||
<div class="zy-select" @mouseleave="show.type = false" v-if="site.tags[tag].children.length > 0">
|
||||
<div class="zy-select" @mouseleave="show.type = false" v-if="site.tags[tag].children.length > 0 && keywords.length <= 0">
|
||||
<div class="vs-placeholder" @click="show.type = true">{{typeName}}</div>
|
||||
<div class="vs-options" v-show="show.type">
|
||||
<ul>
|
||||
@@ -172,18 +172,22 @@ export default {
|
||||
},
|
||||
siteClick (e) {
|
||||
this.site = e
|
||||
this.tb.update = 0
|
||||
this.tb.total = 0
|
||||
this.tag = 0
|
||||
this.id = e.tags[0].id
|
||||
this.tb.loading = true
|
||||
this.show.site = false
|
||||
tools.film_get(e.key, this.id).then(res => {
|
||||
this.tb.list = res.list
|
||||
this.tb.total = res.total
|
||||
this.tb.update = res.update
|
||||
this.tb.loading = false
|
||||
})
|
||||
if (this.keywords.length > 0) {
|
||||
this.searchEvent()
|
||||
} else {
|
||||
this.tb.update = 0
|
||||
this.tb.total = 0
|
||||
this.tb.loading = true
|
||||
tools.film_get(e.key, this.id).then(res => {
|
||||
this.tb.list = res.list
|
||||
this.tb.total = res.total
|
||||
this.tb.update = res.update
|
||||
this.tb.loading = false
|
||||
})
|
||||
}
|
||||
},
|
||||
tagClick (e, n) {
|
||||
this.tb.update = 0
|
||||
|
||||
@@ -228,8 +228,10 @@ export default {
|
||||
this.onPlayVideo()
|
||||
this.xg.once('ended', () => {
|
||||
if (res.m3u8_urls.length > 1 && (res.m3u8_urls.length - 1 > this.video.index)) {
|
||||
this.video.currentTime = 0
|
||||
this.video.index++
|
||||
}
|
||||
this.xg.off('ended')
|
||||
})
|
||||
}).catch(err => {
|
||||
this.$m.error(err)
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
<div class="setting">
|
||||
<div class="setting-box zy-scroll" v-if="show.setting">
|
||||
<div class="logo"><img src="@/assets/image/logo.png"></div>
|
||||
<div class="info"><a href="https://github.com/Hunlongyu/ZY-Player">{{$t('website')}}</a><a href="https://github.com/Hunlongyu/ZY-Player/issues/24">{{$t('issues')}}</a></div>
|
||||
<div class="info">
|
||||
<a @click="linkOpen('https://github.com/Hunlongyu/ZY-Player')">{{$t('website')}}</a>
|
||||
<a @click="linkOpen('https://github.com/Hunlongyu/ZY-Player/issues')">{{$t('issues')}}</a>
|
||||
</div>
|
||||
<div class="change">
|
||||
<div class="zy-select" @mouseleave="show.language = false">
|
||||
<div class="vs-placeholder" @click="show.language = true">{{$t('language')}}</div>
|
||||
@@ -36,6 +39,12 @@
|
||||
</div>
|
||||
<div class="theme-name">Dark</div>
|
||||
</div>
|
||||
<div @click="changeTheme('green')" class="theme-item green">
|
||||
<div class="theme-image">
|
||||
<img src="../assets/image/green.png" alt="">
|
||||
</div>
|
||||
<div class="theme-name">Green</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="qrcode">
|
||||
@@ -53,6 +62,7 @@ import { mapMutations } from 'vuex'
|
||||
import setting from '../lib/dexie/setting'
|
||||
import { sites } from '../lib/site/sites'
|
||||
import '../lib/cloud/index.js'
|
||||
import { shell } from 'electron'
|
||||
export default {
|
||||
name: 'setting',
|
||||
data () {
|
||||
@@ -104,6 +114,9 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
...mapMutations(['SET_THEME', 'SET_LANGUAGE', 'SET_SITE']),
|
||||
linkOpen (e) {
|
||||
shell.openExternal(e)
|
||||
},
|
||||
languageClick (e) {
|
||||
this.language = e
|
||||
this.show.language = false
|
||||
@@ -169,6 +182,7 @@ export default {
|
||||
text-decoration: none;
|
||||
margin: 0 10px;
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.change{
|
||||
|
||||
@@ -1082,6 +1082,139 @@ const sites = [
|
||||
children: []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
key: 'okzy',
|
||||
name: 'OK资源网',
|
||||
url: 'https://www.okzy.co',
|
||||
new: 'https://www.okzy.co/?m=vod-index-pg-{page}.html',
|
||||
view: 'https://www.okzy.co/?m=vod-type-id-{id}-page-{page}.html',
|
||||
search: 'https://www.okzy.co/index.php?m=vod-search-pg-{page}-wd-{keywords}.html',
|
||||
type: 0,
|
||||
tags: [
|
||||
{
|
||||
title: '最新',
|
||||
id: 0,
|
||||
children: []
|
||||
},
|
||||
{
|
||||
title: '电影',
|
||||
id: 1,
|
||||
children: [
|
||||
{
|
||||
title: '动作片',
|
||||
id: 5
|
||||
},
|
||||
{
|
||||
title: '喜剧片',
|
||||
id: 6
|
||||
},
|
||||
{
|
||||
title: '爱情片',
|
||||
id: 7
|
||||
},
|
||||
{
|
||||
title: '科幻片',
|
||||
id: 8
|
||||
},
|
||||
{
|
||||
title: '恐怖片',
|
||||
id: 9
|
||||
},
|
||||
{
|
||||
title: '剧情片',
|
||||
id: 10
|
||||
},
|
||||
{
|
||||
title: '战争片',
|
||||
id: 11
|
||||
},
|
||||
{
|
||||
title: '纪录片',
|
||||
id: 19
|
||||
},
|
||||
{
|
||||
title: '微电影',
|
||||
id: 20
|
||||
},
|
||||
{
|
||||
title: '伦理片',
|
||||
id: 21
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '连续剧',
|
||||
id: 2,
|
||||
children: [
|
||||
{
|
||||
title: '国产剧',
|
||||
id: 12
|
||||
},
|
||||
{
|
||||
title: '香港剧',
|
||||
id: 13
|
||||
},
|
||||
{
|
||||
title: '韩国剧',
|
||||
id: 14
|
||||
},
|
||||
{
|
||||
title: '欧美剧',
|
||||
id: 15
|
||||
},
|
||||
{
|
||||
title: '台湾剧',
|
||||
id: 16
|
||||
},
|
||||
{
|
||||
title: '日本剧',
|
||||
id: 17
|
||||
},
|
||||
{
|
||||
title: '海外剧',
|
||||
id: 18
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '综艺片',
|
||||
id: 3,
|
||||
children: [
|
||||
{
|
||||
title: '内地综艺',
|
||||
id: 26
|
||||
},
|
||||
{
|
||||
title: '港台综艺',
|
||||
id: 27
|
||||
},
|
||||
{
|
||||
title: '日韩综艺',
|
||||
id: 28
|
||||
},
|
||||
{
|
||||
title: '欧美综艺',
|
||||
id: 29
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '动漫片',
|
||||
id: 4,
|
||||
children: []
|
||||
},
|
||||
{
|
||||
title: '福利片',
|
||||
id: 22,
|
||||
children: []
|
||||
},
|
||||
{
|
||||
title: '解说',
|
||||
id: 33,
|
||||
children: []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ const zy = {
|
||||
page: 1, // 第几页
|
||||
keywords: '', // 搜索关键字
|
||||
// 获取浏览列表
|
||||
film_get (key, id = 1, page = 1) {
|
||||
film_get (key, id = 0, page = 1) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const site = getSite(key)
|
||||
let url = ''
|
||||
|
||||
@@ -11,7 +11,7 @@ module.exports = {
|
||||
oneClick: false,
|
||||
allowToChangeInstallationDirectory: true
|
||||
},
|
||||
productName: 'ZY Player'
|
||||
productName: 'ZY Player 内测版'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user