As promised, here's my old script which still works perfectly to prepare
a playlist for LMS. It reads a full directory of m3u files and
modifies/copies all of them into a directory MODDED so the originals are
untouched.
I keep all my files for tagging purposes on a Win 10 machine. My LMS is
on a Ubuntu machine with an external HD so the file paths are modded by
this script from Win to Linux as a bonus - you may not need this kind of
thing. The main thing is the call to *uri_escape_utf8($line,
"\x00-\x1f\x7f-\xff");* which escapes all control chars and hi-bit
chars. I'm not sure if my BOM character << print OUT ""; #BOM >>
will survive being posted on the forum but there is a BOM marker in
there that displays correctly in VS Code.
Code:
--------------------
#!/bin/perl
# Modifies a playlist to URI-escape control and hi-bit characters for LMS
# (c) philchillbill 2012
use URI::Escape;
use locale;
my $c = 0;
my @files = glob "*.m3u";
my $p = scalar(@files);
mkdir('MODDED');
#
my $original = "D:\\My Music\\";
my $target = "file:///seagate/music/";
foreach my $file (@files) {
open(IN, $file); @lines = <IN>; chomp(@lines); close(IN);
my @processed = ();
foreach my $line (@lines) {
$line =~ s/^\Q$original\E//;
$line=~s|\\|/|g;
if ($line =~ /^#/) {
$line =~ s/(#EXTINF:\d+,)/\1 /;
} else {
$c++;
my $modified = uri_escape_utf8($line, "\x00-\x1f\x7f-\xff");
$line = $target.$modified;
}
push(@processed, $line);
}
my $mfile = '.\\MODDED\\'.$file;
open(OUT, '>', $mfile);
binmode(OUT, ":utf8");
print OUT ""; #BOM
print OUT "#CURTRACK 0\n";
foreach my $line (@processed) { print OUT "$line\n" };
close(OUT);
}
print "\nFinished. Processed $c songs in $p playlists\n";
sleep 2;
--------------------
------------------------------------------------------------------------
philchillbill's Profile: http://forums.slimdevices.com/member.php?userid=68920
View this thread: http://forums.slimdevices.com/showthread.php?t=114635
_______________________________________________
Squeezecenter mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/squeezecenter