Compare commits

...

13 Commits

Author SHA1 Message Date
hunlongyu
52a762ef0e 🛸 新增麻花资源网和135资源网, 修复BUG 2020-05-09 10:12:34 +08:00
hunlongyu
aa64c4c452 🛸 新增麻花资源网和135资源网 2020-05-09 10:11:55 +08:00
hunlongyu
7d94cbd114 🚁 版本更新 2020-05-08 22:31:19 +08:00
hunlongyu
c7d1d208b8 🚢 样式优化 2020-05-08 22:30:20 +08:00
hunlongyu
122d4bd10c 🎀 升级合并代码 2020-05-08 10:09:52 +08:00
hunlongyu
3e26f9cb51 🚞 升级插件 2020-05-08 10:08:53 +08:00
hunlongyu
9012be09ad 🚚 修复最大资源网翻页 Bug 2020-05-07 23:37:10 +08:00
hunlongyu
bd85987e72 🛴 只能启动一个实例 2020-05-07 23:17:37 +08:00
hunlongyu
5c28cf19ed 🧶 替换旧的 Logo 2020-05-07 23:14:21 +08:00
hunlongyu
4e06e30a5c 🎫 替换新的 Logo 2020-05-07 23:08:52 +08:00
hunlongyu
15fa6f3bfb 👔 增加切换视频的遮罩 2020-05-07 21:17:50 +08:00
hunlongyu
1e2bc39bde 🙃 更进版本号 2020-05-07 15:47:05 +08:00
hunlongyu
551d11c802 🎃 解决数据库冲突,导致软件启动失败 2020-05-07 15:46:44 +08:00
25 changed files with 479 additions and 89 deletions

View File

@@ -1,5 +1,5 @@
<p align="center">
<img src="https://i.loli.net/2020/02/22/jvfBbnEuOq5RS9J.png" >
<img src="https://i.loli.net/2020/05/07/9kLvPnWVCp7538c.png" >
</p>
<p align="center">
<img src="https://forthebadge.com/images/badges/built-with-love.svg">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 KiB

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 831 B

After

Width:  |  Height:  |  Size: 838 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 353 KiB

After

Width:  |  Height:  |  Size: 353 KiB

View File

