share winlyrics to wmp SMI in perl
From: lechee (lecheel_at_yahoo.com)
Date: 08/31/04
- Next message: Tore Aursand: "Re: Split and RegEx Help"
- Previous message: Anno Siegel: "Re: Where's the doc. on perl command-line options?"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: 31 Aug 2004 02:25:50 -0700
#!/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>";
}
- Next message: Tore Aursand: "Re: Split and RegEx Help"
- Previous message: Anno Siegel: "Re: Where's the doc. on perl command-line options?"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]