Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f003b1b148 | ||
|
|
55ac770461 | ||
|
|
4505186307 | ||
|
|
9ce1a8ddf6 | ||
|
|
ee1fb8fbe5 | ||
|
|
8bee55f706 | ||
|
|
7c5dd0be8d | ||
|
|
ffee7321a0 | ||
|
|
1ab025ccfe | ||
|
|
0e359be8a3 |
23
README.md
@@ -1,5 +1,5 @@
|
||||
<p align="center">
|
||||
<img src="https://i.loli.net/2020/01/20/WEj3Yw8rPXqTcHe.png" >
|
||||
<img src="https://i.loli.net/2020/02/22/jvfBbnEuOq5RS9J.png" >
|
||||
</p>
|
||||
<p align="center">
|
||||
<img src="https://forthebadge.com/images/badges/built-with-love.svg">
|
||||
@@ -12,10 +12,19 @@
|
||||
<p>
|
||||
|
||||
# ZY Player
|
||||
资源播放器, 提供影视资源的浏览,搜索,播放,收藏,查看详情等功能.
|
||||
资源播放器, 提供影视资源的浏览,搜索,播放,收藏,查看详情.
|
||||
1. 视频连播
|
||||
2. 手机观看
|
||||
3. 分享资源
|
||||
4. 多主题
|
||||
5. ...
|
||||
|
||||
### 下载:
|
||||
[下载地址](https://github.com/Hunlongyu/ZY-Player/releases)
|
||||
[Github Release 实时更新,保证最新版](https://github.com/Hunlongyu/ZY-Player/releases)
|
||||
|
||||
[蓝奏云 快速下载通道](https://www.lanzous.com/b04s6a3re) 密码:95px
|
||||
|
||||
[诚通网盘 备用下载通道](https://72k.us/dir/12872257-37375957-d3f41d)
|
||||
|
||||
### 截图:
|
||||
主界面 ⬇
|
||||
@@ -33,13 +42,5 @@
|
||||
收藏 ⬇
|
||||

|
||||
|
||||
### 开发计划:
|
||||
[第二期开发计划](https://github.com/Hunlongyu/ZY-Player/projects/2)
|
||||
|
||||
### 未完成:
|
||||
1. 更换图标: 求大神设计一个 zy 的logo, 256x256 像素,风格请参考:
|
||||
|
||||

|
||||
|
||||
### 重要:
|
||||
所有资源来自网上, 该软件不参与任何制作, 上传, 储存, 下载等内容. 该软件仅供学习参考, 请于安装后24小时内删除.
|
||||
|
||||
|
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 233 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 497 B After Width: | Height: | Size: 831 B |
|
Before Width: | Height: | Size: 891 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 353 KiB After Width: | Height: | Size: 353 KiB |
@@ -29,13 +29,17 @@
|
||||
function get (name) {
|
||||
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
|
||||
var r = window.location.search.substr(1).match(reg);//search,查询?后面的参数,并匹配正则
|
||||
if(r!=null)return unescape(r[2]); return null;
|
||||
if (r!=null)return unescape(r[2]); return null;
|
||||
}
|
||||
let link = window.location.href
|
||||
let info = get('info')
|
||||
let time = get('time')
|
||||
let title = info.split('$')[0]
|
||||
let url = info.split('$')[1]
|
||||
let flag = info.indexOf('$')
|
||||
if (flag > 0) {
|
||||
let url = info.split('$')[1]
|
||||
} else {
|
||||
let url = info
|
||||
}
|
||||
let player = new window.HlsJsPlayer({
|
||||
id: 'mse',
|
||||
url: url,
|
||||
@@ -49,7 +53,6 @@
|
||||
})
|
||||
player.on('play', function () {
|
||||
player.currentTime = time
|
||||
document.title = title
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "zy",
|
||||
"version": "0.8.6",
|
||||
"version": "0.9.0",
|
||||
"author": "Hunlongyu",
|
||||
"description": "ZY Player 资源播放器",
|
||||
"private": true,
|
||||
@@ -13,7 +13,7 @@
|
||||
"postinstall": "electron-builder install-app-deps",
|
||||
"postuninstall": "electron-builder install-app-deps",
|
||||
"electron:generate-icons": "electron-icon-builder --input=./public/icon.png --output=build --flatten",
|
||||
"bp": "vue-cli-service electron:build --win -p always"
|
||||
"bp": "vue-cli-service electron:build --win --x64 -p always"
|
||||
},
|
||||
"main": "background.js",
|
||||
"dependencies": {
|
||||
|
||||
BIN
public/icon.png
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 17 KiB |
@@ -91,6 +91,8 @@ export default Vue.extend({
|
||||
@import './assets/theme/global.scss';
|
||||
@import './assets/theme/dark.scss';
|
||||
@import './assets/theme/light.scss';
|
||||
@import './assets/theme/pink.scss';
|
||||
@import './assets/theme/green.scss';
|
||||
*{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
@@ -101,7 +103,6 @@ html,body{
|
||||
}
|
||||
#app{
|
||||
height: 100%;
|
||||
user-select: none;
|
||||
.Header{
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
@@ -136,6 +137,7 @@ html,body{
|
||||
.Main{
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
user-select: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
BIN
src/assets/image/alipay.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 23 KiB |
BIN
src/assets/image/green.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 25 KiB |
BIN
src/assets/image/pink.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
src/assets/image/wepay.jpg
Normal file
|
After Width: | Height: | Size: 232 KiB |
@@ -6,32 +6,64 @@
|
||||
background-color: var(--d-bgc);
|
||||
border-color: var(--d-bdc);
|
||||
}
|
||||
.el-select .el-input .el-select__caret{
|
||||
color: var(--d-icon)
|
||||
}
|
||||
.el-button--text{
|
||||
border: none;
|
||||
}
|
||||
.el-button--text:focus, .el-button--text:hover{
|
||||
color: var(--d-c-h);
|
||||
}
|
||||
.el-tabs__active-bar{
|
||||
background-color: var(--d-bdc);
|
||||
}
|
||||
.el-tabs__item:hover, .el-tabs__item.is-active{
|
||||
color: var(--d-c-h);
|
||||
}
|
||||
.el-tabs__item, .el-tabs__nav-wrap::after{
|
||||
color: var(--d-c);
|
||||
background-color: var(--d-bgc);
|
||||
border-color: var(--d-dbc);
|
||||
border-color: var(--d-bdc);
|
||||
}
|
||||
.el-table--border::after, .el-table--group::after, .el-table::before,
|
||||
.el-table--border::after, .el-table--droup::after, .el-table::before,
|
||||
.el-table, .el-table th, .el-table tr,
|
||||
.el-table--striped .el-table__body tr.el-table__row--striped td,
|
||||
.el-table--enable-row-hover .el-table__body tr:hover>td,
|
||||
.el-table td, .el-table th.is-leaf{
|
||||
color: var(--d-c);
|
||||
background-color: var(--d-bgc);
|
||||
border-color: var(--d-dbc);
|
||||
border-color: var(--d-bdc);
|
||||
}
|
||||
.el-pagination, .el-pagination .el-pagination__total, .el-pagination .el-pagination__jump,
|
||||
.el-pagination .btn-next, .el-pagination .btn-prev, .el-pager li{
|
||||
color: var(--d-c);
|
||||
background-color: var(--d-bgc);
|
||||
}
|
||||
.el-input__inner,
|
||||
.el-pager li:hover, .el-pager li.active, .el-pager li.btn-quicknext, .el-pager li.btn-quickprev{
|
||||
color: var(--d-c-h);
|
||||
}
|
||||
.el-input__inner, .el-input__inner:hover,
|
||||
.el-input-group__append, .el-input-group__prepend{
|
||||
background-color: var(--d-bgc);
|
||||
border-color: var(--d-dbc);
|
||||
border-color: var(--d-bdc);
|
||||
}
|
||||
.el-input.is-active .el-input__inner, .el-input__inner:focus{
|
||||
border-color: var(--d-bdc);
|
||||
}
|
||||
.el-input__inner{
|
||||
border-color: var(--d-bdc);
|
||||
}
|
||||
.el-select .el-input.is-focus .el-input__inner,
|
||||
.el-select .el-input__inner:focus,
|
||||
.el-select:hover .el-input__inner{
|
||||
border-color: var(--d-bdc);
|
||||
}
|
||||
input::-webkit-input-placeholder{
|
||||
color: var(--d-c);
|
||||
}
|
||||
.el-icon-search{
|
||||
color: var(--d-icon);
|
||||
}
|
||||
.el-select-dropdown{
|
||||
color: var(--d-c);
|
||||
@@ -47,6 +79,12 @@
|
||||
background-color: var(--d-bgc);
|
||||
opacity: 0.9;
|
||||
}
|
||||
.el-slider__bar{
|
||||
background-color: var(--d-c-h);
|
||||
}
|
||||
.el-slider__button{
|
||||
border-color: var(--d-c-h);
|
||||
}
|
||||
.Header, .Aside{
|
||||
i{
|
||||
color: var(--d-icon);
|
||||
@@ -67,6 +105,11 @@
|
||||
}
|
||||
.Main{
|
||||
.film, .search, .star, .player{
|
||||
button:hover{
|
||||
color: var(--d-c-h);
|
||||
background: var(--d-bgc);
|
||||
border-color: var(--d-bdc);
|
||||
}
|
||||
.table-box{
|
||||
&::-webkit-scrollbar-track {
|
||||
box-shadow: inset 0 0 6px var(--d-bdc);
|
||||
@@ -77,6 +120,13 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
.player{
|
||||
.el-button--primary.is-plain{
|
||||
color: var(--d-c);
|
||||
background-color: var(--d-bgc-h);
|
||||
border-color: var(--d-bdc);
|
||||
}
|
||||
}
|
||||
.setting{
|
||||
.el-link, .card{
|
||||
color: var(--d-c);
|
||||
|
||||
@@ -16,4 +16,22 @@
|
||||
--d-bgc: #242424;
|
||||
--d-bgc-h: #454545;
|
||||
--d-bdc: #7a7a7a;
|
||||
|
||||
// pink
|
||||
--p-c: #ffffff;
|
||||
--p-c-h: #fd7792;
|
||||
--p-icon: #ffffff;
|
||||
--p-icon-h: #fd7792;
|
||||
--p-bgc: #ffbaba;
|
||||
--p-bgc-h: #ffc5c5;
|
||||
--p-bdc: #fdcfcf;
|
||||
|
||||
// green
|
||||
--g-c: #ffffff;
|
||||
--g-c-h: #ebe65b;
|
||||
--g-icon: #ffffff;
|
||||
--g-icon-h: #ebe65b;
|
||||
--g-bgc: #4baea0;
|
||||
--g-bgc-h: #6db8ac;
|
||||
--g-bdc: #76d3c5;
|
||||
}
|
||||
159
src/assets/theme/green.scss
Normal file
@@ -0,0 +1,159 @@
|
||||
.theme-green{
|
||||
color: var(--g-c);
|
||||
background-color: var(--g-bgc);
|
||||
.el-button, input, select, .el-select{
|
||||
color: var(--g-c);
|
||||
background-color: var(--g-bgc);
|
||||
border-color: var(--g-bdc);
|
||||
}
|
||||
.el-select .el-input .el-select__caret{
|
||||
color: var(--g-icon)
|
||||
}
|
||||
.el-button--text{
|
||||
border: none;
|
||||
}
|
||||
.el-button--text:focus, .el-button--text:hover{
|
||||
color: var(--g-c-h);
|
||||
}
|
||||
.el-tabs__active-bar{
|
||||
background-color: var(--g-bdc);
|
||||
}
|
||||
.el-tabs__item:hover, .el-tabs__item.is-active{
|
||||
color: var(--g-c-h);
|
||||
}
|
||||
.el-tabs__item, .el-tabs__nav-wrap::after{
|
||||
color: var(--g-c);
|
||||
background-color: var(--g-bgc);
|
||||
border-color: var(--g-bdc);
|
||||
}
|
||||
.el-table--border::after, .el-table--group::after, .el-table::before,
|
||||
.el-table, .el-table th, .el-table tr,
|
||||
.el-table--striped .el-table__body tr.el-table__row--striped td,
|
||||
.el-table--enable-row-hover .el-table__body tr:hover>td,
|
||||
.el-table td, .el-table th.is-leaf{
|
||||
color: var(--g-c);
|
||||
background-color: var(--g-bgc);
|
||||
border-color: var(--g-bdc);
|
||||
}
|
||||
.el-pagination, .el-pagination .el-pagination__total, .el-pagination .el-pagination__jump,
|
||||
.el-pagination .btn-next, .el-pagination .btn-prev, .el-pager li{
|
||||
color: var(--g-c);
|
||||
background-color: var(--g-bgc);
|
||||
}
|
||||
.el-pager li:hover, .el-pager li.active, .el-pager li.btn-quicknext, .el-pager li.btn-quickprev{
|
||||
color: var(--g-c-h);
|
||||
}
|
||||
.el-input__inner, .el-input__inner:hover,
|
||||
.el-input-group__append, .el-input-group__prepend{
|
||||
background-color: var(--g-bgc);
|
||||
border-color: var(--g-bdc);
|
||||
}
|
||||
.el-input.is-active .el-input__inner, .el-input__inner:focus{
|
||||
border-color: var(--g-bdc);
|
||||
}
|
||||
.el-input__inner{
|
||||
border-color: var(--g-bdc);
|
||||
}
|
||||
.el-select .el-input.is-focus .el-input__inner,
|
||||
.el-select .el-input__inner:focus,
|
||||
.el-select:hover .el-input__inner{
|
||||
border-color: var(--g-bdc);
|
||||
}
|
||||
input::-webkit-input-placeholder{
|
||||
color: var(--g-c);
|
||||
}
|
||||
.el-icon-search{
|
||||
color: var(--g-icon);
|
||||
}
|
||||
.el-select-dropdown{
|
||||
color: var(--g-c);
|
||||
}
|
||||
.el-drawer{
|
||||
background-color: var(--g-bgc) !important;
|
||||
overflow: auto;
|
||||
&::-webkit-scrollbar{
|
||||
width: 0px;
|
||||
}
|
||||
}
|
||||
.el-loading-mask{
|
||||
background-color: var(--g-bgc);
|
||||
opacity: 0.9;
|
||||
}
|
||||
.el-slider__bar{
|
||||
background-color: var(--g-c-h);
|
||||
}
|
||||
.el-slider__button{
|
||||
border-color: var(--g-c-h);
|
||||
}
|
||||
.Header, .Aside{
|
||||
i{
|
||||
color: var(--g-icon);
|
||||
&:hover{
|
||||
color: var(--g-icon-h);
|
||||
background-color: var(--g-bgc-h);
|
||||
}
|
||||
}
|
||||
}
|
||||
.Aside{
|
||||
i{
|
||||
&.active{
|
||||
color: var(--g-icon-h);
|
||||
background-color: var(--g-bgc-h);
|
||||
border-left: 4px solid var(--g-icon-h);
|
||||
}
|
||||
}
|
||||
}
|
||||
.Main{
|
||||
.film, .search, .star, .player{
|
||||
button:hover{
|
||||
color: var(--g-c-h);
|
||||
background: var(--g-bgc);
|
||||
border-color: var(--g-bdc);
|
||||
}
|
||||
.table-box{
|
||||
&::-webkit-scrollbar-track {
|
||||
box-shadow: inset 0 0 6px var(--g-bdc);
|
||||
}
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background-color: var(--g-icon);
|
||||
outline: 1px solid var(--g-icon);
|
||||
}
|
||||
}
|
||||
}
|
||||
.player{
|
||||
.el-button--primary.is-plain{
|
||||
color: var(--g-c-h);
|
||||
background-color: var(--g-bgc-h);
|
||||
border-color: var(--g-bdc);
|
||||
}
|
||||
}
|
||||
.setting{
|
||||
.el-link, .card{
|
||||
color: var(--g-c);
|
||||
background-color: var(--g-bgc);
|
||||
border-color: var(--g-bdc);
|
||||
}
|
||||
}
|
||||
}
|
||||
.detail{
|
||||
color: var(--g-c);
|
||||
&::-webkit-scrollbar-track {
|
||||
box-shadow: inset 0 0 6px var(--g-bdc);
|
||||
}
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background-color: var(--g-icon);
|
||||
outline: 1px solid var(--g-icon);
|
||||
}
|
||||
.box, .info, .urls{
|
||||
border: 1px solid var(--g-bdc);
|
||||
}
|
||||
.vodInfo{
|
||||
li, span, a{
|
||||
color: var(--g-c);
|
||||
}
|
||||
label{
|
||||
color: #f90;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
159
src/assets/theme/pink.scss
Normal file
@@ -0,0 +1,159 @@
|
||||
.theme-pink{
|
||||
color: var(--p-c);
|
||||
background-color: var(--p-bgc);
|
||||
.el-button, input, select, .el-select{
|
||||
color: var(--p-c);
|
||||
background-color: var(--p-bgc);
|
||||
border-color: var(--p-bdc);
|
||||
}
|
||||
.el-select .el-input .el-select__caret{
|
||||
color: var(--p-icon)
|
||||
}
|
||||
.el-button--text{
|
||||
border: none;
|
||||
}
|
||||
.el-button--text:focus, .el-button--text:hover{
|
||||
color: var(--p-c-h);
|
||||
}
|
||||
.el-tabs__active-bar{
|
||||
background-color: var(--p-bdc);
|
||||
}
|
||||
.el-tabs__item:hover, .el-tabs__item.is-active{
|
||||
color: var(--p-c-h);
|
||||
}
|
||||
.el-tabs__item, .el-tabs__nav-wrap::after{
|
||||
color: var(--p-c);
|
||||
background-color: var(--p-bgc);
|
||||
border-color: var(--p-bdc);
|
||||
}
|
||||
.el-table--border::after, .el-table--proup::after, .el-table::before,
|
||||
.el-table, .el-table th, .el-table tr,
|
||||
.el-table--striped .el-table__body tr.el-table__row--striped td,
|
||||
.el-table--enable-row-hover .el-table__body tr:hover>td,
|
||||
.el-table td, .el-table th.is-leaf{
|
||||
color: var(--p-c);
|
||||
background-color: var(--p-bgc);
|
||||
border-color: var(--p-bdc);
|
||||
}
|
||||
.el-pagination, .el-pagination .el-pagination__total, .el-pagination .el-pagination__jump,
|
||||
.el-pagination .btn-next, .el-pagination .btn-prev, .el-pager li{
|
||||
color: var(--p-c);
|
||||
background-color: var(--p-bgc);
|
||||
}
|
||||
.el-pager li:hover, .el-pager li.active, .el-pager li.btn-quicknext, .el-pager li.btn-quickprev{
|
||||
color: var(--p-c-h);
|
||||
}
|
||||
.el-input__inner, .el-input__inner:hover,
|
||||
.el-input-group__append, .el-input-group__prepend{
|
||||
background-color: var(--p-bgc);
|
||||
border-color: var(--p-bdc);
|
||||
}
|
||||
.el-input.is-active .el-input__inner, .el-input__inner:focus{
|
||||
border-color: var(--p-bdc);
|
||||
}
|
||||
.el-input__inner{
|
||||
border-color: var(--p-bdc);
|
||||
}
|
||||
.el-select .el-input.is-focus .el-input__inner,
|
||||
.el-select .el-input__inner:focus,
|
||||
.el-select:hover .el-input__inner{
|
||||
border-color: var(--p-bdc);
|
||||
}
|
||||
input::-webkit-input-placeholder{
|
||||
color: var(--p-c);
|
||||
}
|
||||
.el-icon-search{
|
||||
color: var(--p-icon);
|
||||
}
|
||||
.el-select-dropdown{
|
||||
color: var(--p-c);
|
||||
}
|
||||
.el-drawer{
|
||||
background-color: var(--p-bgc) !important;
|
||||
overflow: auto;
|
||||
&::-webkit-scrollbar{
|
||||
width: 0px;
|
||||
}
|
||||
}
|
||||
.el-loading-mask{
|
||||
background-color: var(--p-bgc);
|
||||
opacity: 0.9;
|
||||
}
|
||||
.el-slider__bar{
|
||||
background-color: var(--p-c-h);
|
||||
}
|
||||
.el-slider__button{
|
||||
border-color: var(--p-c-h);
|
||||
}
|
||||
.Header, .Aside{
|
||||
i{
|
||||
color: var(--p-icon);
|
||||
&:hover{
|
||||
color: var(--p-icon-h);
|
||||
background-color: var(--p-bgc-h);
|
||||
}
|
||||
}
|
||||
}
|
||||
.Aside{
|
||||
i{
|
||||
&.active{
|
||||
color: var(--p-icon-h);
|
||||
background-color: var(--p-bgc-h);
|
||||
border-left: 4px solid var(--p-icon-h);
|
||||
}
|
||||
}
|
||||
}
|
||||
.Main{
|
||||
.film, .search, .star, .player{
|
||||
button:hover{
|
||||
color: var(--p-c-h);
|
||||
background: var(--p-bgc);
|
||||
border-color: var(--p-bdc);
|
||||
}
|
||||
.table-box{
|
||||
&::-webkit-scrollbar-track {
|
||||
box-shadow: inset 0 0 6px var(--p-bdc);
|
||||
}
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background-color: var(--p-icon);
|
||||
outline: 1px solid var(--p-icon);
|
||||
}
|
||||
}
|
||||
}
|
||||
.player{
|
||||
.el-button--primary.is-plain{
|
||||
color: var(--p-c-h);
|
||||
background-color: var(--p-bgc-h);
|
||||
border-color: var(--p-bdc);
|
||||
}
|
||||
}
|
||||
.setting{
|
||||
.el-link, .card{
|
||||
color: var(--p-c);
|
||||
background-color: var(--p-bgc);
|
||||
border-color: var(--p-bdc);
|
||||
}
|
||||
}
|
||||
}
|
||||
.detail{
|
||||
color: var(--p-c);
|
||||
&::-webkit-scrollbar-track {
|
||||
box-shadow: inset 0 0 6px var(--p-bdc);
|
||||
}
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background-color: var(--p-icon);
|
||||
outline: 1px solid var(--p-icon);
|
||||
}
|
||||
.box, .info, .urls{
|
||||
border: 1px solid var(--p-bdc);
|
||||
}
|
||||
.vodInfo{
|
||||
li, span, a{
|
||||
color: var(--p-c);
|
||||
}
|
||||
label{
|
||||
color: #f90;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -78,14 +78,14 @@ export default Vue.extend({
|
||||
},
|
||||
created () {
|
||||
this.getDetailEvent()
|
||||
},
|
||||
mounted () {}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.detail{
|
||||
box-sizing: border-box;
|
||||
padding: 0 60px;
|
||||
user-select: auto;
|
||||
.detail-box{
|
||||
width: 100%;
|
||||
.box{
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
<el-button size="mini" @click="openDetail" icon="el-icon-document" title="查看详情" circle></el-button>
|
||||
<el-button size="mini" v-show="!star" @click="starEvent" icon="el-icon-star-off" title="添加收藏" circle></el-button>
|
||||
<el-button size="mini" v-show="star" @click="starEvent" icon="el-icon-star-on" title="取消收藏" circle></el-button>
|
||||
<el-button size="mini" @click="shareEvent" icon="el-icon-share" title="分享" circle></el-button>
|
||||
<el-popover placement="bottom" width="150" trigger="click">
|
||||
<el-row id="qrcode"></el-row>
|
||||
<el-button v-show="xg !== null" size="mini" @click="mobileEvent" icon="el-icon-mobile-phone" title="手机观看" circle slot="reference" style="margin-left: 10px;"></el-button>
|
||||
@@ -30,7 +31,7 @@
|
||||
</el-row>
|
||||
<el-row class="player-none" v-if="Object.keys(video).length <= 0">
|
||||
<el-row class="tips">
|
||||
浏览或者搜索资源, 点击播放视频, 即可观看~
|
||||
浏览或者搜索资源, 点击播放, 即可观看~
|
||||
</el-row>
|
||||
<el-row class="btns">
|
||||
<el-button size="small" @click="goView('Film')" icon="el-icon-film">浏览</el-button>
|
||||
@@ -48,7 +49,7 @@ import 'xgplayer'
|
||||
import Hls from 'xgplayer-hls.js'
|
||||
import video from '@/plugins/dexie/video'
|
||||
import { qrcanvas } from 'qrcanvas'
|
||||
const { ipcRenderer: ipc } = require('electron')
|
||||
const { ipcRenderer: ipc, clipboard } = require('electron')
|
||||
export default Vue.extend({
|
||||
data () {
|
||||
return {
|
||||
@@ -145,6 +146,11 @@ export default Vue.extend({
|
||||
this.num = v.split('$')[0]
|
||||
// @ts-ignore
|
||||
this.xg.src = url
|
||||
video.find({ detail: this.video.detail }).then(res => {
|
||||
if (res) {
|
||||
video.update(res.id, this.video)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -193,6 +199,15 @@ export default Vue.extend({
|
||||
dom.appendChild(canvas)
|
||||
}
|
||||
},
|
||||
shareEvent () {
|
||||
let info: string = this.urls[this.video.index]
|
||||
let title = this.video.name.replace(/^\s*|\s*$/g, '')
|
||||
let url = info.split('$')[1]
|
||||
let data = `http://zy.hly120506.top/player/index.html?info=${url}`
|
||||
let txt = `资源名称: ${title}\n播放地址:${data}`
|
||||
clipboard.writeText(txt)
|
||||
this.$message.success('资源已复制到剪贴板中,快去分享吧~')
|
||||
},
|
||||
playBtnClick (i: string, j: number) {
|
||||
if (this.video.index !== j) {
|
||||
let url = i.split('$')[1]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<el-row class="search">
|
||||
<el-row class="search-box" :class="table === true ? 'search-box hasTable' : 'search-box'">
|
||||
<el-input class="search-input" size="medium" clearable placeholder="请输入内容" v-model.trim="keywords" @change="searchEvent" @clear="clearEvent">
|
||||
<el-input class="search-input" size="medium" clearable placeholder="请输入资源名称..." v-model.trim="keywords" @change="searchEvent" @clear="clearEvent">
|
||||
<el-select v-model="site" slot="prepend" placeholder="请选择" @change="selectSite" style="width: 130px;">
|
||||
<el-option v-for="(i, j) in sites" :key="i.id" :label="i.name" :value="j"></el-option>
|
||||
</el-select>
|
||||
@@ -133,8 +133,7 @@ export default Vue.extend({
|
||||
this.video = e
|
||||
}
|
||||
}
|
||||
},
|
||||
created () {}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@@ -31,18 +31,14 @@
|
||||
<img src="@/assets/image/dark.png" class="image" @click="selectTheme('dark')">
|
||||
<span size="mini">Dark</span>
|
||||
</el-card>
|
||||
</el-row>
|
||||
</el-row>
|
||||
<el-row class="item update">
|
||||
<el-row class="title"><i class="el-icon-refresh"></i><span>更新</span></el-row>
|
||||
<el-row class="info">
|
||||
<ul>
|
||||
<li>当前版本: {{oldVersion}}</li>
|
||||
<li>最新版本: {{newVersion}}</li>
|
||||
</ul>
|
||||
</el-row>
|
||||
<el-row class="btns">
|
||||
<el-button v-show="download" size="small" @click="linkOpen('https://github.com/Hunlongyu/ZY-Player/releases/latest')">下载更新</el-button>
|
||||
<el-card shadow="hover" class="card">
|
||||
<img src="@/assets/image/pink.png" class="image" @click="selectTheme('pink')">
|
||||
<span size="mini">Pink</span>
|
||||
</el-card>
|
||||
<el-card shadow="hover" class="card">
|
||||
<img src="@/assets/image/green.png" class="image" @click="selectTheme('green')">
|
||||
<span size="mini">Green</span>
|
||||
</el-card>
|
||||
</el-row>
|
||||
</el-row>
|
||||
<el-row class="item about">
|
||||
@@ -54,6 +50,13 @@
|
||||
</ul>
|
||||
</el-row>
|
||||
</el-row>
|
||||
<el-row class="item opacity">
|
||||
<el-row class="title"><i class="el-icon-coffee"></i><span>请喝一杯咖啡</span></el-row>
|
||||
<el-row class="qrcode">
|
||||
<img src="@/assets/image/alipay.png" alt="">
|
||||
<img src="@/assets/image/wepay.jpg" alt="">
|
||||
</el-row>
|
||||
</el-row>
|
||||
</el-row>
|
||||
</el-row>
|
||||
</template>
|
||||
@@ -72,9 +75,7 @@ export default Vue.extend({
|
||||
return {
|
||||
sites: sites,
|
||||
dbSite: 0,
|
||||
opacity: 100,
|
||||
oldVersion: 'v0.8.6',
|
||||
newVersion: '',
|
||||
opacity: 98,
|
||||
download: false
|
||||
}
|
||||
},
|
||||
@@ -136,23 +137,12 @@ export default Vue.extend({
|
||||
this.$message.warning('切换主题失败~')
|
||||
})
|
||||
},
|
||||
checkUpdate () {
|
||||
fly.get('https://api.github.com/repos/Hunlongyu/ZY-Player/releases/latest').then(res => {
|
||||
this.newVersion = res.data.tag_name
|
||||
if (res.data.tag_name !== this.oldVersion) {
|
||||
this.download = true
|
||||
} else {
|
||||
this.download = false
|
||||
}
|
||||
})
|
||||
},
|
||||
setOpacity () {
|
||||
ipc.send('opacity', this.opacity / 100)
|
||||
}
|
||||
},
|
||||
created () {
|
||||
this.initSetting()
|
||||
this.checkUpdate()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
@@ -191,15 +181,6 @@ export default Vue.extend({
|
||||
}
|
||||
}
|
||||
}
|
||||
.update{
|
||||
ul{
|
||||
list-style: none;
|
||||
li{
|
||||
height: 30px;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.opacity{
|
||||
.info{
|
||||
width: 196px;
|
||||
@@ -225,5 +206,12 @@ export default Vue.extend({
|
||||
}
|
||||
}
|
||||
}
|
||||
.qrcode{
|
||||
img{
|
||||
height: 300px;
|
||||
width: auto;
|
||||
margin: 0 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
<template>
|
||||
<el-row class="star">
|
||||
<el-row class="star-table-box table-box">
|
||||
<el-table :data="filmData" stripe class="film-table" size="mini" empty-text="收藏夹里空空的~快去填满我吧~">
|
||||
<el-table :data="filmData" stripe class="film-table" size="mini" empty-text="收藏夹里空空的~快去填满吧~">
|
||||
<el-table-column prop="name" label="影片名称"></el-table-column>
|
||||
<el-table-column prop="type" label="影片类别" width="120"></el-table-column>
|
||||
<el-table-column prop="time" label="更新时间" width="180"></el-table-column>
|
||||
<el-table-column label="来源" width="120">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.detail | from }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="small" type="text" @click="tableBtnClick('detail', scope.row)">详情</el-button>
|
||||
@@ -28,6 +33,7 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue'
|
||||
import video from '@/plugins/dexie/video'
|
||||
import sites from '@/lib/sites'
|
||||
import { mapMutations } from 'vuex'
|
||||
export default Vue.extend({
|
||||
data () {
|
||||
@@ -37,6 +43,17 @@ export default Vue.extend({
|
||||
filmTotal: 0
|
||||
}
|
||||
},
|
||||
filters: {
|
||||
from (e: string) {
|
||||
for (let i in sites) {
|
||||
let url = sites[i].url
|
||||
let f = e.indexOf(url)
|
||||
if (f >= 0) {
|
||||
return sites[i].name
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
video: {
|
||||
get () {
|
||||
|
||||
@@ -3,10 +3,21 @@ module.exports = {
|
||||
electronBuilder: {
|
||||
builderOptions: {
|
||||
win: {
|
||||
icon: './build/icons/icon.ico'
|
||||
icon: './build/icons/icon.ico',
|
||||
target: [
|
||||
'nsis','portable', 'zip',
|
||||
]
|
||||
},
|
||||
nsis: {
|
||||
oneClick: false,
|
||||
allowToChangeInstallationDirectory: true
|
||||
},
|
||||
productName: 'ZY Player',
|
||||
publish: ['github']
|
||||
publish: [{
|
||||
'provider': 'github',
|
||||
'owner': 'Hunlongyu',
|
||||
'repo': 'ZY-Player'
|
||||
}]
|
||||
},
|
||||
chainWebpackRendererProcess: config => {
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
|
||||