Update format.js

This commit is contained in:
Aleksandr Statciuk 2021-08-10 12:50:23 +03:00
parent f27fe3e122
commit c1ee2b2f19
1 changed files with 39 additions and 19 deletions

View File

@ -27,8 +27,8 @@ async function main() {
log.start()
if (config.debug) log.print(`Debug mode enabled\n`)
if (config.status) log.print(`Updating channel status...\n`)
if (config.resolution) log.print(`Detecting channel resolution...\n`)
if (config.status) log.print(`Status check enabled\n`)
if (config.resolution) log.print(`Resolution detection enabled\n`)
let playlists = parser.parseIndex().filter(i => i.url !== 'channels/unsorted.m3u')
playlists = utils.filterPlaylists(playlists, config.country, config.exclude)
@ -69,9 +69,19 @@ async function updatePlaylist(playlist) {
await checker
.checkStream(channel.data)
.then(result => {
if (config.status) updateStatus(channel, result.status)
if (config.resolution && result.status.ok)
const status = parseStatus(result.status)
if (config.status) {
updateStatus(channel, status)
}
if (config.resolution && status === 'online') {
updateResolution(channel, result.status.metadata)
}
if (config.debug && status === 'offline') {
log.print(` ERR: ${channel.url} (${result.status.reason})\n`)
}
})
.catch(err => {
if (config.debug) log.print(` ERR: ${channel.url} (${err.message})\n`)
@ -83,6 +93,31 @@ async function updatePlaylist(playlist) {
return playlist
}
function parseStatus(status) {
if (status.ok) {
return 'online'
} else if (status.reason.includes('timed out')) {
return 'timeout'
} else if (status.reason.includes('403')) {
return 'error_403'
} else if (status.reason.includes('not one of 40{0,1,3,4}')) {
return 'error_40x' // 402, 451
} else {
return 'offline'
}
}
function updateStatus(channel, status) {
switch (status) {
case 'online':
channel.status = null
break
case 'offline':
channel.status = 'Offline'
break
}
}
function addMissingData(channel) {
// add tvg-name
if (!channel.tvg.name && channel.name) {
@ -103,21 +138,6 @@ function addMissingData(channel) {
channel.group.title = channel.category
}
function updateStatus(channel, status) {
if (status.ok) {
channel.status = null
} else if (
status.reason.includes('timed out') ||
status.reason.includes('not one of 40{0,1,3,4}') ||
status.reason.includes('403')
) {
// nothing
} else {
channel.status = 'Offline'
if (config.debug) log.print(` ERR: ${channel.url} (${status.reason})\n`)
}
}
function updateResolution(channel, metadata) {
const streams = metadata ? metadata.streams.filter(stream => stream.codec_type === 'video') : []
if (!channel.resolution.height && streams.length) {