Compare commits

...

10 Commits

Author SHA1 Message Date
hunlongyu
422def0702 🎨🖼 x86 打包 🎭🎪 2020-07-22 09:44:25 +08:00
hunlongyu
fc52d79d88 🎉 V2.0.0 正式版发布 🎇🎊 2020-07-22 09:38:26 +08:00
hunlongyu
b514f1c04e v1.2.6 2020-07-16 00:03:34 +08:00
hunlongyu
189e67eb22 🦺 1.2.5 🥼 2020-07-15 23:55:34 +08:00
hunlongyu
e5c3adf1c5 🎍 1.2.4 🎋 2020-07-15 23:53:53 +08:00
hunlongyu
299367f0b8 修复收藏夹播放多集视频的BUG 🎉 2020-07-15 23:51:27 +08:00
hunlongyu
0d67474459 🎟 版本号 🎫 2020-07-15 17:38:21 +08:00
hunlongyu
15a188aa85 🎍 优化 MINI 模式 🎋 2020-07-15 17:38:00 +08:00
hunlongyu
0555badcfa 🍚 修复列表模式下, 下载BUG 🍜 2020-07-14 16:35:51 +08:00
hunlongyu
6f8f700dfc 🍟 修复BUG 🌭 2020-07-14 15:26:01 +08:00
12 changed files with 93 additions and 66 deletions

View File

@@ -3,7 +3,7 @@ name: release-build
on:
push:
tags:
- x86 *
- x86-*
jobs:
release:

View File

