Installed iptv-playlist-parser
This commit is contained in:
parent
3d6d0cee3b
commit
d43e58bc26
|
@ -26,14 +26,7 @@ async function main() {
|
|||
|
||||
const unsortedPlaylist = util.parsePlaylist('channels/unsorted.m3u')
|
||||
for(const item of unsortedPlaylist.items) {
|
||||
unsorted[item.url] = util.createChannel({
|
||||
id: item.inf['tvg-id'],
|
||||
name: item.inf['tvg-name'],
|
||||
logo: item.inf['tvg-logo'],
|
||||
group: item.inf['group-title'],
|
||||
url: item.url,
|
||||
title: item.inf.title
|
||||
})
|
||||
unsorted[item.url] = util.createChannel(item)
|
||||
}
|
||||
|
||||
for(let country of countries) {
|
||||
|
@ -55,14 +48,7 @@ async function main() {
|
|||
}
|
||||
let channels = []
|
||||
for(let item of playlist.items) {
|
||||
let channel = util.createChannel({
|
||||
id: item.inf['tvg-id'],
|
||||
name: item.inf['tvg-name'],
|
||||
logo: item.inf['tvg-logo'],
|
||||
group: item.inf['group-title'],
|
||||
url: item.url,
|
||||
title: item.inf.title
|
||||
})
|
||||
let channel = util.createChannel(item)
|
||||
|
||||
if(util.checkCache(channel.url)) {
|
||||
stats.duplicates++
|
||||
|
|
|
@ -40,20 +40,13 @@ function main() {
|
|||
const playlist = util.parsePlaylist(country.url)
|
||||
|
||||
const c = {
|
||||
name: country.inf.title,
|
||||
name: country.name,
|
||||
code: util.getBasename(country.url).toUpperCase()
|
||||
}
|
||||
|
||||
for(let item of playlist.items) {
|
||||
|
||||
let channel = util.createChannel({
|
||||
id: item.inf['tvg-id'],
|
||||
name: item.inf['tvg-name'],
|
||||
logo: item.inf['tvg-logo'],
|
||||
group: item.inf['group-title'],
|
||||
url: item.url,
|
||||
title: item.inf.title
|
||||
})
|
||||
let channel = util.createChannel(item)
|
||||
|
||||
let group = channel.group
|
||||
|
||||
|
|
|
@ -18,7 +18,10 @@ let cache = {}
|
|||
|
||||
class Playlist {
|
||||
constructor(data) {
|
||||
this.attrs = data.attrs
|
||||
this.attrs = {
|
||||
'x-tvg-url': data.tvg.url
|
||||
}
|
||||
|
||||
this.items = data.items
|
||||
}
|
||||
|
||||
|
@ -26,8 +29,10 @@ class Playlist {
|
|||
let parts = ['#EXTM3U']
|
||||
for(let key in this.attrs) {
|
||||
let value = this.attrs[key]
|
||||
if(value) {
|
||||
parts.push(`${key}="${value}"`)
|
||||
}
|
||||
}
|
||||
|
||||
return `${parts.join(' ')}\n`
|
||||
}
|
||||
|
@ -35,12 +40,12 @@ class Playlist {
|
|||
|
||||
class Channel {
|
||||
constructor(data) {
|
||||
this.id = data.id || ''
|
||||
this.name = data.name || ''
|
||||
this.logo = data.logo || ''
|
||||
this.group = this._getGroup(data.group)
|
||||
this.id = data.tvg.id
|
||||
this.name = data.tvg.name
|
||||
this.logo = data.tvg.logo
|
||||
this.group = this._getGroup(data.group.title)
|
||||
this.url = data.url
|
||||
this.title = data.title
|
||||
this.title = data.name
|
||||
}
|
||||
|
||||
_getGroup(groupTitle) {
|
||||
|
@ -68,23 +73,11 @@ function parsePlaylist(filename) {
|
|||
const content = readFile(filename)
|
||||
const result = parser.parse(content)
|
||||
|
||||
console.log(result)
|
||||
|
||||
return new Playlist({
|
||||
attrs: results.attrs,
|
||||
items: results.segments
|
||||
})
|
||||
return new Playlist(result)
|
||||
}
|
||||
|
||||
function createChannel(data) {
|
||||
return new Channel({
|
||||
id: data.id,
|
||||
name: data.name,
|
||||
logo: data.logo,
|
||||
group: data.group,
|
||||
url: data.url,
|
||||
title: data.title
|
||||
})
|
||||
return new Channel(data)
|
||||
}
|
||||
|
||||
async function loadEPG(url) {
|
||||
|
|
Loading…
Reference in New Issue