share winlyrics to wmp SMI in perl

Discussion in 'Perl Misc' started by lechee, Aug 31, 2004.

  1. lechee

    lechee Guest

    #!/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>";
    }
     
    lechee, Aug 31, 2004
    #1
    1. Advertising

  2. lechee

    Anno Siegel Guest

    lechee <> wrote in comp.lang.perl.misc:
    > #!/usr/bin/perl


    [150 lines of undocumented code of dubious quality snipped]

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

    Anno
     
    Anno Siegel, Sep 1, 2004
    #2
    1. Advertising

  3. lechee

    lechee Guest

    -berlin.de (Anno Siegel) wrote in message news:<ch45dj$7dn$-Berlin.DE>...
    > lechee <> wrote in comp.lang.perl.misc:
    > > #!/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
     
    lechee, Sep 3, 2004
    #3
  4. lechee

    Anno Siegel Guest

    lechee <> wrote in comp.lang.perl.misc:
    > -berlin.de (Anno Siegel) wrote in message
    > news:<ch45dj$7dn$-Berlin.DE>...
    > > lechee <> wrote in comp.lang.perl.misc:
    > > > #!/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
     
    Anno Siegel, Sep 3, 2004
    #4
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Guest

    embeding wmp w/instant play?l

    Guest, Jun 10, 2005, in forum: ASP .Net
    Replies:
    3
    Views:
    383
    Curt_C [MVP]
    Jun 10, 2005
  2. Mustafa Rabie

    URGENT:WMP 10 + ASP.NET 2.0

    Mustafa Rabie, Jun 9, 2006, in forum: ASP .Net
    Replies:
    0
    Views:
    331
    Mustafa Rabie
    Jun 9, 2006
  3. Saraswati lakki
    Replies:
    0
    Views:
    1,417
    Saraswati lakki
    Jan 6, 2012
  4. Jack
    Replies:
    2
    Views:
    245
  5. Eric Wong
    Replies:
    0
    Views:
    226
    Eric Wong
    Feb 13, 2010
Loading...

Share This Page