iptv/helpers/filter.js
2019-08-07 16:52:25 +03:00

67 lines
1.5 KiB
JavaScript

const util = require('./util')
const debug = false
const blacklist = [
'80.80.160.168', // repeats on a loop
'63.237.48.3', // not a live stream
'189.216.247.113', // not working streams
]
let stats = {
channels: 0,
removed: 0
}
function init() {
console.log(`Parsing 'index.m3u'...`)
const playlist = util.parsePlaylist('index.m3u')
let countries = playlist.items
if(debug) {
console.log('Debug mode is turn on')
countries = countries.slice(0, 1)
}
for(let country of countries) {
console.log(`Parsing '${country.url}'...`)
const playlist = util.parsePlaylist(country.url)
if(debug) {
console.log(`Creating channels list...`)
}
let channels = []
for(let item of playlist.items) {
const url = new URL(item.url)
const host = url.hostname
if(blacklist.indexOf(host) === -1) {
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
})
channels.push(channel)
} else {
stats.removed += 1
}
}
console.log(`Updating '${country.url}'...`)
util.createFile(country.url, playlist.getHeader())
channels.forEach(channel => {
util.appendToFile(country.url, channel.toString())
})
stats.channels += channels.length
}
}
console.log('Starting...')
init()
console.log(`Total: ${stats.channels}. Removed: ${stats.removed}`)