@@ -1,6 +1,6 @@
{
"name": "zy",
"version": "0.9.23",
"version": "0.9.31",
"private": true,
"author": {
"name": "Hunlongyu",
@@ -15,12 +15,13 @@
"dev": "vue-cli-service electron:serve",
"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",
"release": "vue-cli-service electron:build -p always"
},
"main": "background.js",
"dependencies": {
"axios": "^0.19.2",
"core-js": "^3.6.4",
"core-js": "^3.6.5",
"dexie": "^2.0.4",
"electron-updater": "^4.2.5",
"element-ui": "^2.13.1",
@@ -32,8 +33,8 @@
"vue": "^2.6.11",
"vue-i18n": "^8.17.0",
"vuex": "^3.1.3",
"xgplayer": "^2.6.14",
"xgplayer-hls.js": "^2.1.6"
"xgplayer": "^2.6.19",
"xgplayer-hls.js": "^2.2.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.3.0",
@@ -43,7 +44,7 @@
"@vue/eslint-config-standard": "^5.1.2",
"babel-eslint": "^10.1.0",
"babel-plugin-component": "^1.1.1",
"electron": "^8.2.1",
"electron": "^8.2.5",
"eslint": "^6.7.2",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-node": "^11.1.0",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -1,8 +1,5 @@
.theme-dark{
background-color: var(--d-bgc-1);
.xgplayer-skin-default video{
background-color: var(--d-bgc-2);
}
.el-pagination{
background-color: var(--d-bgc-1);
color: var(--d-fc-1);
@@ -134,7 +131,7 @@
}
}
.detail{
color: var(--d-fc-1);
color: var(--d-fc-1) !important;
background-color:var(--d-bgc-1);
box-shadow: var(--d-bsc-2);
.detail-content{

View File

@@ -1,8 +1,5 @@
.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);

View File

@@ -1,8 +1,5 @@
.theme-light{
background-color: var(--l-bgc-1);
.xgplayer-skin-default video{
background-color: var(--l-bgc-2);
}
.el-pagination{
color: var(--l-fc-1);
.el-pagination__total, .el-pagination__jump, .el-input__inner{
@@ -221,6 +218,9 @@
}
}
}
.mask{
background-color: var(--l-bgc-1);
}
}
.list{
border: 1px solid var(--l-c-3);

View File

@@ -114,12 +114,26 @@ ipcMain.on('miniOpacity', (e, arg) => {
mini.setOpacity(arg)
})
app.on('ready', async () => {
if (!process.env.WEBPACK_DEV_SERVER_URL) {
createProtocol('app')
}
createWindow()
})
const gotTheLock = app.requestSingleInstanceLock()
if (!gotTheLock) {
app.quit()
} else {
app.on('second-instance', (event, commandLine, workingDirectory) => {
// 当运行第二个实例时,将会聚焦到win这个窗口
if (win) {
if (win.isMinimized()) win.restore()
win.focus()
}
})
// 创建 win, 加载应用的其余部分, etc...
app.on('ready', () => {
if (!process.env.WEBPACK_DEV_SERVER_URL) {
createProtocol('app')
}
createWindow()
})
}
// Exit cleanly on request from parent process in development mode.
if (isDevelopment) {

View File

@@ -3,6 +3,9 @@
<div class="box">
<div class="title">{{name}}</div>
<div id="xg"></div>
<div class="mask zy-loading" v-show="mask">
<div class="loader"></div>
</div>
<div class="more" v-show="more">
<span class="zy-svg" @click="nextEvent" v-show="showNext">
<svg role="img" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-labelledby="forwardIconTitle">
@@ -125,6 +128,7 @@ export default {
screenShot: true,
keyShortcut: 'on',
crossOrigin: true,
cssFullscreen: true,
defaultPlaybackRate: 1,
playbackRate: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 3, 4, 5]
},
@@ -134,7 +138,8 @@ export default {
more: true,
showNext: false,
isStar: false,
isTop: false
isTop: false,
mask: false
}
},
computed: {
@@ -191,6 +196,7 @@ export default {
methods: {
...mapMutations(['SET_VIEW', 'SET_DETAIL', 'SET_VIDEO', 'SET_SHARE']),
getUrls () {
this.mask = true
if (this.timer !== null) {
clearInterval(this.timer)
this.timer = null
@@ -225,6 +231,9 @@ export default {
} else {
this.xg.play()
}
this.xg.once('play', () => {
this.mask = false
})
this.onPlayVideo()
this.xg.once('ended', () => {
if (res.m3u8_urls.length > 1 && (res.m3u8_urls.length - 1 > this.video.index)) {
@@ -233,8 +242,6 @@ export default {
}
this.xg.off('ended')
})
}).catch(err => {
this.$m.error(err)
})
},
changeVideo () {
@@ -292,6 +299,7 @@ export default {
const v = { ...this.video }
const i = v.index + 1
if (i < this.right.listData.length) {
this.video.currentTime = 0
this.video.index++
} else {
this.$m.warning(this.$t('last_video'))
@@ -370,6 +378,7 @@ export default {
})
},
listItemEvent (n) {
this.video.currentTime = 0
this.video.index = n
this.right.show = false
this.right.type = ''
@@ -430,6 +439,15 @@ export default {
cursor: pointer;
}
}
.mask{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 600;
opacity: 0.98;
}
}
.list{
position: absolute;

View File

@@ -4,7 +4,7 @@
<div class="logo"><img src="@/assets/image/logo.png"></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')}} v{{pkg.version}}</a>
<a @click="linkOpen('https://github.com/Hunlongyu/ZY-Player/issues')">v{{pkg.version}} {{$t('issues')}}</a>
</div>
<div class="change">
<div class="zy-select" @mouseleave="show.language = false">

View File

@@ -1,6 +1,6 @@
import Dexie from 'dexie'
const db = new Dexie('ZYDB')
const db = new Dexie('zy')
db.version(1).stores({
theme: '++id, theme',

View File

@@ -4,7 +4,7 @@ const sites = [
name: '最大资源网',
url: 'http://www.zuidazy5.com',
new: 'http://www.zuidazy5.com/?m=vod-index-pg-{page}.html',
view: 'http://www.zuidazy5.com/?m=vod-type-id-{id}-page-{page}.html',
view: 'http://www.zuidazy5.com/?m=vod-type-id-{id}-pg-{page}.html',
search: 'http://www.zuidazy5.com/index.php?m=vod-search-pg-{page}-wd-{keywords}.html',
type: 0,
tags: [
@@ -112,6 +112,139 @@ const sites = [
}
]
},
{
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}-pg-{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: []
}
]
},
{
key: 'subo',
name: '速播资源站',
@@ -215,6 +348,152 @@ const sites = [
}
]
},
{
key: 'mahuazy',
name: '麻花资源',
url: 'http://www.mahuazy.com',
new: 'http://www.mahuazy.com/?m=vod-index-pg-{page}.html',
view: 'http://www.mahuazy.com/?m=vod-type-id-{id}-pg-{page}.html',
search: 'http://www.mahuazy.com/?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: 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: 4,
children: []
},
{
title: '网络电影',
id: 30,
children: [
{
title: '爆笑喜剧',
id: 31
},
{
title: '火爆动作',
id: 32
},
{
title: '浪漫爱情',
id: 33
},
{
title: '热血青春',
id: 34
},
{
title: '奇幻历险',
id: 35
},
{
title: '暗黑悬疑',
id: 36
},
{
title: '剧情家庭',
id: 37
}
]
},
{
title: '解说',
id: 38,
children: []
},
{
title: '福利片',
id: 19,
children: []
}
]
},
{
key: 'zuixinzy',
name: '最新资源网',
@@ -1084,13 +1363,13 @@ const sites = [
]
},
{
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,
key: '135zy',
name: '135资源网',
url: 'http://135zy0.com',
new: 'http://135zy0.com/?m=vod-index-pg-{page}.html',
view: 'http://135zy0.com/?m=vod-type-id-{id}-pg-{page}.html',
search: '',
type: 3,
tags: [
{
title: '最新',
@@ -1129,17 +1408,9 @@ const sites = [
title: '战争片',
id: 11
},
{
title: '纪录片',
id: 19
},
{
title: '微电影',
id: 20
},
{
title: '伦理片',
id: 21
id: 18
}
]
},
@@ -1156,7 +1427,7 @@ const sites = [
id: 13
},
{
title: '韩国剧',
title: '日本剧',
id: 14
},
{
@@ -1168,51 +1439,29 @@ const sites = [
id: 16
},
{
title: '日本剧',
title: '韩国剧',
id: 17
},
{
title: '海外剧',
id: 18
title: '剧',
id: 21
}
]
},
{
title: '综艺',
title: '综艺',
id: 3,
children: [
{
title: '内地综艺',
id: 26
},
{
title: '港台综艺',
id: 27
},
{
title: '日韩综艺',
id: 28
},
{
title: '欧美综艺',
id: 29
}
]
children: []
},
{
title: '动漫',
title: '动漫',
id: 4,
children: []
},
{
title: '福利片',
title: '纪录片',
id: 22,
children: []
},
{
title: '解说',
id: 33,
children: []
}
]
}

View File

@@ -30,6 +30,10 @@ const zy = {
const twoData = await this.film_get_type_two(data, key)
resolve(twoData)
}
if (type === 3) {
const threeData = await this.film_get_type_three(data, key)
resolve(threeData)
}
}).catch(err => {
reject(err)
})
@@ -128,6 +132,36 @@ const zy = {
}
})
},
film_get_type_three (txt, key) {
return new Promise((resolve, reject) => {
try {
const parser = new DOMParser()
const html = parser.parseFromString(txt, 'text/html')
const list = html.querySelectorAll('.xing_vb li')
const d = { list: [], total: 0, update: 0 }
const url = getSite(key).url
for (let i = 1; i < list.length - 1; i++) {
const info = {
site: key,
name: list[i].childNodes[1].innerText,
type: list[i].childNodes[2].innerText,
time: list[i].childNodes[3].innerText,
detail: url + list[i].childNodes[1].querySelector('a').getAttribute('href'),
index: 0
}
d.list.push(info)
}
d.update = parseInt(html.querySelectorAll('.xing_top_right li strong')[0].innerText)
let t = html.querySelector('.pages').innerText
t = t.split('条')[0]
t = t.split('共')[1]
d.total = parseInt(t)
resolve(d)
} catch (err) {
reject(err)
}
})
},
// 获取详情
detail_get (key, url) {
return new Promise((resolve, reject) => {
@@ -145,6 +179,10 @@ const zy = {
const twoData = await this.detail_get_type_two(res.data, key)
resolve(twoData)
}
if (type === 3) {
const threeData = await this.detail_get_type_three(res.data, key)
resolve(threeData)
}
}).catch(err => {
reject(err)
})
@@ -172,7 +210,7 @@ const zy = {
for (let i = 0; i < vodInfo.length; i++) {
const k = vodInfo[i].innerText
if (k.indexOf('剧情介绍') >= 0) {
data.desc = vodInfo[i].querySelector('.vodplayinfo').innerHTML
data.desc = vodInfo[i].querySelector('.vodplayinfo').innerText
}
}
const vodLi = html.querySelectorAll('.ibox .vodplayinfo li')
@@ -279,6 +317,51 @@ const zy = {
}
})
},
detail_get_type_three (txt, key) {
return new Promise((resolve, reject) => {
try {
const parser = new DOMParser()
const html = parser.parseFromString(txt, 'text/html')
const data = {
site: key,
name: '',
info: '',
desc: '',
m3u8_urls: [],
mp4_urls: []
}
const vodBox = html.querySelector('.vodBox')
data.info = vodBox.innerHTML
const title = html.querySelector('.vodh h2').innerText
const index = html.querySelector('.vodh span').innerText
data.name = title + index
const vodInfo = html.querySelectorAll('.playBox')
for (let i = 0; i < vodInfo.length; i++) {
const k = vodInfo[i].innerText
if (k.indexOf('剧情介绍') >= 0) {
data.desc = vodInfo[i].querySelector('.vodplayinfo').innerHTML
}
}
const vodLi = html.querySelectorAll('.ibox .vodplayinfo li')
const m3u8UrlArr = []
const mp4UrlArr = []
for (let i = 0; i < vodLi.length; i++) {
const j = vodLi[i].innerText
if (j.indexOf('.m3u8') >= 0) {
m3u8UrlArr.unshift(j)
}
if (j.indexOf('.mp4') >= 0) {
mp4UrlArr.unshift(j)
}
}
data.m3u8_urls = m3u8UrlArr
data.mp4_urls = mp4UrlArr
resolve(data)
} catch (err) {
reject(err)
}
})
},
// 搜索列表
search_get (key, keywords = '', page = 1) {
return new Promise((resolve, reject) => {
@@ -301,6 +384,10 @@ const zy = {
const oneData = await this.search_get_type_one(data, key)
resolve(oneData)
}
if (type === 3) {
const threeData = await this.search_get_type_three(data, key)
resolve(threeData)
}
}).catch(err => {
reject(err)
})
@@ -358,6 +445,33 @@ const zy = {
reject(err)
}
})
},
search_get_type_three (txt, key) {
return new Promise((resolve, reject) => {
try {
const parser = new DOMParser()
const html = parser.parseFromString(txt, 'text/html')
const list = html.querySelectorAll('.xing_vb li')
const d = { list: [], total: 0 }
const url = getSite(key).url
for (let i = 1; i < list.length - 1; i++) {
const info = {
site: key,
name: list[i].childNodes[1].innerText,
type: list[i].childNodes[2].innerText,
time: list[i].childNodes[3].innerText,
detail: url + list[i].childNodes[1].querySelector('a').getAttribute('href'),
index: 0
}
d.list.push(info)
}
const t = html.querySelector('.nvc dd').innerText.replace(/[^\d]/g, '')
d.total = parseInt(t)
resolve(d)
} catch (err) {
reject(err)
}
})
}
}

