Cleanup m3u file workflow

This commit is contained in:
SpaceMonkey 2025-01-29 18:21:16 +00:00
parent d1e92ec28c
commit aa6bc59103
2 changed files with 54 additions and 1 deletions

View file

@ -0,0 +1,50 @@
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, ' ');
// Remove space before the title (after the comma)
line = line.replace(/,\s+/, ',');
// Remove any extra commas in the line
const [extinf, title] = line.split(',');
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);
}

View file

@ -20,6 +20,9 @@ jobs:
- name: Install m3u-linter
run: npm install -g m3u-linter
- name: Basic M3U cleanup
run: node .forgejo/scripts/cleanup-m3u.js mystique.m3u
- name: Sort M3U file
run: node .forgejo/scripts/sort-m3u.js mystique.m3u
@ -31,4 +34,4 @@ jobs:
git config --global user.name 'Forgejo Actions Bot'
git config --global user.email 'forgejo-actions[bot]@noreply.forgejo.org'
git add mystique.m3u
git diff --quiet && git diff --staged --quiet || (git commit -m "Sort M3U by group-title" && git push)
git diff --quiet && git diff --staged --quiet || (git commit -m "Auto-format and sort M3U file" && git push)