process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0 const helper = require('./helper') const ffmpeg = require('fluent-ffmpeg') const config = { debug: process.env.npm_config_debug || false, country: process.env.npm_config_country, exclude: process.env.npm_config_exclude, timeout: 10 } let stats = { playlists: 0, channels: 0, failures: 0 } async function test() { const playlist = helper.parsePlaylist('index.m3u') const countries = helper.filterPlaylists(playlist.items, config.country, config.exclude) for (let country of countries) { stats.playlists++ console.log(`Processing '${country.url}'...`) const playlist = helper.parsePlaylist(country.url) for (let item of playlist.items) { stats.channels++ if (config.debug) { console.log(`Checking '${item.url}'...`) } await new Promise(resolve => { const timeout = setTimeout(() => { resolve() }, config.timeout * 1000) ffmpeg(item.url, { timeout: 60 }).ffprobe( ['-user_agent', `"Mozilla/5.0 (Windows NT 10.0; Win64; x64)"`], err => { if (err) { const message = helper.parseMessage(err, item.url) stats.failures++ helper.writeToLog(country.url, message, item.url) console.log(`${message} '${item.url}'`) } clearTimeout(timeout) resolve() } ) }) } } if (stats.failures === 0) { console.log(`OK (${stats.playlists} playlists, ${stats.channels} channels)`) } else { console.log( `FAILURES! (${stats.playlists} playlists, ${stats.channels} channels, ${stats.failures} failures)` ) process.exit(1) } } console.log('Test is running...') test()