share winlyrics to wmp SMI in perl

L

lechee

#!/usr/bin/perl
#
# lrc2smi lyrics to plain text (wmp smi) v1.00 (perl)
#
# convert lyrics .lrc to WMP smi
#
# copyright 2004 Lechee.Lai lecheel at yahoo dot com
#

# global variable
use File::Basename;
my $tcount=0;
my $tcontext;


$argc=@ARGV
&convertLRC();
exit 1;


sub convertLRC {
open(FILE, @ARGV[0]) or die "lrc2smi: you must have \"@ARGV[0]\"
for convert :)\n";
my $out=basename(@ARGV[0],"");
if ($out=~/(.*)\..*/ and !$option{'withextension'})
{$out=~s/(.*)\..*/$1\.smi/;}
else {$out.=".smi";}
$pureLrc = ">$out";

@file = <FILE>;
close (FILE);
open (NEWFILE, $pureLrc) or die "$!";
&SMIbegin();
&SMItitle();
foreach $line (@file) {
chomp ($line);
$line1 = $line;
# if ($line1 =~ /^\[(\d{2})\:(\d{2})\](.*)$/) { # check [nn:nn]
if ($line1 =~ /^(.*):))(.*)(])/) { # check *:*]
$line2 = $line1;
if ($line2 =~ /\d:))+\d+(])/) { # check nnn:nnn]
# if (1) {
$l1 = $line1;
checkTimeStamp($line1);
$noMore=0;

while ($noMore==0) {

if ($l1 =~ /^(.*)\d{2}(])/) { # have vaild
timestamp
$pos = index($l1, "]");
$timestamp = substr($l1, 0, $pos+1);


if ($timestamp =~ /^\[(\d{2})\:(\d{2})\](.*)$/) {

my ($m, $s) = ($1, $2);
my $sec = $s+60*$m;

while (exists $times{$sec}){
$sec += 0.01;
}

&SMItime($sec);
}
if ($tcount) {
print NEWFILE "$tcontext";
}
print NEWFILE "\n";
$l1 = substr($l1,$pos+1);
} else {
$noMore=1;
}

}
} else {

# print "###$line1\n";
}
} else {
# print "---$line\n";
}

}
&SMIend();
close(NEWFILE);
}

sub checkTimeStamp($) {
my ($line) = @_;
$tcount = 0; # initialize for TimeCount
$pos = rindex($line,"]");
$tcontext = substr($line,$pos+1);
if ($pos>5) {
$tcount = 1;
}
# print "...$tcontext\n";

}



sub SMIbegin {
print NEWFILE "<SAMI>\n";
print NEWFILE "<HEAD>\n";
print NEWFIEL "<TITLE>Lechee Lyrics SMI</TITLE>\n";
}

sub SMItitle {
print NEWFILE "<STYLE TYPE=\"text/css\">\n<!--\nP {\n";
print NEWFILE "margin-left:8pt;\n";
print NEWFILE "margin-right:8pt;\n";
print NEWFILE "margin-bottom:24pt;\n";
print NEWFILE "Background-image : url();\n";
print NEWFILE "line-height:48pt;\n";
print NEWFILE "Background-color:#000000;\n";
print NEWFILE "text-align:center;\n";
print NEWFILE "font-size:16pt;\n";
print NEWFILE "font-family:,tahoma,arial,dotum,sans-serif;\n";
print NEWFILE "font-weight:bold;\n";
print NEWFILE "font-style:Normal;\n";
print NEWFILE "color:#ffff00;\n";
print NEWFILE "}\n";
print NEWFILE ".CCUS {Name:English; lang: en-US;\n}\n-->\n";
print NEWFILE "</STYLE>/n</HEAD>\n";
print NEWFILE "<BODY>\n";
}

sub SMIend {
print NEWFILE "</BODY>\n";
print NEWFILE "</SAMI>\n";
}

sub SMItime($) {
my ($tt) = @_;
print NEWFILE "<SYNC Start=";
print NEWFILE $tt;
print NEWFILE "000><P Class=EGCC>";
}
 
A

Anno Siegel

lechee said:
#!/usr/bin/perl

[150 lines of undocumented code of dubious quality snipped]

The place to share Perl code is the CPAN, not Usenet.

Anno
 
L

lechee

lechee said:
#!/usr/bin/perl

[150 lines of undocumented code of dubious quality snipped]

The place to share Perl code is the CPAN, not Usenet.

Anno

why I can not share the perl in usenet, google can search anything we
want, I like google with usenet
 
A

Anno Siegel

lechee said:
(e-mail address removed)-berlin.de (Anno Siegel) wrote in message
lechee said:
#!/usr/bin/perl

[150 lines of undocumented code of dubious quality snipped]

The place to share Perl code is the CPAN, not Usenet.

Anno

why I can not share the perl in usenet, google can search anything we
want, I like google with usenet

Usenet is a discussion forum. The fact that google has chosen to
archive it doesn't make it an archive itself.

Anno
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,528
Members
45,000
Latest member
MurrayKeync

Latest Threads

Top