const fs = require('fs'); function cleanM3u(filePath) { let content = fs.readFileSync(filePath, 'utf8'); // Split into lines and process each line content = content.split('\n') .map(line => { // Trim any whitespace line = line.trim(); if (line.startsWith('#EXTINF')) { // Replace multiple spaces with single space line = line.replace(/\s+/g, ' '); // Instead of splitting by comma, find the position of the first comma // This preserves the channel name and any commas it might contain const firstCommaPos = line.indexOf(','); if (firstCommaPos !== -1) { const extinf = line.substring(0, firstCommaPos); const title = line.substring(firstCommaPos + 1).trim(); // Trim space after comma return `${extinf},${title}`; } } else { // For non-EXTINF lines, just replace multiple spaces with single space line = line.replace(/\s+/g, ' '); } return line; }) .filter(line => line) // Remove empty lines .join('\n'); // Ensure single newline at end of file content = content.trim() + '\n'; fs.writeFileSync(filePath, content); console.log('Basic cleanup of mystique.m3u completed'); } const filePath = process.argv[2]; if (!filePath) { console.error('Please provide the path to mystique.m3u'); process.exit(1); } try { cleanM3u(filePath); } catch (error) { console.error('Error cleaning mystique.m3u:', error.message); process.exit(1); }