@@ -25,7 +25,8 @@
# 目录
- [特性](#特性)
- [全局快捷键](#全局快捷键)
- [重要](#重要)
- [快捷键](#快捷键)
- [下载](#下载)
- [赞助](#赞助)
- [截图](#截图)
@@ -57,7 +58,10 @@
觉得软件不错的, 点击右上角 star 收藏关注一波呀~
#### 快捷键:
## 重要
从 V1.x 版本升级到 V2.x 版本, 需要重置软件, 由于数据库改动较大, 重置后收藏的资源会丢失. 重置功能在设置界面里.
#### 快捷键
播放窗口 和 Mini窗口
@@ -76,9 +80,9 @@
#### 下载:
1. [Github -- 官方下载(最新版)](https://github.com/Hunlongyu/ZY-Player/releases)
1. [Github -- 官方下载](https://github.com/Hunlongyu/ZY-Player/releases)
2. [蓝奏云 -- 快速下载(老版本)](https://www.lanzous.com/b04s6a3re) 密码:95px
2. [蓝奏云 -- 快速下载](https://www.lanzous.com/b04s6a3re) 密码:95px
3. 适用于32位操作系统的x86软件,在蓝奏云网盘里, 后缀名: ZY Player * 32位.exe
@@ -87,25 +91,24 @@
#### 截图:
0. 分享 ⇣ ↓
![share.gif](https://i.loli.net/2020/06/05/hbJwBXlx194umcO.gif)
1. 浏览 ⇣ ↓
![01浏览.png](https://i.loli.net/2020/05/18/MshDLnXq2CTpoBy.png)
![海报.png](https://i.loli.net/2020/07/22/QDRqv9X1uWbVcpi.png)
![列表.png](https://i.loli.net/2020/07/22/1Rnm6QDyPYWw9ec.png)
2. 搜索 ⇣ ↓
![02搜索.png](https://i.loli.net/2020/05/20/QgJqDkcjpeiRvBb.png)
![搜索.png](https://i.loli.net/2020/07/22/qFdyYfc7iNxZXKT.png)
3. 详情 ⇣ ↓
![03详情.png](https://i.loli.net/2020/05/18/s7gUj6unEfyYb4Z.png)
![详情.png](https://i.loli.net/2020/07/22/aPUwFHSXYKTn3dC.png)
4. 播放 ⇣ ↓
![04播放.png](https://i.loli.net/2020/05/18/WqgnOw3mHd6e5uU.png)
![播放.png](https://i.loli.net/2020/07/22/xhWCRlOFKw52Vzi.png)
![Mini.png](https://i.loli.net/2020/07/22/suf4bQkoP3gMORH.png)
5. 收藏 ⇣ ↓
![05收藏.png](https://i.loli.net/2020/05/18/bhIgeGMTPWmrdYi.png)
![收藏.png](https://i.loli.net/2020/07/22/32THQIEqdo8YyS6.png)
6. 白色主题皮肤 ⇣ ↓
![06白色.png](https://i.loli.net/2020/05/18/UgiVZ89dhkuxDBI.png)
![白色.png](https://i.loli.net/2020/07/22/ci9oAXC2SE4gqka.png)
7. 绿色主题皮肤 ⇣ ↓
![07绿色.png](https://i.loli.net/2020/05/18/4d2UnFRECm7vyJQ.png)
![绿色.png](https://i.loli.net/2020/07/22/WOfDG5P8CR2cXju.png)
8. 粉色色主题皮肤 ⇣ ↓
![08粉色.png](https://i.loli.net/2020/05/18/PLlEfzd8mSC9vMW.png)
![粉色.png](https://i.loli.net/2020/07/22/48euCatIfnZ6qX7.png)
### 重要:
所有资源来自网上, 该软件不参与任何制作, 上传, 储存, 下载等内容. 该软件仅供学习参考, 请于安装后24小时内删除.

View File

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

View File

@@ -59,7 +59,7 @@ export default {
@import './assets/scss/theme.scss';
html, body, #app{
height: 100%;
border-radius: 6px;
border-radius: 0px;
}
#app {
font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', SimSun, sans-serif;

View File

@@ -28,17 +28,16 @@
</div>
</div>
<div class="body zy-scroll" infinite-wrapper>
<div class="body-box" v-if="!show.find">
<div class="body-box" v-show="!show.find">
<div class="show-img" v-if="setting.view === 'picture'">
<Waterfall :list="list" :gutter="20" :width="240"
<Waterfall ref="waterfall" :list="list" :gutter="20" :width="240"
:breakpoints="{ 1200: { rowPerView: 4 } }"
animationEffect="fadeInUp"
backgroundColor="rgba(0, 0, 0, 0)"
ref="wimg">
backgroundColor="rgba(0, 0, 0, 0)">
<template slot="item" slot-scope="props">
<div class="card">
<div class="img">
<img style="width: 100%" :src="props.data.pic" alt="" @load="$refs.wimg.refresh()" @click="detailEvent(props.data)">
<img style="width: 100%" :src="props.data.pic" alt="" @load="$refs.waterfall.refresh()" @click="detailEvent(props.data)">
<div class="operate">
<div class="operate-wrap">
<span class="o-play" @click="playEvent(props.data)">播放</span>
@@ -79,7 +78,7 @@
</div>
</div>
</div>
<div class="body-box" v-if="show.find">
<div class="body-box" v-show="show.find">
<div class="show-table">
<div class="zy-table">
<div class="tBody">
@@ -185,9 +184,9 @@ export default {
searchTxt () {
this.searchChangeEvent()
},
setting: {
handler (ov, nv) {
this.settingChangeEvent(ov, nv)
'setting.site': {
handler (nv) {
this.getAllsites(nv)
},
deep: true
}
@@ -323,7 +322,7 @@ export default {
},
downloadEvent (e) {
zy.download(this.site.key, e.id).then(res => {
if (res) {
if (res.length > 0) {
const text = res.dl.dd._t
if (text) {
const list = text.split('#')
@@ -338,9 +337,20 @@ export default {
this.$message.warning('没有查询到下载链接.')
}
} else {
const list = [...this.m3u8List]
let m3u8List = []
const dd = e.dl.dd
const type = Object.prototype.toString.call(dd)
if (type === '[object Array]') {
for (const i of dd) {
if (i._flag.indexOf('m3u8') >= 0) {
m3u8List = i._t.split('#')
}
}
} else {
m3u8List = dd._t.split('#')
}
let downloadUrl = e.name + '\n'
for (const i of list) {
for (const i of m3u8List) {
const url = encodeURI(i.split('$')[1])
downloadUrl += (url + '\n')
}
@@ -352,7 +362,7 @@ export default {
changeView () {
if (this.view === 'Film') {
if (this.show.img) {
this.$refs.wimg.refresh()
this.$refs.waterfall.refresh()
}
this.getPage().then(() => {
this.infiniteId += 1
@@ -371,6 +381,7 @@ export default {
this.searchContents = []
this.pagecount = 0
this.show.search = false
this.show.find = true
if (wd) {
search.find({ keywords: wd }).then(res => {
if (!res) {
@@ -389,7 +400,6 @@ export default {
if (type === '[object Object]') {
this.searchContents.push(res)
}
this.show.find = true
})
} else {
this.show.find = false
@@ -405,6 +415,7 @@ export default {
this.pagecount = 0
this.searchTxt = e.keywords
this.show.search = false
this.show.find = true
search.remove(e.id).then(res => {
search.add({ keywords: e.keywords })
this.getAllSearch()
@@ -420,7 +431,6 @@ export default {
if (type === '[object Object]') {
this.searchContents.push(res)
}
this.show.find = true
})
},
clearSearch () {
@@ -436,20 +446,29 @@ export default {
this.searchContents = []
this.show.find = false
if (this.show.img) {
this.$refs.wimg.refresh()
this.$refs.waterfall.refresh()
}
}
},
getAllsites () {
sites.all().then(res => {
this.sites = res
this.site = this.sites[0]
this.siteClick(this.site)
})
},
settingChangeEvent (ov, nv) {
console.log(ov, nv, 'ov nv')
this.getAllsites()
getAllsites (nv) {
if (nv) {
sites.all().then(res => {
this.sites = res
for (const i of res) {
if (i.key === nv) {
this.site = i
this.siteClick(this.site)
return false
}
}
})
} else {
sites.all().then(res => {
this.sites = res
this.site = this.sites[0]
this.siteClick(this.site)
})
}
}
},
created () {

View File

@@ -210,7 +210,6 @@ export default {
methods: {
...mapMutations(['SET_VIEW', 'SET_DETAIL', 'SET_VIDEO', 'SET_SHARE']),
getUrls () {
console.log(this.video, 'this.video')
this.name = ''
if (this.timer !== null) {
clearInterval(this.timer)

View File

@@ -207,7 +207,9 @@ export default {
this.$message.success('已添加成功')
this.getSites()
this.d.site = json[0].key
this.setting = this.d
setting.update(this.d).then(res => {
this.setting = this.d
})
})
})
},

View File

@@ -1,9 +1,9 @@
<template>
<div class="share" id="share" @click="shareClickEvent">
<div class="left">
<img :src="pic" alt="">
<img :src="pic" alt="" @load="picLoadEvent">
</div>
<div class="right">
<div class="right" id="right">
<div class="title">{{ share.info.name }}</div>
<qrcode-vue id="qr" :value="link" :size="160" level="L" />
<div class="tips">
@@ -79,17 +79,17 @@ export default {
}
}
this.loading = false
this.$nextTick(() => {
const dom = document.getElementById('share')
html2canvas(dom, { useCORS: true, allowTaint: true }).then(res => {
const png = res.toDataURL('image/png')
const p = nativeImage.createFromDataURL(png)
clipboard.writeImage(p)
this.$message.success('已复制到剪贴板,快去分享吧~ 严禁传播违法资源!!!')
})
})
}
})
},
picLoadEvent () {
const dom = document.getElementById('right')
html2canvas(dom, { useCORS: true, allowTaint: true }).then(res => {
const png = res.toDataURL('image/png')
const p = nativeImage.createFromDataURL(png)
clipboard.writeImage(p)
this.$message.success('已复制到剪贴板,快去分享吧~ 严禁传播违法资源!!!')
})
}
},
mounted () {
@@ -108,7 +108,7 @@ export default {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px;
padding: 0px;
z-index: 999;
.left, .right{
width: 50%;
@@ -125,6 +125,7 @@ export default {
}
}
.right{
padding: 10px;
.title{
font-size: 18px;
margin-bottom: 10px;

View File

@@ -80,7 +80,10 @@ export default {
this.detail = {
show: true,
key: e.site,
info: e
info: {
id: e.ids,
name: e.name
}
}
},
playEvent (e) {

View File

@@ -15,4 +15,4 @@ app.post('/api', async (req, res) => {
})
})
app.listen(48484)
app.listen(44444)

View File

@@ -2,7 +2,7 @@ import { sites } from '../dexie'
import axios from 'axios'
import parser from 'fast-xml-parser'
const zy = {
ports: 48484, // 端口号
ports: 44444, // 端口号
xmlConfig: { // XML 转 JSON 配置
trimValues: true,
textNodeName: '_t',
@@ -184,7 +184,7 @@ const zy = {
reject(err)
})
} else {
resolve(null)
resolve([])
}
})
})

View File

@@ -177,6 +177,7 @@ export default {
},
prevEvent () {
if (this.video.index === 0) {
this.$message.info('已是第一集.')
return false
}
history.find({ site: this.video.site, ids: this.video.ids }).then(res => {
@@ -192,6 +193,7 @@ export default {
},
nextEvent () {
if (this.video.index >= this.m3u8Arr.length - 1) {
this.$message.info('已是最后一集.')
return false
}
history.find({ site: this.video.site, ids: this.video.ids }).then(res => {
@@ -351,12 +353,10 @@ export default {
}
}
},
created () {
this.getUrls()
this.mtEvent()
},
mounted () {
this.xg = new Hls(this.config)
this.mtEvent()
this.getUrls()
},
beforeDestroy () {
clearInterval(this.timer)