73 lines
1.8 KiB
Perl
Executable File
73 lines
1.8 KiB
Perl
Executable File
#!/usr/bin/env perl
|
|
# @(#) convert .pls playlists to .m3u
|
|
# Copyright (c) 2006 Dirk Jagdmann <doj@cubic.org>
|
|
#
|
|
# This software is provided 'as-is', without any express or implied
|
|
# warranty. In no event will the authors be held liable for any damages
|
|
# arising from the use of this software.
|
|
#
|
|
# Permission is granted to anyone to use this software for any purpose,
|
|
# including commercial applications, and to alter it and redistribute it
|
|
# freely, subject to the following restrictions:
|
|
#
|
|
# 1. The origin of this software must not be misrepresented; you
|
|
# must not claim that you wrote the original software. If you use
|
|
# this software in a product, an acknowledgment in the product
|
|
# documentation would be appreciated but is not required.
|
|
#
|
|
# 2. Altered source versions must be plainly marked as such, and
|
|
# must not be misrepresented as being the original software.
|
|
#
|
|
# 3. This notice may not be removed or altered from any source
|
|
# distribution.
|
|
#
|
|
# http://llg.cubic.org/tools/#m3upls
|
|
|
|
use strict;
|
|
|
|
$_=<>;
|
|
chomp;
|
|
die "not a valid .pls file" unless $_ eq "[playlist]";
|
|
|
|
my $total=0;
|
|
my @a;
|
|
while(<>)
|
|
{
|
|
chomp;
|
|
next if /^\s*$/;
|
|
|
|
if(/NumberOfEntries=(\d+)/)
|
|
{
|
|
$total=$1;
|
|
next;
|
|
}
|
|
if(/Version=(\d+)/)
|
|
{
|
|
warn "unknown pls version : $1" unless $1 == 2;
|
|
next;
|
|
}
|
|
|
|
next unless /^(File|Title|Length)(\d+)=(.*)/;
|
|
my $tag=$1;
|
|
my $num=$2;
|
|
my $str=$3;
|
|
unless($a[$num])
|
|
{
|
|
$a[$num]={ };
|
|
}
|
|
$a[$num]->{$tag}=$str;
|
|
}
|
|
|
|
warn "NumberOfEntries does not match number of entries: $#a != $total" if $total != $#a;
|
|
|
|
print "#EXTM3U\n";
|
|
foreach my $r (@a)
|
|
{
|
|
$r->{Length}=-1 unless $r->{Length};
|
|
$r->{Title}='' unless $r->{Title};
|
|
if($r->{File})
|
|
{
|
|
print "#EXTINF:$r->{Length},$r->{Title}\n";
|
|
print "$r->{File}\n";
|
|
}
|
|
} |