From d8367414a241cb6f305257fd76e3ba5b8131a34f Mon Sep 17 00:00:00 2001 From: haiyangcui Date: Sun, 4 Oct 2020 16:53:11 +0200 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=A0=E6=B3=95=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE=E5=AF=BC=E5=85=A5=E7=9B=B4=E6=92=AD=E6=BA=90=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/components/IPTV.vue | 30 ++++++++++++++++-------------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index f11a34c..a286ba2 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "express": "^4.17.1", "fast-xml-parser": "^3.17.4", "html2canvas": "^1.0.0-rc.5", - "m3u8": "0.0.10", + "iptv-playlist-parser": "^0.5.0", "modern-normalize": "^0.6.0", "mousetrap": "^1.6.5", "qrcode.vue": "^1.7.0", diff --git a/src/components/IPTV.vue b/src/components/IPTV.vue index 79ed0f7..d04caef 100644 --- a/src/components/IPTV.vue +++ b/src/components/IPTV.vue @@ -200,27 +200,29 @@ export default { }) }) } else if (file.endsWith('m3u')) { - var m3u8 = require('m3u8') - var parser = m3u8.createStream() - var m3ufile = fs.createReadStream(file, { encoding: 'utf-8' }) - m3ufile.pipe(parser) + const parser = require('iptv-playlist-parser') + const playlist = fs.readFileSync(file, { encoding: 'utf-8' }) + const result = parser.parse(playlist) var docs = [] - parser.on('item', function (item) { - var prop = item.properties - if (prop.title && prop.uri && prop.uri.endsWith('m3u8')) { + result.items.forEach(ele => { + if (ele.name && ele.url && ele.url.endsWith('m3u8')) { var doc = { - name: prop.title, - url: prop.uri + name: ele.name, + url: ele.url } docs.push(doc) } }) - iptv.clear().then(res => { - iptv.bulkAdd(docs).then(e => { - this.getAllSites() - this.$message.success('导入成功') + if (docs) { + iptv.clear().then(res => { + iptv.bulkAdd(docs).then(e => { + this.getAllSites() + this.$message.success('导入成功') + }) }) - }) + } else { + this.$message.error('m3u文件没有读取到可用源数据') + } } }) }