View File

@@ -2892,9 +2892,9 @@ core-js@^2.4.0, core-js@^2.6.5:
resolved "https://mirrors.huaweicloud.com/repository/npm/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c"
integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==
core-js@^3.6.4:
core-js@^3.6.4, core-js@^3.6.5:
version "3.6.5"
resolved "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
resolved "https://mirrors.huaweicloud.com/repository/npm/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
core-util-is@1.0.2, core-util-is@~1.0.0:
@@ -3628,10 +3628,10 @@ electron-updater@^4.2.5:
pako "^1.0.11"
semver "^7.1.3"
electron@^8.2.1:
version "8.2.2"
resolved "https://registry.npmjs.org/electron/-/electron-8.2.2.tgz#6ddb27c1f15fda5f6e891e1ad13c0a0d15b0f133"
integrity sha512-GH4RCbpuzEn3XpTmsf+wLaJ2KOPSOoBJvQ0s6ftTLs5+IQEgKZvkdYCj8TCBNXFhss31RT3BUqoEQQUyZErK0A==
electron@^8.2.5:
version "8.2.5"
resolved "https://mirrors.huaweicloud.com/repository/npm/electron/-/electron-8.2.5.tgz#ae3cb23d5517b2189fd35298e487198d65d1a291"
integrity sha512-LxSCUwmlfJtRwthd3ofpYaZ+1C2hQSW8Ep1DD9K3VbnDItO+kb3t1z35daJgAab78j54aOwo9gMxJtvU0Ftj6w==
dependencies:
"@electron/get" "^1.0.1"
"@types/node" "^12.0.12"
@@ -10022,18 +10022,18 @@ xdg-basedir@^4.0.0:
resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==
xgplayer-hls.js@^2.1.6:
version "2.1.6"
resolved "https://mirrors.huaweicloud.com/repository/npm/xgplayer-hls.js/-/xgplayer-hls.js-2.1.6.tgz#1e969a77a7546114a5e1b4509e89401fe74536da"
integrity sha512-va/xmx0ES5oerbZ6bMVlXEw38Alz9dwEnvC0iwGOC6Kf543hv0ma/9qJ9JxWOPFsvAblmburT4rbAUxoMKGUDA==
xgplayer-hls.js@^2.2.0:
version "2.2.0"
resolved "https://mirrors.huaweicloud.com/repository/npm/xgplayer-hls.js/-/xgplayer-hls.js-2.2.0.tgz#e9eed21a957acebf48e965b835ca8c6b84fbae30"
integrity sha512-u0bYCg6mjxCZSSp+FSlQBZs7qc25UedYDHfjf2oe6kyl/Cqhr0v5VfZXa/2IGVfnCYUaySFVML09NEbznk26rQ==
dependencies:
deepmerge "2.0.1"
event-emitter "^0.3.5"
xgplayer@^2.6.14:
version "2.6.14"
resolved "https://mirrors.huaweicloud.com/repository/npm/xgplayer/-/xgplayer-2.6.14.tgz#991c8bdfa507db7cadea93cd14d9b448737fd65c"
integrity sha512-lFwuUzSWt6f63KFDvoqHXDaF+8lWT3NPR30dFizzZp6/dUbtFnUigjXIc4HrN191v5gYQDss3wulQUFAfOo6KA==
xgplayer@^2.6.19:
version "2.6.19"
resolved "https://mirrors.huaweicloud.com/repository/npm/xgplayer/-/xgplayer-2.6.19.tgz#1b3c2c7127ea4bdd7b4d071e778cd18edbe86afc"
integrity sha512-JVHOTiEvKmALnnCkJTY+Pk9SUztJQZDB+IiBvXKuY7C6GFPPEJobxtYiEumODk7JvmcW7hAW/otzzhkxvMQXHQ==
dependencies:
chalk "^2.3.2"
commander "^2.15.1"