#!/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 = ; 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 "\n"; print NEWFILE "\n"; print NEWFIEL "Lechee Lyrics SMI\n"; } sub SMItitle { print NEWFILE "/n\n"; print NEWFILE "\n"; } sub SMIend { print NEWFILE "\n"; print NEWFILE "\n"; } sub SMItime($) { my ($tt) = @_; print NEWFILE "

"; }