From 1d33db0143602fe2fc7d98e0360e528a5674b8bb Mon Sep 17 00:00:00 2001 From: haiyangcui Date: Thu, 22 Oct 2020 17:07:05 +0200 Subject: [PATCH] =?UTF-8?q?IPTV=E6=94=AF=E6=8C=81=E4=BB=8EJSON=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/IPTV.vue | 49 ++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/src/components/IPTV.vue b/src/components/IPTV.vue index 520877c..de81686 100644 --- a/src/components/IPTV.vue +++ b/src/components/IPTV.vue @@ -204,7 +204,8 @@ export default { importChannels () { const options = { filters: [ - { name: 'm3u file', extensions: ['m3u', 'm3u8'] } + { name: 'm3u file', extensions: ['m3u', 'm3u8'] }, + { name: 'JSON file', extensions: ['json'] } ], properties: ['openFile', 'multiSelections'] } @@ -213,21 +214,39 @@ export default { var docs = this.iptvList var id = docs.length result.filePaths.forEach(file => { - const parser = require('iptv-playlist-parser') - const playlist = fs.readFileSync(file, { encoding: 'utf-8' }) - const result = parser.parse(playlist) - result.items.forEach(ele => { - if (ele.name && ele.url && ele.url.includes('.m3u8')) { - var doc = { - id: id, - name: ele.name, - url: ele.url, - group: this.determineGroup(ele.group, ele.name) + if (file.endsWith('m3u')) { + const parser = require('iptv-playlist-parser') + const playlist = fs.readFileSync(file, { encoding: 'utf-8' }) + const result = parser.parse(playlist) + result.items.forEach(ele => { + if (ele.name && ele.url && ele.url.includes('.m3u8')) { + var doc = { + id: id, + name: ele.name, + url: ele.url, + group: this.determineGroup(ele.group, ele.name) + } + id += 1 + docs.push(doc) } - id += 1 - docs.push(doc) - } - }) + }) + } else { + // Import Json file + var str = fs.readFileSync(file) + const json = JSON.parse(str) + json.forEach(ele => { + if (ele.name && ele.url && ele.url.includes('.m3u8')) { + var doc = { + id: id, + name: ele.name, + url: ele.url, + group: ele.group === undefined ? this.determineGroup(ele.group, ele.name) : ele.group + } + id += 1 + docs.push(doc) + } + }) + } }) // 获取url不重复的列表 const uniqueList = [...new Map(docs.map(item => [item.url, item])).values()]