const ipp = require('iptv-playlist-parser') const logger = require('./logger') const file = require('./file') const parser = {} parser.parsePlaylist = async function (filepath) { const content = await file.read(filepath) const playlist = ipp.parse(content) return playlist.items } parser.parseLogs = async function (filepath) { const content = await file.read(filepath) if (!content) return [] const lines = content.split('\n') return lines.map(line => (line ? JSON.parse(line) : null)).filter(l => l) } parser.parseNumber = function (string) { const parsed = parseInt(string) if (isNaN(parsed)) { throw new Error('scripts/core/parser.js:parseNumber() Input value is not a number') } return parsed } parser.parseChannelName = function (string) { return string .trim() .split(' ') .map(s => s.trim()) .filter(s => { return !/\[|\]/i.test(s) && !/\((\d+)P\)/i.test(s) }) .join(' ') } parser.parseCountryCode = function (filepath) { if (!filepath) return null const basename = file.basename(filepath) const [_, code] = basename.match(/^([a-z]{2})(_|\.)/) || [null, null] return code } module.exports = parser