Compare commits

..

7 Commits

Author SHA1 Message Date
hunlongyu
9b1995e596 😡 解决冲突 2020-05-07 15:13:58 +08:00
hunlongyu
b89b56cce4 😱 添加自动更新代码 2020-05-07 15:12:17 +08:00
hunlongyu
84e2f456f8 🎠 新增绿色护眼主题,修复若干BUG 2020-05-07 00:32:10 +08:00
hunlongyu
3e345bf57b 🥋 修复Bug, 新增视频源 2020-04-30 16:11:48 +08:00
hunlongyu
d70da3dc3e 😂 修复浏览第一次加载时默认不显示全部视频的bug 2020-04-28 17:21:52 +08:00
hunlongyu
8f6a8fef07 🐷 修复圆角透明bug 2020-04-28 17:04:48 +08:00
hunlongyu
bda6e32b04 😂 新旧版本并不会覆盖安装 2020-04-28 16:52:35 +08:00
12 changed files with 572 additions and 22 deletions

View File

@@ -21,7 +21,7 @@ jobs:
- run: |
yarn
yarn electron:build
yarn release
shell: pwsh
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -30,8 +30,6 @@ jobs:
uses: softprops/action-gh-release@v1
with:
files: |
dist_electron/*.exe
dist_electron/*.dmg
dist_electron/*.snap
dist_electron/win-unpacked/*.exe
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,7 +1,12 @@
{
"name": "zyplayer",
"version": "0.9.13",
"name": "zy",
"version": "0.9.19",
"private": true,
"author": {
"name": "Hunlongyu",
"email": "hunlongyu@gmail.com"
},
"description": "ZY Player 资源播放器",
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
@@ -9,7 +14,8 @@
"electron:build": "vue-cli-service electron:build",
"dev": "vue-cli-service electron:serve",
"postinstall": "electron-builder install-app-deps",
"postuninstall": "electron-builder install-app-deps"
"postuninstall": "electron-builder install-app-deps",
"release": "vue-cli-service electron:build -p always"
},
"main": "background.js",
"dependencies": {

BIN
src/assets/image/green.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View File

@@ -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';

View 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);
}
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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{

View File

@@ -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: []
}
]
}
]

View File

@@ -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 = ''

View File

@@ -11,7 +11,32 @@ module.exports = {
oneClick: false,
allowToChangeInstallationDirectory: true
},
productName: 'ZY Player'
productName: 'ZY Player 内测版',
publish: [
{
provider: 'github',
owner: 'Hunlongyu',
repo: 'ZY-Player'
}
],
mac: {
icon: 'build/icon/icon.icns',
category: 'public.app-category.developer-tools',
target: 'default',
extendInfo: {
LSUIElement: 1
}
},
win: {
icon: 'build/icons/icon.ico',
target: 'nsis'
},
linux: {
icon: 'build/icons/'
},
snap: {
publish: ['github']
}
}
}
}