删除添加新频道功能

This commit is contained in:
haiyangcui
2020-10-06 21:14:35 +02:00
parent 0a13bac9e6
commit 454287ede5
2 changed files with 26 additions and 96 deletions

View File

@@ -29,6 +29,7 @@
"fast-xml-parser": "^3.17.4",
"html2canvas": "^1.0.0-rc.5",
"iptv-playlist-parser": "^0.5.0",
"m3u": "0.0.2",
"modern-normalize": "^0.6.0",
"mousetrap": "^1.6.5",
"qrcode.vue": "^1.7.0",

View File

@@ -2,9 +2,6 @@
<div class="detail">
<div class="detail-content">
<div class="detail-header">
<div class="zy-select">
<div class="vs-placeholder vs-noAfter" @click="openAddSite">添加</div>
</div>
<div class="zy-select">
<div class="vs-placeholder vs-noAfter" @click="exportSites">导出</div>
</div>
@@ -21,31 +18,6 @@
<div class="detail-body zy-scroll">
<div class="zy-table">
<div class="tBody zy-scroll">
<div class="iptv-box zy-scroll" v-show="showAddSite">
<ul>
<li >
<span class="name">频道名</span>
<span class="name">Url</span>
<span class="operate">
<span class="btn"></span>
<span class="btn"></span>
</span>
</li>
<li>
<span class="name" style="display:inline-block;vertical-align:middle">
<input style="height: 30px" v-model="newSite.name">
</span>
<span class="name" style="display:inline-block;vertical-align:middle">
<input style="height: 30px" v-model="newSite.url">
</span>
<span class="operate">
<span class="btn" @click="addNewSite">添加</span>
<span class="btn" @click="closeAddSite">关闭</span>
</span>
</li>
<li ></li>
</ul>
</div>
<ul>
<draggable v-model="iptvList" @change="listUpdatedEvent">
<transition-group>
@@ -77,12 +49,6 @@ export default {
data () {
return {
iptvList: [],
showAddSite: false,
newSite:
{
name: '',
site: ''
},
searchkeyword: ''
}
},
@@ -135,30 +101,6 @@ export default {
this.$message.warning('删除频道失败, 错误信息: ' + err)
})
},
closeAddSite () {
this.showAddSite = false
},
openAddSite () {
this.showAddSite = true
},
addNewSite () {
if (!this.newSite.name || !this.newSite.url) {
this.$message.error('名称和API接口不能为空。')
return
}
var doc = {
name: this.newSite.name,
url: this.newSite.url
}
iptv.add(doc).then(res => {
this.newSite = {
name: '',
url: ''
}
this.$message.success('添加新源成功!')
this.getAllSites()
})
},
listUpdatedEvent () {
iptv.clear().then(res1 => {
// 重新排序
@@ -171,19 +113,18 @@ export default {
})
},
exportSites () {
this.getAllSites()
const arr = [...this.iptvList]
const str = JSON.stringify(arr, null, 4)
const options = {
filters: [
{ name: 'JSON file', extensions: ['json'] },
{ name: 'Normal text file', extensions: ['txt'] },
{ name: 'All types', extensions: ['*'] }
{ name: 'm3u file', extensions: ['m3u'] }
]
}
remote.dialog.showSaveDialog(options).then(result => {
if (!result.canceled) {
fs.writeFileSync(result.filePath, str)
var writer = require('m3u').extendedWriter()
this.iptvList.forEach(e => {
writer.file(e.url, -1, e.name)
})
fs.writeFileSync(result.filePath, writer.toString())
this.$message.success('已保存成功')
}
}).catch(err => {
@@ -193,47 +134,35 @@ export default {
importSites () {
const options = {
filters: [
{ name: 'm3u file', extensions: ['m3u'] },
{ name: 'JSON file', extensions: ['json'] }
{ name: 'm3u file', extensions: ['m3u'] }
],
properties: ['openFile']
}
remote.dialog.showOpenDialog(options).then(result => {
if (!result.canceled) {
result.filePaths.forEach(file => {
if (file.endsWith('json')) {
var str = fs.readFileSync(file)
const json = JSON.parse(str)
const parser = require('iptv-playlist-parser')
const playlist = fs.readFileSync(file, { encoding: 'utf-8' })
const result = parser.parse(playlist)
var docs = []
result.items.forEach(ele => {
if (ele.name && ele.url && ele.url.endsWith('m3u8')) {
var doc = {
name: ele.name,
url: ele.url
}
docs.push(doc)
}
})
if (docs) {
iptv.clear().then(res => {
iptv.bulkAdd(json).then(e => {
iptv.bulkAdd(docs).then(e => {
this.getAllSites()
this.$message.success('导入成功')
})
})
} else if (file.endsWith('m3u')) {
const parser = require('iptv-playlist-parser')
const playlist = fs.readFileSync(file, { encoding: 'utf-8' })
const result = parser.parse(playlist)
var docs = []
result.items.forEach(ele => {
if (ele.name && ele.url && ele.url.endsWith('m3u8')) {
var doc = {
name: ele.name,
url: ele.url
}
docs.push(doc)
}
})
if (docs) {
iptv.clear().then(res => {
iptv.bulkAdd(docs).then(e => {
this.getAllSites()
this.$message.success('导入成功')
})
})
} else {
this.$message.error('m3u文件没有读取到可用源数据')
}
} else {
this.$message.error('m3u文件没有读取到可用源数据')
}
})
}
@@ -248,7 +177,7 @@ export default {
},
getAllSites () {
iptv.all().then(res => {
this.iptvList = res
this.iptvList = [...new Set(res)]
})
}
},